diff options
author | Alon Zakai <azakai@mozilla.com> | 2010-11-20 20:00:11 -0800 |
---|---|---|
committer | Alon Zakai <azakai@mozilla.com> | 2010-11-20 20:00:11 -0800 |
commit | fa5bac952a9eb74d4964b8497454aac1b32299a5 (patch) | |
tree | 85df12e896ee36fc6345100e032e478874eec01c /tests/lua | |
parent | d61473b75862c62293318ced24a638d322ff2bd9 (diff) |
lua test
Diffstat (limited to 'tests/lua')
-rw-r--r-- | tests/lua/COPYRIGHT | 34 | ||||
-rw-r--r-- | tests/lua/Makefile | 184 | ||||
-rw-r--r-- | tests/lua/lua.ll | 54637 |
3 files changed, 54855 insertions, 0 deletions
diff --git a/tests/lua/COPYRIGHT b/tests/lua/COPYRIGHT new file mode 100644 index 00000000..3a53e741 --- /dev/null +++ b/tests/lua/COPYRIGHT @@ -0,0 +1,34 @@ +Lua License +----------- + +Lua is licensed under the terms of the MIT license reproduced below. +This means that Lua is free software and can be used for both academic +and commercial purposes at absolutely no cost. + +For details and rationale, see http://www.lua.org/license.html . + +=============================================================================== + +Copyright (C) 1994-2008 Lua.org, PUC-Rio. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +=============================================================================== + +(end of COPYRIGHT) diff --git a/tests/lua/Makefile b/tests/lua/Makefile new file mode 100644 index 00000000..c6ae126f --- /dev/null +++ b/tests/lua/Makefile @@ -0,0 +1,184 @@ +# makefile for building Lua +# see ../INSTALL for installation instructions +# see ../Makefile and luaconf.h for further customization + +# == CHANGE THE SETTINGS BELOW TO SUIT YOUR ENVIRONMENT ======================= + +PLAT=generic # Emscripten needs |generic|! + +# Fix '...' with the proper absolute path +CC = "/.../Dev/llvm-2.8/cbuild/Release/bin/clang++" # C++ compiler, so we don't use longjmp/setjmp! +CFLAGS= -emit-llvm -U__i386__ -U__x86_64__ +AR= "/.../Dev/llvm-2.8/cbuild/Release/bin/llvm-link" +RANLIB= "/.../Dev/llvm-2.8/cbuild/Release/bin/llvm-dis" +RM= rm -f +LIBS= -lm $(MYLIBS) + +MYCFLAGS= +MYLDFLAGS= +MYLIBS= + +# == END OF USER SETTINGS. NO NEED TO CHANGE ANYTHING BELOW THIS LINE ========= + +PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris + +LUA_A= liblua.a +CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ + lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \ + lundump.o lvm.o lzio.o +LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \ + lstrlib.o loadlib.o linit.o + +LUA_T= lua +LUA_O= lua.o + +LUAC_T= luac +LUAC_O= luac.o print.o + +ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) +ALL_T= $(LUA_A) $(LUA_T) +ALL_A= $(LUA_A) + +default: $(PLAT) + +all: $(ALL_T) + +o: $(ALL_O) + +a: $(ALL_A) + +$(LUA_A): $(CORE_O) $(LIB_O) + $(AR) -o=$@ $? + $(RANLIB) -show-annotations $@ + +$(LUA_T): $(LUA_O) $(LUA_A) + $(AR) -o=$@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) + $(RANLIB) -show-annotations $@ + +$(LUAC_T): $(LUAC_O) $(LUA_A) + $(AR) -o=$@ $(MYLDFLAGS) $(LUAC_O) $(LUA_A) + $(RANLIB) -show-annotations $@ + +clean: + $(RM) $(ALL_T) $(ALL_O) + +depend: + @$(CC) $(CFLAGS) -MM l*.c print.c + +echo: + @echo "PLAT = $(PLAT)" + @echo "CC = $(CC)" + @echo "CFLAGS = $(CFLAGS)" + @echo "AR = $(AR)" + @echo "RANLIB = $(RANLIB)" + @echo "RM = $(RM)" + @echo "MYCFLAGS = $(MYCFLAGS)" + @echo "MYLDFLAGS = $(MYLDFLAGS)" + @echo "MYLIBS = $(MYLIBS)" + +# convenience targets for popular platforms + +none: + @echo "Please choose a platform:" + @echo " $(PLATS)" + +aix: + $(MAKE) all CC="xlc" CFLAGS="-O2 -DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl" MYLDFLAGS="-brtl -bexpall" + +ansi: + $(MAKE) all MYCFLAGS=-DLUA_ANSI + +bsd: + $(MAKE) all MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-Wl,-E" + +freebsd: + $(MAKE) all MYCFLAGS="-DLUA_USE_LINUX" MYLIBS="-Wl,-E -lreadline" + +generic: + $(MAKE) all MYCFLAGS= + +linux: + $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses" + +macosx: + $(MAKE) all MYCFLAGS=-DLUA_USE_LINUX MYLIBS="-lreadline" +# use this on Mac OS X 10.3- +# $(MAKE) all MYCFLAGS=-DLUA_USE_MACOSX + +mingw: + $(MAKE) "LUA_A=lua51.dll" "LUA_T=lua.exe" \ + "AR=$(CC) -shared -o" "RANLIB=strip --strip-unneeded" \ + "MYCFLAGS=-DLUA_BUILD_AS_DLL" "MYLIBS=" "MYLDFLAGS=-s" lua.exe + $(MAKE) "LUAC_T=luac.exe" luac.exe + +posix: + $(MAKE) all MYCFLAGS=-DLUA_USE_POSIX + +solaris: + $(MAKE) all MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl" + +# list targets that do not create files (but not all makes understand .PHONY) +.PHONY: all $(PLATS) default o a clean depend echo none + +# DO NOT DELETE + +lapi.o: lapi.c lua.h luaconf.h lapi.h lobject.h llimits.h ldebug.h \ + lstate.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h \ + lundump.h lvm.h +lauxlib.o: lauxlib.c lua.h luaconf.h lauxlib.h +lbaselib.o: lbaselib.c lua.h luaconf.h lauxlib.h lualib.h +lcode.o: lcode.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \ + lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h lgc.h \ + ltable.h +ldblib.o: ldblib.c lua.h luaconf.h lauxlib.h lualib.h +ldebug.o: ldebug.c lua.h luaconf.h lapi.h lobject.h llimits.h lcode.h \ + llex.h lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h \ + lfunc.h lstring.h lgc.h ltable.h lvm.h +ldo.o: ldo.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \ + lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lparser.h lstring.h \ + ltable.h lundump.h lvm.h +ldump.o: ldump.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h \ + lzio.h lmem.h lundump.h +lfunc.o: lfunc.c lua.h luaconf.h lfunc.h lobject.h llimits.h lgc.h lmem.h \ + lstate.h ltm.h lzio.h +lgc.o: lgc.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \ + lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h +linit.o: linit.c lua.h luaconf.h lualib.h lauxlib.h +liolib.o: liolib.c lua.h luaconf.h lauxlib.h lualib.h +llex.o: llex.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h ltm.h \ + lzio.h lmem.h llex.h lparser.h lstring.h lgc.h ltable.h +lmathlib.o: lmathlib.c lua.h luaconf.h lauxlib.h lualib.h +lmem.o: lmem.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \ + ltm.h lzio.h lmem.h ldo.h +loadlib.o: loadlib.c lua.h luaconf.h lauxlib.h lualib.h +lobject.o: lobject.c lua.h luaconf.h ldo.h lobject.h llimits.h lstate.h \ + ltm.h lzio.h lmem.h lstring.h lgc.h lvm.h +lopcodes.o: lopcodes.c lopcodes.h llimits.h lua.h luaconf.h +loslib.o: loslib.c lua.h luaconf.h lauxlib.h lualib.h +lparser.o: lparser.c lua.h luaconf.h lcode.h llex.h lobject.h llimits.h \ + lzio.h lmem.h lopcodes.h lparser.h ldebug.h lstate.h ltm.h ldo.h \ + lfunc.h lstring.h lgc.h ltable.h +lstate.o: lstate.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \ + ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h llex.h lstring.h ltable.h +lstring.o: lstring.c lua.h luaconf.h lmem.h llimits.h lobject.h lstate.h \ + ltm.h lzio.h lstring.h lgc.h +lstrlib.o: lstrlib.c lua.h luaconf.h lauxlib.h lualib.h +ltable.o: ltable.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h \ + ltm.h lzio.h lmem.h ldo.h lgc.h ltable.h +ltablib.o: ltablib.c lua.h luaconf.h lauxlib.h lualib.h +ltm.o: ltm.c lua.h luaconf.h lobject.h llimits.h lstate.h ltm.h lzio.h \ + lmem.h lstring.h lgc.h ltable.h +lua.o: lua.c lua.h luaconf.h lauxlib.h lualib.h +luac.o: luac.c lua.h luaconf.h lauxlib.h ldo.h lobject.h llimits.h \ + lstate.h ltm.h lzio.h lmem.h lfunc.h lopcodes.h lstring.h lgc.h \ + lundump.h +lundump.o: lundump.c lua.h luaconf.h ldebug.h lstate.h lobject.h \ + llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h lundump.h +lvm.o: lvm.c lua.h luaconf.h ldebug.h lstate.h lobject.h llimits.h ltm.h \ + lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h lvm.h +lzio.o: lzio.c lua.h luaconf.h llimits.h lmem.h lstate.h lobject.h ltm.h \ + lzio.h +print.o: print.c ldebug.h lstate.h lua.h luaconf.h lobject.h llimits.h \ + ltm.h lzio.h lmem.h lopcodes.h lundump.h + +# (end of Makefile) diff --git a/tests/lua/lua.ll b/tests/lua/lua.ll new file mode 100644 index 00000000..9a15a65f --- /dev/null +++ b/tests/lua/lua.ll @@ -0,0 +1,54637 @@ +; ModuleID = 'lua' +target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" +target triple = "i386-pc-linux-gnu" + +%0 = type { %struct.lua_TValue } +%1 = type { %union.anon, i32, %struct.Node* } +%2 = type { %3 } +%3 = type { i32, i32 } +%4 = type { %union.GCObject*, i8, i8, %struct.Table*, %struct.Table*, i32 } +%5 = type { i8*, i8* } +%6 = type { i8*, i8*, i32, i8* } +%7 = type { %8, i32 } +%8 = type { %union.GCObject*, [4 x i8] } +%9 = type { %7, %10 } +%10 = type { %11 } +%11 = type { %8, i32, %struct.Node* } +%12 = type { %struct.lua_State*, i32 (%struct.lua_State*, i8*, i32, i8*)*, i8*, i32, i32 } +%13 = type { %struct.UpVal*, %struct.UpVal* } +%14 = type { %struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8* } +%enum.BinOpr = type i32 +%enum.OpArgMask = type i32 +%enum.OpMode = type i32 +%enum.UnOpr = type i32 +%enum.anon = type i32 +%struct.BlockCnt = type { %struct.BlockCnt*, i32, i8, i8, i8 } +%struct.CCallS = type { i32 (%struct.lua_State*)*, i8* } +%struct.CClosure = type { %union.GCObject*, i8, i8, i8, i8, %union.GCObject*, %struct.Table*, i32 (%struct.lua_State*)*, [1 x %struct.lua_TValue] } +%struct.CallInfo = type { %struct.lua_TValue*, %struct.lua_TValue*, %struct.lua_TValue*, i32*, i32, i32 } +%struct.CallS = type { %struct.lua_TValue*, i32 } +%struct.ConsControl = type { %struct.expdesc, %struct.expdesc*, i32, i32, i32 } +%struct.FuncState = type { %struct.Proto*, %struct.Table*, %struct.FuncState*, %struct.LexState*, %struct.lua_State*, %struct.BlockCnt*, i32, i32, i32, i32, i32, i32, i16, i8, [60 x %struct.upvaldesc], [200 x i16] } +%struct.GCheader = type { %union.GCObject*, i8, i8 } +%struct.LClosure = type { %union.GCObject*, i8, i8, i8, i8, %union.GCObject*, %struct.Table*, %struct.Proto*, [1 x %struct.UpVal*] } +%struct.LG = type { %struct.lua_State, %struct.global_State } +%struct.LHS_assign = type { %struct.LHS_assign*, %struct.expdesc } +%struct.LexState = type { i32, i32, i32, %struct.Token, %struct.Token, %struct.FuncState*, %struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, %union.TString*, i8 } +%struct.LoadF = type { i32, %struct._IO_FILE*, [8192 x i8] } +%struct.LoadS = type { i8*, i32 } +%struct.LocVar = type { %union.TString*, i32, i32 } +%struct.MatchState = type { i8*, i8*, %struct.lua_State*, i32, [32 x %struct.LoadS] } +%struct.Mbuffer = type { i8*, i32, i32 } +%struct.Node = type { %struct.lua_TValue, %union.TKey } +%struct.Proto = type { %union.GCObject*, i8, i8, %struct.lua_TValue*, i32*, %struct.Proto**, i32*, %struct.LocVar*, %union.TString**, %union.TString*, i32, i32, i32, i32, i32, i32, i32, i32, %union.GCObject*, i8, i8, i8, i8 } +%struct.SParser = type { %struct.Zio*, %struct.Mbuffer, i8* } +%struct.Smain = type { i32, i8**, i32 } +%struct.Table = type { %union.GCObject*, i8, i8, i8, i8, %struct.Table*, %struct.lua_TValue*, %struct.Node*, %struct.Node*, %union.GCObject*, i32 } +%struct.Token = type { i32, %union.anon } +%struct.UpVal = type { %union.GCObject*, i8, i8, %struct.lua_TValue*, %0 } +%struct.Zio = type { i32, i8*, i8* (%struct.lua_State*, i8*, i32*)*, i8*, %struct.lua_State* } +%struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] } +%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } +%struct.anon = type { %union.GCObject*, i8, i8, i8, i32, i32 } +%struct.expdesc = type { i32, %2, i32, i32 } +%struct.global_State = type { %struct.stringtable, i8* (i8*, i8*, i32, i32)*, i8*, i8, i8, i32, %union.GCObject*, %union.GCObject**, %union.GCObject*, %union.GCObject*, %union.GCObject*, %union.GCObject*, %struct.Mbuffer, i32, i32, i32, i32, i32, i32, i32 (%struct.lua_State*)*, %struct.lua_TValue, %struct.lua_State*, %struct.UpVal, [9 x %struct.Table*], [17 x %union.TString*] } +%struct.lconv = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 } +%struct.luaL_Buffer = type { i8*, i32, %struct.lua_State*, [8192 x i8] } +%struct.luaL_Reg = type { i8*, i32 (%struct.lua_State*)* } +%struct.lua_Debug = type { i32, i8*, i8*, i8*, i8*, i32, i32, i32, i32, [60 x i8], i32 } +%struct.lua_State = type { %union.GCObject*, i8, i8, i8, %struct.lua_TValue*, %struct.lua_TValue*, %struct.global_State*, %struct.CallInfo*, i32*, %struct.lua_TValue*, %struct.lua_TValue*, %struct.CallInfo*, %struct.CallInfo*, i32, i32, i16, i16, i8, i8, i32, i32, void (%struct.lua_State*, %struct.lua_Debug*)*, %struct.lua_TValue, %struct.lua_TValue, %union.GCObject*, %union.GCObject*, %struct.lua_longjmp*, i32 } +%struct.lua_TValue = type { %union.anon, i32 } +%struct.lua_longjmp = type { %struct.lua_longjmp*, i32, i32 } +%struct.stringtable = type { %union.GCObject**, i32, i32 } +%struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8* } +%struct.upvaldesc = type { i8, i8 } +%union.Closure = type { %struct.CClosure } +%union.GCObject = type { %struct.lua_State } +%union.TKey = type { %1 } +%union.TString = type { %struct.anon } +%union.Udata = type { %4 } +%union.anon = type { double } + +@_ZL7globalL = internal global %struct.lua_State* null, align 4 ; [#uses=2] +@.str = private constant [39 x i8] c"cannot create state: not enough memory\00" ; [#uses=1] +@.str1 = private constant [31 x i8] c"(error object is not a string)\00" ; [#uses=1] +@_ZL8progname = internal global i8* getelementptr inbounds ([4 x i8]* @.str2, i32 0, i32 0), align 4 ; [#uses=7] +@.str2 = private constant [4 x i8] c"lua\00" ; [#uses=1] +@.str3 = private constant [6 x i8] c"print\00" ; [#uses=1] +@.str4 = private constant [27 x i8] c"error calling 'print' (%s)\00" ; [#uses=1] +@.str5 = private constant [2 x i8] c"\0A\00" ; [#uses=1] +@stdout = external global %struct._IO_FILE* ; [#uses=8] +@.str6 = private constant [13 x i8] c"interrupted!\00" ; [#uses=1] +@.str7 = private constant [6 x i8] c"debug\00" ; [#uses=1] +@.str8 = private constant [10 x i8] c"traceback\00" ; [#uses=1] +@.str9 = private constant [7 x i8] c"=stdin\00" ; [#uses=1] +@.str10 = private constant [8 x i8] c"'<eof>'\00" ; [#uses=1] +@stdin = external global %struct._IO_FILE* ; [#uses=4] +@.str11 = private constant [10 x i8] c"return %s\00" ; [#uses=1] +@.str12 = private constant [8 x i8] c"_PROMPT\00" ; [#uses=1] +@.str13 = private constant [9 x i8] c"_PROMPT2\00" ; [#uses=1] +@.str14 = private constant [3 x i8] c"> \00" ; [#uses=1] +@.str15 = private constant [4 x i8] c">> \00" ; [#uses=1] +@.str16 = private constant [4 x i8] c"arg\00" ; [#uses=1] +@.str17 = private constant [2 x i8] c"-\00" ; [#uses=1] +@.str18 = private constant [3 x i8] c"--\00" ; [#uses=1] +@.str19 = private constant [29 x i8] c"too many arguments to script\00" ; [#uses=1] +@.str20 = private constant [16 x i8] c"=(command line)\00" ; [#uses=1] +@.str21 = private constant [8 x i8] c"require\00" ; [#uses=1] +@.str22 = private constant [52 x i8] c"Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio\00" ; [#uses=1] +@stderr = external global %struct._IO_FILE* ; [#uses=10] +@.str23 = private constant [307 x i8] c"usage: %s [options] [script [args]].\0AAvailable options are:\0A -e stat execute string 'stat'\0A -l name require library 'name'\0A -i enter interactive mode after executing 'script'\0A -v show version information\0A -- stop handling options\0A - execute stdin and stop handling options\0A\00" ; [#uses=1] +@.str24 = private constant [9 x i8] c"LUA_INIT\00" ; [#uses=1] +@.str25 = private constant [10 x i8] c"=LUA_INIT\00" ; [#uses=1] +@.str26 = private constant [5 x i8] c"%s: \00" ; [#uses=1] +@.str27 = private constant [4 x i8] c"%s\0A\00" ; [#uses=1] +@.str28 = private constant [23 x i8] c"no calling environment\00" ; [#uses=1] +@.str129 = private constant [9 x i8] c"no value\00" ; [#uses=1] +@.str230 = private constant [2 x i8] c"?\00" ; [#uses=1] +@.str331 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str432 = private constant [35 x i8] c"function or expression too complex\00" ; [#uses=1] +@.str1533 = private constant [19 x i8] c"code size overflow\00" ; [#uses=1] +@.str2634 = private constant [24 x i8] c"constant table overflow\00" ; [#uses=1] +@.str37 = private constant [27 x i8] c"control structure too long\00" ; [#uses=1] +@.str835 = private constant [35 x i8] c"attempt to %s %s '%s' (a %s value)\00" ; [#uses=1] +@.str1936 = private constant [25 x i8] c"attempt to %s a %s value\00" ; [#uses=1] +@.str210 = private constant [12 x i8] c"concatenate\00" ; [#uses=1] +@.str311 = private constant [22 x i8] c"perform arithmetic on\00" ; [#uses=1] +@.str412 = private constant [33 x i8] c"attempt to compare two %s values\00" ; [#uses=1] +@.str537 = private constant [30 x i8] c"attempt to compare %s with %s\00" ; [#uses=1] +@.str638 = private constant [10 x i8] c"%s:%d: %s\00" ; [#uses=1] +@.str739 = private constant [6 x i8] c"local\00" ; [#uses=1] +@.str813 = private constant [7 x i8] c"global\00" ; [#uses=1] +@.str940 = private constant [6 x i8] c"field\00" ; [#uses=1] +@.str1041 = private constant [2 x i8] c"?\00" ; [#uses=1] +@.str1142 = private constant [8 x i8] c"upvalue\00" ; [#uses=1] +@.str1243 = private constant [7 x i8] c"method\00" ; [#uses=1] +@.str1344 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str1445 = private constant [5 x i8] c"=[C]\00" ; [#uses=1] +@.str1514 = private constant [2 x i8] c"C\00" ; [#uses=1] +@.str1646 = private constant [5 x i8] c"main\00" ; [#uses=1] +@.str1747 = private constant [4 x i8] c"Lua\00" ; [#uses=1] +@.str1848 = private constant [5 x i8] c"tail\00" ; [#uses=1] +@.str1915 = private constant [13 x i8] c"=(tail call)\00" ; [#uses=1] +@.str2049 = private constant [13 x i8] c"(*temporary)\00" ; [#uses=1] +@.str2150 = private constant [18 x i8] c"not enough memory\00" ; [#uses=1] +@.str122 = private constant [24 x i8] c"error in error handling\00" ; [#uses=1] +@_ZTVN10__cxxabiv119__pointer_type_infoE = external global i8* ; [#uses=1] +@_ZTSP11lua_longjmp = weak_odr constant [15 x i8] c"P11lua_longjmp\00" ; [#uses=1] +@_ZTVN10__cxxabiv117__class_type_infoE = external global i8* ; [#uses=1] +@_ZTS11lua_longjmp = weak_odr constant [14 x i8] c"11lua_longjmp\00" ; [#uses=1] +@_ZTI11lua_longjmp = weak_odr constant %5 { i8* bitcast (i8** getelementptr inbounds (i8** @_ZTVN10__cxxabiv117__class_type_infoE, i32 2) to i8*), i8* getelementptr inbounds ([14 x i8]* @_ZTS11lua_longjmp, i32 0, i32 0) } ; [#uses=1] +@_ZTIP11lua_longjmp = weak_odr constant %6 { i8* bitcast (i8** getelementptr inbounds (i8** @_ZTVN10__cxxabiv119__pointer_type_infoE, i32 2) to i8*), i8* getelementptr inbounds ([15 x i8]* @_ZTSP11lua_longjmp, i32 0, i32 0), i32 0, i8* bitcast (%5* @_ZTI11lua_longjmp to i8*) } ; [#uses=1] +@.str223 = private constant [17 x i8] c"C stack overflow\00" ; [#uses=1] +@.str324 = private constant [38 x i8] c"cannot resume non-suspended coroutine\00" ; [#uses=1] +@.str425 = private constant [51 x i8] c"attempt to yield across metamethod/C-call boundary\00" ; [#uses=1] +@.str526 = private constant [5 x i8] c"\1BLua\00" ; [#uses=1] +@.str627 = private constant [15 x i8] c"stack overflow\00" ; [#uses=1] +@.str728 = private constant [2 x i8] c"n\00" ; [#uses=1] +@.str829 = private constant [5 x i8] c"call\00" ; [#uses=1] +@.str47 = private constant [4 x i8] c"and\00" ; [#uses=1] +@.str148 = private constant [6 x i8] c"break\00" ; [#uses=1] +@.str249 = private constant [3 x i8] c"do\00" ; [#uses=1] +@.str350 = private constant [5 x i8] c"else\00" ; [#uses=1] +@.str451 = private constant [7 x i8] c"elseif\00" ; [#uses=1] +@.str552 = private constant [4 x i8] c"end\00" ; [#uses=1] +@.str653 = private constant [6 x i8] c"false\00" ; [#uses=1] +@.str754 = private constant [4 x i8] c"for\00" ; [#uses=1] +@.str855 = private constant [9 x i8] c"function\00" ; [#uses=1] +@.str956 = private constant [3 x i8] c"if\00" ; [#uses=1] +@.str1057 = private constant [3 x i8] c"in\00" ; [#uses=1] +@.str1158 = private constant [6 x i8] c"local\00" ; [#uses=1] +@.str1259 = private constant [4 x i8] c"nil\00" ; [#uses=1] +@.str1360 = private constant [4 x i8] c"not\00" ; [#uses=1] +@.str1461 = private constant [3 x i8] c"or\00" ; [#uses=1] +@.str1562 = private constant [7 x i8] c"repeat\00" ; [#uses=1] +@.str1663 = private constant [7 x i8] c"return\00" ; [#uses=1] +@.str1764 = private constant [5 x i8] c"then\00" ; [#uses=1] +@.str1865 = private constant [5 x i8] c"true\00" ; [#uses=1] +@.str1966 = private constant [6 x i8] c"until\00" ; [#uses=1] +@.str2067 = private constant [6 x i8] c"while\00" ; [#uses=1] +@.str2168 = private constant [3 x i8] c"..\00" ; [#uses=1] +@.str2251 = private constant [4 x i8] c"...\00" ; [#uses=1] +@.str2352 = private constant [3 x i8] c"==\00" ; [#uses=1] +@.str2453 = private constant [3 x i8] c">=\00" ; [#uses=1] +@.str2554 = private constant [3 x i8] c"<=\00" ; [#uses=1] +@.str2669 = private constant [3 x i8] c"~=\00" ; [#uses=1] +@.str2755 = private constant [9 x i8] c"<number>\00" ; [#uses=1] +@.str2856 = private constant [7 x i8] c"<name>\00" ; [#uses=1] +@.str29 = private constant [9 x i8] c"<string>\00" ; [#uses=1] +@.str30 = private constant [6 x i8] c"<eof>\00" ; [#uses=1] +@luaX_tokens = hidden constant [32 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str47, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str148, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str249, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str350, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str451, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str552, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str653, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str754, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str855, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str956, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str1057, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str1158, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str1259, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str1360, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str1461, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str1562, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str1663, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str1764, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str1865, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str1966, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str2067, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str2168, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str2251, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str2352, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str2453, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str2554, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str2669, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str2755, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str2856, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str29, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str30, i32 0, i32 0), i8* null], align 4 ; [#uses=3] +@.str31 = private constant [9 x i8] c"char(%d)\00" ; [#uses=1] +@.str32 = private constant [3 x i8] c"%c\00" ; [#uses=1] +@.str33 = private constant [10 x i8] c"%s:%d: %s\00" ; [#uses=1] +@.str34 = private constant [13 x i8] c"%s near '%s'\00" ; [#uses=1] +@.str35 = private constant [30 x i8] c"invalid long string delimiter\00" ; [#uses=1] +@.str36 = private constant [2 x i8] c".\00" ; [#uses=1] +@.str3770 = private constant [3 x i8] c"Ee\00" ; [#uses=1] +@.str38 = private constant [3 x i8] c"+-\00" ; [#uses=1] +@.str39 = private constant [17 x i8] c"malformed number\00" ; [#uses=1] +@.str40 = private constant [25 x i8] c"lexical element too long\00" ; [#uses=1] +@.str41 = private constant [18 x i8] c"unfinished string\00" ; [#uses=1] +@.str42 = private constant [26 x i8] c"escape sequence too large\00" ; [#uses=1] +@.str43 = private constant [23 x i8] c"unfinished long string\00" ; [#uses=1] +@.str44 = private constant [24 x i8] c"unfinished long comment\00" ; [#uses=1] +@.str45 = private constant [33 x i8] c"nesting of [[...]] is deprecated\00" ; [#uses=1] +@.str46 = private constant [25 x i8] c"chunk has too many lines\00" ; [#uses=1] +@.str72 = private constant [39 x i8] c"memory allocation error: block too big\00" ; [#uses=1] +@luaO_nilobject_ = hidden global %7 { %8 { %union.GCObject* null, [4 x i8] undef }, i32 0 }, align 4 ; [#uses=1] +@_ZZ9luaO_log2jE5log_2 = internal constant [256 x i8] c"\00\01\02\02\03\03\03\03\04\04\04\04\04\04\04\04\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\06\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\07\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08", align 1 ; [#uses=1] +@.str77 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str178 = private constant [7 x i8] c"(null)\00" ; [#uses=1] +@.str279 = private constant [3 x i8] c"%p\00" ; [#uses=1] +@.str380 = private constant [2 x i8] c"%\00" ; [#uses=1] +@.str481 = private constant [4 x i8] c"...\00" ; [#uses=1] +@.str582 = private constant [3 x i8] c"\0A\0D\00" ; [#uses=1] +@.str683 = private constant [10 x i8] c"[string \22\00" ; [#uses=1] +@.str784 = private constant [3 x i8] c"\22]\00" ; [#uses=1] +@.str90 = private constant [5 x i8] c"MOVE\00" ; [#uses=1] +@.str191 = private constant [6 x i8] c"LOADK\00" ; [#uses=1] +@.str292 = private constant [9 x i8] c"LOADBOOL\00" ; [#uses=1] +@.str393 = private constant [8 x i8] c"LOADNIL\00" ; [#uses=1] +@.str494 = private constant [9 x i8] c"GETUPVAL\00" ; [#uses=1] +@.str595 = private constant [10 x i8] c"GETGLOBAL\00" ; [#uses=1] +@.str696 = private constant [9 x i8] c"GETTABLE\00" ; [#uses=1] +@.str797 = private constant [10 x i8] c"SETGLOBAL\00" ; [#uses=1] +@.str898 = private constant [9 x i8] c"SETUPVAL\00" ; [#uses=1] +@.str999 = private constant [9 x i8] c"SETTABLE\00" ; [#uses=1] +@.str10100 = private constant [9 x i8] c"NEWTABLE\00" ; [#uses=1] +@.str11101 = private constant [5 x i8] c"SELF\00" ; [#uses=1] +@.str12102 = private constant [4 x i8] c"ADD\00" ; [#uses=1] +@.str13103 = private constant [4 x i8] c"SUB\00" ; [#uses=1] +@.str14104 = private constant [4 x i8] c"MUL\00" ; [#uses=1] +@.str15105 = private constant [4 x i8] c"DIV\00" ; [#uses=1] +@.str16106 = private constant [4 x i8] c"MOD\00" ; [#uses=1] +@.str17107 = private constant [4 x i8] c"POW\00" ; [#uses=1] +@.str18108 = private constant [4 x i8] c"UNM\00" ; [#uses=1] +@.str19109 = private constant [4 x i8] c"NOT\00" ; [#uses=1] +@.str20110 = private constant [4 x i8] c"LEN\00" ; [#uses=1] +@.str21111 = private constant [7 x i8] c"CONCAT\00" ; [#uses=1] +@.str22112 = private constant [4 x i8] c"JMP\00" ; [#uses=1] +@.str23113 = private constant [3 x i8] c"EQ\00" ; [#uses=1] +@.str24114 = private constant [3 x i8] c"LT\00" ; [#uses=1] +@.str25115 = private constant [3 x i8] c"LE\00" ; [#uses=1] +@.str26116 = private constant [5 x i8] c"TEST\00" ; [#uses=1] +@.str27117 = private constant [8 x i8] c"TESTSET\00" ; [#uses=1] +@.str28118 = private constant [5 x i8] c"CALL\00" ; [#uses=1] +@.str29119 = private constant [9 x i8] c"TAILCALL\00" ; [#uses=1] +@.str30120 = private constant [7 x i8] c"RETURN\00" ; [#uses=1] +@.str31121 = private constant [8 x i8] c"FORLOOP\00" ; [#uses=1] +@.str32122 = private constant [8 x i8] c"FORPREP\00" ; [#uses=1] +@.str33123 = private constant [9 x i8] c"TFORLOOP\00" ; [#uses=1] +@.str34124 = private constant [8 x i8] c"SETLIST\00" ; [#uses=1] +@.str35125 = private constant [6 x i8] c"CLOSE\00" ; [#uses=1] +@.str36126 = private constant [8 x i8] c"CLOSURE\00" ; [#uses=1] +@.str37127 = private constant [7 x i8] c"VARARG\00" ; [#uses=1] +@luaP_opnames = hidden constant [39 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str90, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str191, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str292, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str393, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str494, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str595, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str696, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str797, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str898, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str999, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str10100, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str11101, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str12102, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str13103, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str14104, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str15105, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str16106, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str17107, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str18108, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str19109, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str20110, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str21111, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str22112, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str23113, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str24114, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str25115, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str26116, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str27117, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str28118, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str29119, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str30120, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str31121, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str32122, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str33123, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str34124, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str35125, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str36126, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str37127, i32 0, i32 0), i8* null], align 4 ; [#uses=0] +@luaP_opmodes = hidden constant [38 x i8] c"`qT`Pql1\10<Tl||||||```h\22\BC\BC\BC\E4\E4TT\10bb\84\14\00QP", align 1 ; [#uses=8] +@.str12957 = private constant [13 x i8] c"syntax error\00" ; [#uses=1] +@.str1130 = private constant [24 x i8] c"variables in assignment\00" ; [#uses=1] +@_ZL8priority = internal global [15 x %struct.upvaldesc] [%struct.upvaldesc { i8 6, i8 6 }, %struct.upvaldesc { i8 6, i8 6 }, %struct.upvaldesc { i8 7, i8 7 }, %struct.upvaldesc { i8 7, i8 7 }, %struct.upvaldesc { i8 7, i8 7 }, %struct.upvaldesc { i8 10, i8 9 }, %struct.upvaldesc { i8 5, i8 4 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 3, i8 3 }, %struct.upvaldesc { i8 2, i8 2 }, %struct.upvaldesc { i8 1, i8 1 }], align 1 ; [#uses=2] +@.str2131 = private constant [43 x i8] c"cannot use '...' outside a vararg function\00" ; [#uses=1] +@.str3132 = private constant [5 x i8] c"self\00" ; [#uses=1] +@.str4133 = private constant [24 x i8] c"constant table overflow\00" ; [#uses=1] +@.str5134 = private constant [4 x i8] c"arg\00" ; [#uses=1] +@.str6135 = private constant [25 x i8] c"<name> or '...' expected\00" ; [#uses=1] +@.str7136 = private constant [16 x i8] c"local variables\00" ; [#uses=1] +@.str8137 = private constant [25 x i8] c"too many local variables\00" ; [#uses=1] +@.str9138 = private constant [23 x i8] c"items in a constructor\00" ; [#uses=1] +@.str10139 = private constant [34 x i8] c"main function has more than %d %s\00" ; [#uses=1] +@.str11140 = private constant [40 x i8] c"function at line %d has more than %d %s\00" ; [#uses=1] +@.str12141 = private constant [49 x i8] c"ambiguous syntax (function call x new statement)\00" ; [#uses=1] +@.str13142 = private constant [28 x i8] c"function arguments expected\00" ; [#uses=1] +@.str14143 = private constant [18 x i8] c"unexpected symbol\00" ; [#uses=1] +@.str15144 = private constant [9 x i8] c"upvalues\00" ; [#uses=1] +@.str16145 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str17146 = private constant [17 x i8] c"no loop to break\00" ; [#uses=1] +@.str18147 = private constant [21 x i8] c"'=' or 'in' expected\00" ; [#uses=1] +@.str19148 = private constant [16 x i8] c"(for generator)\00" ; [#uses=1] +@.str20149 = private constant [12 x i8] c"(for state)\00" ; [#uses=1] +@.str21150 = private constant [14 x i8] c"(for control)\00" ; [#uses=1] +@.str22151 = private constant [12 x i8] c"(for index)\00" ; [#uses=1] +@.str23152 = private constant [12 x i8] c"(for limit)\00" ; [#uses=1] +@.str24153 = private constant [11 x i8] c"(for step)\00" ; [#uses=1] +@.str25154 = private constant [41 x i8] c"'%s' expected (to close '%s' at line %d)\00" ; [#uses=1] +@.str26155 = private constant [14 x i8] c"'%s' expected\00" ; [#uses=1] +@.str27156 = private constant [33 x i8] c"chunk has too many syntax levels\00" ; [#uses=1] +@.str158 = private constant [18 x i8] c"not enough memory\00" ; [#uses=1] +@_ZL10dummynode_ = internal global %9 { %7 { %8 { %union.GCObject* null, [4 x i8] undef }, i32 0 }, %10 { %11 { %8 { %union.GCObject* null, [4 x i8] undef }, i32 0, %struct.Node* null } } }, align 4 ; [#uses=1] +@.str164 = private constant [19 x i8] c"table index is nil\00" ; [#uses=1] +@.str1165 = private constant [19 x i8] c"table index is NaN\00" ; [#uses=1] +@.str2166 = private constant [15 x i8] c"table overflow\00" ; [#uses=1] +@.str3167 = private constant [22 x i8] c"invalid key to 'next'\00" ; [#uses=1] +@.str177 = private constant [4 x i8] c"nil\00" ; [#uses=1] +@.str1178 = private constant [8 x i8] c"boolean\00" ; [#uses=1] +@.str2179 = private constant [9 x i8] c"userdata\00" ; [#uses=1] +@.str3180 = private constant [7 x i8] c"number\00" ; [#uses=1] +@.str4181 = private constant [7 x i8] c"string\00" ; [#uses=1] +@.str5182 = private constant [6 x i8] c"table\00" ; [#uses=1] +@.str6183 = private constant [9 x i8] c"function\00" ; [#uses=1] +@.str7184 = private constant [7 x i8] c"thread\00" ; [#uses=1] +@.str8185 = private constant [6 x i8] c"proto\00" ; [#uses=1] +@.str9186 = private constant [6 x i8] c"upval\00" ; [#uses=1] +@luaT_typenames = hidden constant [11 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str177, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str1178, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str2179, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str3180, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str4181, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str5182, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str6183, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str2179, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str7184, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str8185, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str9186, i32 0, i32 0)], align 4 ; [#uses=1] +@_ZZ9luaT_initP9lua_StateE14luaT_eventname = internal constant [17 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str10188, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str11189, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str12190, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str13191, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str14192, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str15193, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str16194, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str17195, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str18196, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str19197, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str20198, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str21199, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str22200, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str23201, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str24202, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str25203, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str26204, i32 0, i32 0)], align 4 ; [#uses=2] +@.str10188 = private constant [8 x i8] c"__index\00" ; [#uses=1] +@.str11189 = private constant [11 x i8] c"__newindex\00" ; [#uses=1] +@.str12190 = private constant [5 x i8] c"__gc\00" ; [#uses=1] +@.str13191 = private constant [7 x i8] c"__mode\00" ; [#uses=1] +@.str14192 = private constant [5 x i8] c"__eq\00" ; [#uses=1] +@.str15193 = private constant [6 x i8] c"__add\00" ; [#uses=1] +@.str16194 = private constant [6 x i8] c"__sub\00" ; [#uses=1] +@.str17195 = private constant [6 x i8] c"__mul\00" ; [#uses=1] +@.str18196 = private constant [6 x i8] c"__div\00" ; [#uses=1] +@.str19197 = private constant [6 x i8] c"__mod\00" ; [#uses=1] +@.str20198 = private constant [6 x i8] c"__pow\00" ; [#uses=1] +@.str21199 = private constant [6 x i8] c"__unm\00" ; [#uses=1] +@.str22200 = private constant [6 x i8] c"__len\00" ; [#uses=1] +@.str23201 = private constant [5 x i8] c"__lt\00" ; [#uses=1] +@.str24202 = private constant [5 x i8] c"__le\00" ; [#uses=1] +@.str25203 = private constant [9 x i8] c"__concat\00" ; [#uses=1] +@.str26204 = private constant [7 x i8] c"__call\00" ; [#uses=1] +@.str208 = private constant [5 x i8] c"\1BLua\00" ; [#uses=1] +@.str1209 = private constant [14 x i8] c"binary string\00" ; [#uses=1] +@.str2210 = private constant [3 x i8] c"=?\00" ; [#uses=1] +@.str3211 = private constant [14 x i8] c"code too deep\00" ; [#uses=1] +@.str4212 = private constant [9 x i8] c"bad code\00" ; [#uses=1] +@.str5213 = private constant [15 x i8] c"unexpected end\00" ; [#uses=1] +@.str6214 = private constant [13 x i8] c"bad constant\00" ; [#uses=1] +@.str7215 = private constant [12 x i8] c"bad integer\00" ; [#uses=1] +@.str8216 = private constant [28 x i8] c"%s: %s in precompiled chunk\00" ; [#uses=1] +@.str9217 = private constant [11 x i8] c"bad header\00" ; [#uses=1] +@.str220 = private constant [6 x i8] c"%.14g\00" ; [#uses=1] +@.str1221 = private constant [6 x i8] c"index\00" ; [#uses=1] +@.str2222 = private constant [17 x i8] c"loop in gettable\00" ; [#uses=1] +@.str3223 = private constant [17 x i8] c"loop in settable\00" ; [#uses=1] +@.str4224 = private constant [23 x i8] c"string length overflow\00" ; [#uses=1] +@.str5225 = private constant [14 x i8] c"get length of\00" ; [#uses=1] +@.str6226 = private constant [37 x i8] c"'for' initial value must be a number\00" ; [#uses=1] +@.str7227 = private constant [29 x i8] c"'for' limit must be a number\00" ; [#uses=1] +@.str8228 = private constant [28 x i8] c"'for' step must be a number\00" ; [#uses=1] +@.str242 = private constant [22 x i8] c"bad argument #%d (%s)\00" ; [#uses=1] +@.str124358 = private constant [2 x i8] c"n\00" ; [#uses=1] +@.str2244 = private constant [7 x i8] c"method\00" ; [#uses=1] +@.str3245 = private constant [30 x i8] c"calling '%s' on bad self (%s)\00" ; [#uses=1] +@.str4246 = private constant [2 x i8] c"?\00" ; [#uses=1] +@.str5247 = private constant [30 x i8] c"bad argument #%d to '%s' (%s)\00" ; [#uses=1] +@.str6248 = private constant [20 x i8] c"%s expected, got %s\00" ; [#uses=1] +@.str7249 = private constant [3 x i8] c"Sl\00" ; [#uses=1] +@.str8250 = private constant [8 x i8] c"%s:%d: \00" ; [#uses=1] +@.str9251 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str10252 = private constant [20 x i8] c"invalid option '%s'\00" ; [#uses=1] +@.str11253 = private constant [20 x i8] c"stack overflow (%s)\00" ; [#uses=1] +@.str12254 = private constant [15 x i8] c"value expected\00" ; [#uses=1] +@.str13255 = private constant [8 x i8] c"_LOADED\00" ; [#uses=1] +@.str14256 = private constant [30 x i8] c"name conflict for module '%s'\00" ; [#uses=1] +@.str15257 = private constant [7 x i8] c"=stdin\00" ; [#uses=1] +@.str16258 = private constant [4 x i8] c"@%s\00" ; [#uses=1] +@.str17259 = private constant [2 x i8] c"r\00" ; [#uses=1] +@.str18260 = private constant [5 x i8] c"open\00" ; [#uses=1] +@.str19261 = private constant [5 x i8] c"\1BLua\00" ; [#uses=1] +@.str20262 = private constant [3 x i8] c"rb\00" ; [#uses=1] +@.str21263 = private constant [7 x i8] c"reopen\00" ; [#uses=1] +@.str22264 = private constant [5 x i8] c"read\00" ; [#uses=1] +@.str23265 = private constant [50 x i8] c"PANIC: unprotected error in call to Lua API (%s)\0A\00" ; [#uses=1] +@.str24266 = private constant [2 x i8] c"\0A\00" ; [#uses=1] +@.str25267 = private constant [17 x i8] c"cannot %s %s: %s\00" ; [#uses=1] +@.str268 = private constant [7 x i8] c"assert\00" ; [#uses=1] +@.str1269 = private constant [15 x i8] c"collectgarbage\00" ; [#uses=1] +@.str2270 = private constant [7 x i8] c"dofile\00" ; [#uses=1] +@.str3271 = private constant [6 x i8] c"error\00" ; [#uses=1] +@.str4272 = private constant [7 x i8] c"gcinfo\00" ; [#uses=1] +@.str5273 = private constant [8 x i8] c"getfenv\00" ; [#uses=1] +@.str6274 = private constant [13 x i8] c"getmetatable\00" ; [#uses=1] +@.str7275 = private constant [9 x i8] c"loadfile\00" ; [#uses=1] +@.str8276 = private constant [5 x i8] c"load\00" ; [#uses=1] +@.str9277 = private constant [11 x i8] c"loadstring\00" ; [#uses=1] +@.str10278 = private constant [5 x i8] c"next\00" ; [#uses=1] +@.str11279 = private constant [6 x i8] c"pcall\00" ; [#uses=1] +@.str12280 = private constant [6 x i8] c"print\00" ; [#uses=1] +@.str13281 = private constant [9 x i8] c"rawequal\00" ; [#uses=1] +@.str14282 = private constant [7 x i8] c"rawget\00" ; [#uses=1] +@.str15283 = private constant [7 x i8] c"rawset\00" ; [#uses=1] +@.str16284 = private constant [7 x i8] c"select\00" ; [#uses=1] +@.str17285 = private constant [8 x i8] c"setfenv\00" ; [#uses=1] +@.str18286 = private constant [13 x i8] c"setmetatable\00" ; [#uses=1] +@.str19287 = private constant [9 x i8] c"tonumber\00" ; [#uses=1] +@.str20288 = private constant [9 x i8] c"tostring\00" ; [#uses=1] +@.str21289 = private constant [5 x i8] c"type\00" ; [#uses=1] +@.str22290 = private constant [7 x i8] c"unpack\00" ; [#uses=1] +@.str23291 = private constant [7 x i8] c"xpcall\00" ; [#uses=1] +@_ZL10base_funcs = internal global [25 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str268, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_assertP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([15 x i8]* @.str1269, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z19luaB_collectgarbageP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str2270, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_dofileP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str3271, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaB_errorP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str4272, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_gcinfoP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str5273, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z12luaB_getfenvP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([13 x i8]* @.str6274, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z17luaB_getmetatableP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str7275, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_loadfileP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str8276, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9luaB_loadP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([11 x i8]* @.str9277, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z15luaB_loadstringP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str10278, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9luaB_nextP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str11279, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaB_pcallP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str12280, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaB_printP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str13281, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_rawequalP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str14282, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_rawgetP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str15283, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_rawsetP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str16284, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_selectP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str17285, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z12luaB_setfenvP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([13 x i8]* @.str18286, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z17luaB_setmetatableP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str19287, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_tonumberP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str20288, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_tostringP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str21289, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9luaB_typeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str22290, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_unpackP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str23291, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_xpcallP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str24292 = private constant [7 x i8] c"create\00" ; [#uses=1] +@.str25293 = private constant [7 x i8] c"resume\00" ; [#uses=1] +@.str26294 = private constant [8 x i8] c"running\00" ; [#uses=1] +@.str27295 = private constant [7 x i8] c"status\00" ; [#uses=1] +@.str28296 = private constant [5 x i8] c"wrap\00" ; [#uses=1] +@.str29297 = private constant [6 x i8] c"yield\00" ; [#uses=1] +@_ZL8co_funcs = internal global [7 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str24292, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_cocreateP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str25293, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_coresumeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str26294, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z14luaB_corunningP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str27295, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaB_costatusP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str28296, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_cowrapP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str29297, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaB_yieldP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str30298 = private constant [10 x i8] c"coroutine\00" ; [#uses=1] +@.str31299 = private constant [3 x i8] c"_G\00" ; [#uses=1] +@.str32300 = private constant [8 x i8] c"Lua 5.1\00" ; [#uses=1] +@.str33301 = private constant [9 x i8] c"_VERSION\00" ; [#uses=1] +@.str34302 = private constant [7 x i8] c"ipairs\00" ; [#uses=1] +@.str35303 = private constant [6 x i8] c"pairs\00" ; [#uses=1] +@.str36304 = private constant [3 x i8] c"kv\00" ; [#uses=1] +@.str37305 = private constant [7 x i8] c"__mode\00" ; [#uses=1] +@.str38306 = private constant [9 x i8] c"newproxy\00" ; [#uses=1] +@.str39307 = private constant [26 x i8] c"boolean or proxy expected\00" ; [#uses=1] +@.str40308 = private constant [29 x i8] c"too many arguments to resume\00" ; [#uses=1] +@.str41309 = private constant [27 x i8] c"cannot resume %s coroutine\00" ; [#uses=1] +@_ZL9statnames = internal constant [4 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str26294, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str43311, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str44312, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str45313, i32 0, i32 0)], align 4 ; [#uses=2] +@.str42310 = private constant [27 x i8] c"too many results to resume\00" ; [#uses=1] +@.str43311 = private constant [10 x i8] c"suspended\00" ; [#uses=1] +@.str44312 = private constant [7 x i8] c"normal\00" ; [#uses=1] +@.str45313 = private constant [5 x i8] c"dead\00" ; [#uses=1] +@.str46314 = private constant [19 x i8] c"coroutine expected\00" ; [#uses=1] +@.str47315 = private constant [22 x i8] c"Lua function expected\00" ; [#uses=1] +@.str48 = private constant [27 x i8] c"too many results to unpack\00" ; [#uses=1] +@.str49 = private constant [11 x i8] c"__tostring\00" ; [#uses=1] +@.str50 = private constant [5 x i8] c"true\00" ; [#uses=1] +@.str51 = private constant [6 x i8] c"false\00" ; [#uses=1] +@.str52 = private constant [4 x i8] c"nil\00" ; [#uses=1] +@.str53 = private constant [7 x i8] c"%s: %p\00" ; [#uses=1] +@.str54 = private constant [18 x i8] c"base out of range\00" ; [#uses=1] +@.str55 = private constant [22 x i8] c"nil or table expected\00" ; [#uses=1] +@.str56 = private constant [12 x i8] c"__metatable\00" ; [#uses=1] +@.str57 = private constant [36 x i8] c"cannot change a protected metatable\00" ; [#uses=1] +@.str58 = private constant [52 x i8] c"'setfenv' cannot change environment of given object\00" ; [#uses=1] +@.str59 = private constant [27 x i8] c"level must be non-negative\00" ; [#uses=1] +@.str60 = private constant [14 x i8] c"invalid level\00" ; [#uses=1] +@.str61 = private constant [2 x i8] c"f\00" ; [#uses=1] +@.str62 = private constant [50 x i8] c"no function environment for tail call at level %d\00" ; [#uses=1] +@.str63 = private constant [19 x i8] c"index out of range\00" ; [#uses=1] +@.str64 = private constant [43 x i8] c"'tostring' must return a string to 'print'\00" ; [#uses=1] +@.str65 = private constant [2 x i8] c"\09\00" ; [#uses=1] +@.str66 = private constant [2 x i8] c"\0A\00" ; [#uses=1] +@.str67 = private constant [8 x i8] c"=(load)\00" ; [#uses=1] +@.str68 = private constant [26 x i8] c"too many nested functions\00" ; [#uses=1] +@.str69 = private constant [37 x i8] c"reader function must return a string\00" ; [#uses=1] +@_ZZ19luaB_collectgarbageP9lua_StateE4opts = internal constant [8 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str70, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str71, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str72316, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str73, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str74, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str75, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str76, i32 0, i32 0), i8* null], align 4 ; [#uses=1] +@.str70 = private constant [5 x i8] c"stop\00" ; [#uses=1] +@.str71 = private constant [8 x i8] c"restart\00" ; [#uses=1] +@.str72316 = private constant [8 x i8] c"collect\00" ; [#uses=1] +@.str73 = private constant [6 x i8] c"count\00" ; [#uses=1] +@.str74 = private constant [5 x i8] c"step\00" ; [#uses=1] +@.str75 = private constant [9 x i8] c"setpause\00" ; [#uses=1] +@.str76 = private constant [11 x i8] c"setstepmul\00" ; [#uses=1] +@_ZZ19luaB_collectgarbageP9lua_StateE7optsnum = internal constant [7 x i32] [i32 0, i32 1, i32 2, i32 3, i32 5, i32 6, i32 7], align 4 ; [#uses=2] +@.str77317 = private constant [3 x i8] c"%s\00" ; [#uses=1] +@.str78 = private constant [18 x i8] c"assertion failed!\00" ; [#uses=1] +@.str318 = private constant [6 x i8] c"debug\00" ; [#uses=1] +@.str1319 = private constant [8 x i8] c"getfenv\00" ; [#uses=1] +@.str2320 = private constant [8 x i8] c"gethook\00" ; [#uses=1] +@.str3321 = private constant [8 x i8] c"getinfo\00" ; [#uses=1] +@.str4322 = private constant [9 x i8] c"getlocal\00" ; [#uses=1] +@.str5323 = private constant [12 x i8] c"getregistry\00" ; [#uses=1] +@.str6324 = private constant [13 x i8] c"getmetatable\00" ; [#uses=1] +@.str7325 = private constant [11 x i8] c"getupvalue\00" ; [#uses=1] +@.str8326 = private constant [8 x i8] c"setfenv\00" ; [#uses=1] +@.str9327 = private constant [8 x i8] c"sethook\00" ; [#uses=1] +@.str10328 = private constant [9 x i8] c"setlocal\00" ; [#uses=1] +@.str11329 = private constant [13 x i8] c"setmetatable\00" ; [#uses=1] +@.str12330 = private constant [11 x i8] c"setupvalue\00" ; [#uses=1] +@.str13331 = private constant [10 x i8] c"traceback\00" ; [#uses=1] +@_ZL5dblib = internal global [15 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str318, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8db_debugP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str1319, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_getfenvP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str2320, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_gethookP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str3321, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_getinfoP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str4322, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11db_getlocalP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([12 x i8]* @.str5323, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z14db_getregistryP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([13 x i8]* @.str6324, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z15db_getmetatableP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([11 x i8]* @.str7325, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13db_getupvalueP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str8326, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_setfenvP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str9327, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_sethookP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str10328, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11db_setlocalP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([13 x i8]* @.str11329, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z15db_setmetatableP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([11 x i8]* @.str12330, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13db_setupvalueP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([10 x i8]* @.str13331, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10db_errorfbP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str14332 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str15333 = private constant [2 x i8] c"\0A\00" ; [#uses=1] +@.str16334 = private constant [17 x i8] c"stack traceback:\00" ; [#uses=1] +@.str17335 = private constant [6 x i8] c"\0A\09...\00" ; [#uses=1] +@.str18336 = private constant [3 x i8] c"\0A\09\00" ; [#uses=1] +@.str19337 = private constant [4 x i8] c"Snl\00" ; [#uses=1] +@.str20338 = private constant [4 x i8] c"%s:\00" ; [#uses=1] +@.str21339 = private constant [4 x i8] c"%d:\00" ; [#uses=1] +@.str22340 = private constant [18 x i8] c" in function '%s'\00" ; [#uses=1] +@.str23341 = private constant [15 x i8] c" in main chunk\00" ; [#uses=1] +@.str24342 = private constant [3 x i8] c" ?\00" ; [#uses=1] +@.str25343 = private constant [21 x i8] c" in function <%s:%d>\00" ; [#uses=1] +@.str26344 = private constant [22 x i8] c"nil or table expected\00" ; [#uses=1] +@.str27345 = private constant [19 x i8] c"level out of range\00" ; [#uses=1] +@_ZL8KEY_HOOK = internal constant i8 104, align 1 ; [#uses=3] +@_ZZ5hookfP9lua_StateP9lua_DebugE9hooknames = internal constant [5 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str28346, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str29347, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str30348, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str31349, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str32350, i32 0, i32 0)], align 4 ; [#uses=1] +@.str28346 = private constant [5 x i8] c"call\00" ; [#uses=1] +@.str29347 = private constant [7 x i8] c"return\00" ; [#uses=1] +@.str30348 = private constant [5 x i8] c"line\00" ; [#uses=1] +@.str31349 = private constant [6 x i8] c"count\00" ; [#uses=1] +@.str32350 = private constant [12 x i8] c"tail return\00" ; [#uses=1] +@.str33351 = private constant [52 x i8] c"'setfenv' cannot change environment of given object\00" ; [#uses=1] +@.str34352 = private constant [6 x i8] c"flnSu\00" ; [#uses=1] +@.str35353 = private constant [4 x i8] c">%s\00" ; [#uses=1] +@.str36354 = private constant [27 x i8] c"function or level expected\00" ; [#uses=1] +@.str37355 = private constant [15 x i8] c"invalid option\00" ; [#uses=1] +@.str38356 = private constant [7 x i8] c"source\00" ; [#uses=1] +@.str39357 = private constant [10 x i8] c"short_src\00" ; [#uses=1] +@.str40358 = private constant [12 x i8] c"linedefined\00" ; [#uses=1] +@.str41359 = private constant [16 x i8] c"lastlinedefined\00" ; [#uses=1] +@.str42360 = private constant [5 x i8] c"what\00" ; [#uses=1] +@.str43361 = private constant [12 x i8] c"currentline\00" ; [#uses=1] +@.str44362 = private constant [5 x i8] c"nups\00" ; [#uses=1] +@.str45363 = private constant [5 x i8] c"name\00" ; [#uses=1] +@.str46364 = private constant [9 x i8] c"namewhat\00" ; [#uses=1] +@.str47365 = private constant [12 x i8] c"activelines\00" ; [#uses=1] +@.str48366 = private constant [5 x i8] c"func\00" ; [#uses=1] +@.str49367 = private constant [14 x i8] c"external hook\00" ; [#uses=1] +@.str50368 = private constant [12 x i8] c"lua_debug> \00" ; [#uses=1] +@.str51369 = private constant [6 x i8] c"cont\0A\00" ; [#uses=1] +@.str52370 = private constant [17 x i8] c"=(debug command)\00" ; [#uses=1] +@.str371 = private constant [6 x i8] c"close\00" ; [#uses=1] +@.str1372 = private constant [6 x i8] c"flush\00" ; [#uses=1] +@.str2373 = private constant [6 x i8] c"input\00" ; [#uses=1] +@.str3374 = private constant [6 x i8] c"lines\00" ; [#uses=1] +@.str4375 = private constant [5 x i8] c"open\00" ; [#uses=1] +@.str5376 = private constant [7 x i8] c"output\00" ; [#uses=1] +@.str6377 = private constant [6 x i8] c"popen\00" ; [#uses=1] +@.str7378 = private constant [5 x i8] c"read\00" ; [#uses=1] +@.str8379 = private constant [8 x i8] c"tmpfile\00" ; [#uses=1] +@.str9380 = private constant [5 x i8] c"type\00" ; [#uses=1] +@.str10381 = private constant [6 x i8] c"write\00" ; [#uses=1] +@_ZL5iolib = internal global [12 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str371, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_closeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str1372, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_flushP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str2373, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_inputP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str3374, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_linesP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str4375, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7io_openP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str5376, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9io_outputP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str6377, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_popenP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str7378, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7io_readP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str8379, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10io_tmpfileP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str9380, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7io_typeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str10381, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_writeP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str11382 = private constant [5 x i8] c"seek\00" ; [#uses=1] +@.str12383 = private constant [8 x i8] c"setvbuf\00" ; [#uses=1] +@.str13384 = private constant [5 x i8] c"__gc\00" ; [#uses=1] +@.str14385 = private constant [11 x i8] c"__tostring\00" ; [#uses=1] +@_ZL4flib = internal global [10 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str371, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8io_closeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str1372, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7f_flushP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str3374, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7f_linesP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str7378, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z6f_readP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str11382, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z6f_seekP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str12383, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9f_setvbufP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str10381, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7f_writeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str13384, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z5io_gcP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([11 x i8]* @.str14385, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11io_tostringP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str15386 = private constant [3 x i8] c"io\00" ; [#uses=1] +@.str16387 = private constant [6 x i8] c"stdin\00" ; [#uses=1] +@.str17388 = private constant [7 x i8] c"stdout\00" ; [#uses=1] +@.str18389 = private constant [7 x i8] c"stderr\00" ; [#uses=1] +@.str19390 = private constant [6 x i8] c"FILE*\00" ; [#uses=1] +@.str20391 = private constant [7 x i8] c"%s: %s\00" ; [#uses=1] +@.str21392 = private constant [3 x i8] c"%s\00" ; [#uses=1] +@.str22393 = private constant [27 x i8] c"cannot close standard file\00" ; [#uses=1] +@.str23394 = private constant [8 x i8] c"__close\00" ; [#uses=1] +@.str24395 = private constant [8 x i8] c"__index\00" ; [#uses=1] +@.str25396 = private constant [14 x i8] c"file (closed)\00" ; [#uses=1] +@.str26397 = private constant [10 x i8] c"file (%p)\00" ; [#uses=1] +@.str27398 = private constant [29 x i8] c"attempt to use a closed file\00" ; [#uses=1] +@.str28399 = private constant [6 x i8] c"%.14g\00" ; [#uses=1] +@_ZZ9f_setvbufP9lua_StateE4mode = internal constant [3 x i32] [i32 2, i32 0, i32 1], align 4 ; [#uses=1] +@_ZZ9f_setvbufP9lua_StateE9modenames = internal constant [4 x i8*] [i8* getelementptr inbounds ([3 x i8]* @.str29400, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str30401, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str31402, i32 0, i32 0), i8* null], align 4 ; [#uses=1] +@.str29400 = private constant [3 x i8] c"no\00" ; [#uses=1] +@.str30401 = private constant [5 x i8] c"full\00" ; [#uses=1] +@.str31402 = private constant [5 x i8] c"line\00" ; [#uses=1] +@_ZZ6f_seekP9lua_StateE4mode = internal constant [3 x i32] [i32 0, i32 1, i32 2], align 4 ; [#uses=1] +@_ZZ6f_seekP9lua_StateE9modenames = internal constant [4 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str32403, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str33404, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str34405, i32 0, i32 0), i8* null], align 4 ; [#uses=1] +@.str32403 = private constant [4 x i8] c"set\00" ; [#uses=1] +@.str33404 = private constant [4 x i8] c"cur\00" ; [#uses=1] +@.str34405 = private constant [4 x i8] c"end\00" ; [#uses=1] +@.str35406 = private constant [19 x i8] c"too many arguments\00" ; [#uses=1] +@.str36407 = private constant [15 x i8] c"invalid option\00" ; [#uses=1] +@.str37408 = private constant [15 x i8] c"invalid format\00" ; [#uses=1] +@.str38409 = private constant [4 x i8] c"%lf\00" ; [#uses=1] +@.str39410 = private constant [23 x i8] c"file is already closed\00" ; [#uses=1] +@.str40411 = private constant [27 x i8] c"standard %s file is closed\00" ; [#uses=1] +@_ZL6fnames = internal constant [2 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str2373, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str5376, i32 0, i32 0)], align 4 ; [#uses=1] +@.str41412 = private constant [12 x i8] c"closed file\00" ; [#uses=1] +@.str42413 = private constant [5 x i8] c"file\00" ; [#uses=1] +@.str43414 = private constant [2 x i8] c"r\00" ; [#uses=1] +@.str44415 = private constant [22 x i8] c"'popen' not supported\00" ; [#uses=1] +@.str45416 = private constant [2 x i8] c"w\00" ; [#uses=1] +@.str417 = private constant [4 x i8] c"abs\00" ; [#uses=1] +@.str1418 = private constant [5 x i8] c"acos\00" ; [#uses=1] +@.str2419 = private constant [5 x i8] c"asin\00" ; [#uses=1] +@.str3420 = private constant [6 x i8] c"atan2\00" ; [#uses=1] +@.str4421 = private constant [5 x i8] c"atan\00" ; [#uses=1] +@.str5422 = private constant [5 x i8] c"ceil\00" ; [#uses=1] +@.str6423 = private constant [5 x i8] c"cosh\00" ; [#uses=1] +@.str7424 = private constant [4 x i8] c"cos\00" ; [#uses=1] +@.str8425 = private constant [4 x i8] c"deg\00" ; [#uses=1] +@.str9426 = private constant [4 x i8] c"exp\00" ; [#uses=1] +@.str10427 = private constant [6 x i8] c"floor\00" ; [#uses=1] +@.str11428 = private constant [5 x i8] c"fmod\00" ; [#uses=1] +@.str12429 = private constant [6 x i8] c"frexp\00" ; [#uses=1] +@.str13430 = private constant [6 x i8] c"ldexp\00" ; [#uses=1] +@.str14431 = private constant [6 x i8] c"log10\00" ; [#uses=1] +@.str15432 = private constant [4 x i8] c"log\00" ; [#uses=1] +@.str16433 = private constant [4 x i8] c"max\00" ; [#uses=1] +@.str17434 = private constant [4 x i8] c"min\00" ; [#uses=1] +@.str18435 = private constant [5 x i8] c"modf\00" ; [#uses=1] +@.str19436 = private constant [4 x i8] c"pow\00" ; [#uses=1] +@.str20437 = private constant [4 x i8] c"rad\00" ; [#uses=1] +@.str21438 = private constant [7 x i8] c"random\00" ; [#uses=1] +@.str22439 = private constant [11 x i8] c"randomseed\00" ; [#uses=1] +@.str23440 = private constant [5 x i8] c"sinh\00" ; [#uses=1] +@.str24441 = private constant [4 x i8] c"sin\00" ; [#uses=1] +@.str25442 = private constant [5 x i8] c"sqrt\00" ; [#uses=1] +@.str26443 = private constant [5 x i8] c"tanh\00" ; [#uses=1] +@.str27444 = private constant [4 x i8] c"tan\00" ; [#uses=1] +@_ZL7mathlib = internal global [29 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str417, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_absP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str1418, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_acosP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str2419, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_asinP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str3420, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10math_atan2P9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str4421, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_atanP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str5422, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_ceilP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str6423, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_coshP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str7424, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_cosP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str8425, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_degP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str9426, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_expP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str10427, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10math_floorP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str11428, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_fmodP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str12429, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10math_frexpP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str13430, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10math_ldexpP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str14431, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10math_log10P9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str15432, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_logP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str16433, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_maxP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str17434, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_minP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str18435, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_modfP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str19436, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_powP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str20437, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_radP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str21438, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11math_randomP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([11 x i8]* @.str22439, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z15math_randomseedP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str23440, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_sinhP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str24441, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_sinP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str25442, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_sqrtP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str26443, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9math_tanhP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str27444, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8math_tanP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str28445 = private constant [5 x i8] c"math\00" ; [#uses=1] +@.str29446 = private constant [3 x i8] c"pi\00" ; [#uses=1] +@.str30447 = private constant [5 x i8] c"huge\00" ; [#uses=1] +@.str31448 = private constant [4 x i8] c"mod\00" ; [#uses=1] +@.str32449 = private constant [18 x i8] c"interval is empty\00" ; [#uses=1] +@.str33450 = private constant [26 x i8] c"wrong number of arguments\00" ; [#uses=1] +@.str452 = private constant [6 x i8] c"clock\00" ; [#uses=1] +@.str1453 = private constant [5 x i8] c"date\00" ; [#uses=1] +@.str2454 = private constant [9 x i8] c"difftime\00" ; [#uses=1] +@.str3455 = private constant [8 x i8] c"execute\00" ; [#uses=1] +@.str4456 = private constant [5 x i8] c"exit\00" ; [#uses=1] +@.str5457 = private constant [7 x i8] c"getenv\00" ; [#uses=1] +@.str6458 = private constant [7 x i8] c"remove\00" ; [#uses=1] +@.str7459 = private constant [7 x i8] c"rename\00" ; [#uses=1] +@.str8460 = private constant [10 x i8] c"setlocale\00" ; [#uses=1] +@.str9461 = private constant [5 x i8] c"time\00" ; [#uses=1] +@.str10462 = private constant [8 x i8] c"tmpname\00" ; [#uses=1] +@_ZL6syslib = internal global [12 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str452, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8os_clockP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str1453, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7os_dateP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str2454, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11os_difftimeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str3455, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10os_executeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str4456, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7os_exitP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str5457, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9os_getenvP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str6458, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9os_removeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str7459, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9os_renameP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([10 x i8]* @.str8460, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z12os_setlocaleP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str9461, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7os_timeP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str10462, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10os_tmpnameP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str11463 = private constant [3 x i8] c"os\00" ; [#uses=1] +@.str12464 = private constant [37 x i8] c"unable to generate a unique filename\00" ; [#uses=1] +@.str13465 = private constant [4 x i8] c"sec\00" ; [#uses=1] +@.str14466 = private constant [4 x i8] c"min\00" ; [#uses=1] +@.str15467 = private constant [5 x i8] c"hour\00" ; [#uses=1] +@.str16468 = private constant [4 x i8] c"day\00" ; [#uses=1] +@.str17469 = private constant [6 x i8] c"month\00" ; [#uses=1] +@.str18470 = private constant [5 x i8] c"year\00" ; [#uses=1] +@.str19471 = private constant [6 x i8] c"isdst\00" ; [#uses=1] +@.str20472 = private constant [33 x i8] c"field '%s' missing in date table\00" ; [#uses=1] +@_ZZ12os_setlocaleP9lua_StateE3cat = internal constant [6 x i32] [i32 6, i32 3, i32 0, i32 4, i32 1, i32 2], align 4 ; [#uses=1] +@_ZZ12os_setlocaleP9lua_StateE8catnames = internal constant [7 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str21473, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str22474, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str23475, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str24476, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str25477, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str9461, i32 0, i32 0), i8* null], align 4 ; [#uses=1] +@.str21473 = private constant [4 x i8] c"all\00" ; [#uses=1] +@.str22474 = private constant [8 x i8] c"collate\00" ; [#uses=1] +@.str23475 = private constant [6 x i8] c"ctype\00" ; [#uses=1] +@.str24476 = private constant [9 x i8] c"monetary\00" ; [#uses=1] +@.str25477 = private constant [8 x i8] c"numeric\00" ; [#uses=1] +@.str26478 = private constant [7 x i8] c"%s: %s\00" ; [#uses=1] +@.str27479 = private constant [3 x i8] c"%c\00" ; [#uses=1] +@.str28480 = private constant [3 x i8] c"*t\00" ; [#uses=1] +@.str29481 = private constant [5 x i8] c"wday\00" ; [#uses=1] +@.str30482 = private constant [5 x i8] c"yday\00" ; [#uses=1] +@.str483 = private constant [7 x i8] c"concat\00" ; [#uses=1] +@.str1484 = private constant [8 x i8] c"foreach\00" ; [#uses=1] +@.str2485 = private constant [9 x i8] c"foreachi\00" ; [#uses=1] +@.str3486 = private constant [5 x i8] c"getn\00" ; [#uses=1] +@.str4487 = private constant [5 x i8] c"maxn\00" ; [#uses=1] +@.str5488 = private constant [7 x i8] c"insert\00" ; [#uses=1] +@.str6489 = private constant [7 x i8] c"remove\00" ; [#uses=1] +@.str7490 = private constant [5 x i8] c"setn\00" ; [#uses=1] +@.str8491 = private constant [5 x i8] c"sort\00" ; [#uses=1] +@_ZL9tab_funcs = internal global [10 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str483, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7tconcatP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str1484, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7foreachP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([9 x i8]* @.str2485, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8foreachiP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str3486, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z4getnP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str4487, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z4maxnP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str5488, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7tinsertP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str6489, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7tremoveP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str7490, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z4setnP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str8491, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z4sortP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str9492 = private constant [6 x i8] c"table\00" ; [#uses=1] +@.str10493 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str11494 = private constant [35 x i8] c"invalid order function for sorting\00" ; [#uses=1] +@.str12495 = private constant [19 x i8] c"'setn' is obsolete\00" ; [#uses=1] +@.str13496 = private constant [38 x i8] c"wrong number of arguments to 'insert'\00" ; [#uses=1] +@.str14497 = private constant [53 x i8] c"invalid value (%s) at index %d in table for 'concat'\00" ; [#uses=1] +@.str498 = private constant [5 x i8] c"byte\00" ; [#uses=1] +@.str1499 = private constant [5 x i8] c"char\00" ; [#uses=1] +@.str2500 = private constant [5 x i8] c"dump\00" ; [#uses=1] +@.str3501 = private constant [5 x i8] c"find\00" ; [#uses=1] +@.str4502 = private constant [7 x i8] c"format\00" ; [#uses=1] +@.str5503 = private constant [6 x i8] c"gfind\00" ; [#uses=1] +@.str6504 = private constant [7 x i8] c"gmatch\00" ; [#uses=1] +@.str7505 = private constant [5 x i8] c"gsub\00" ; [#uses=1] +@.str8506 = private constant [4 x i8] c"len\00" ; [#uses=1] +@.str9507 = private constant [6 x i8] c"lower\00" ; [#uses=1] +@.str10508 = private constant [6 x i8] c"match\00" ; [#uses=1] +@.str11509 = private constant [4 x i8] c"rep\00" ; [#uses=1] +@.str12510 = private constant [8 x i8] c"reverse\00" ; [#uses=1] +@.str13511 = private constant [4 x i8] c"sub\00" ; [#uses=1] +@.str14512 = private constant [6 x i8] c"upper\00" ; [#uses=1] +@_ZL6strlib = internal global [16 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str498, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8str_byteP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str1499, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8str_charP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str2500, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8str_dumpP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str3501, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8str_findP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str4502, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10str_formatP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str5503, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11gfind_nodefP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str6504, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z6gmatchP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str7505, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z8str_gsubP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str8506, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7str_lenP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str9507, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9str_lowerP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str10508, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9str_matchP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str11509, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7str_repP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str12510, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11str_reverseP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([4 x i8]* @.str13511, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z7str_subP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str14512, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9str_upperP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str15513 = private constant [7 x i8] c"string\00" ; [#uses=1] +@.str16514 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str17515 = private constant [8 x i8] c"__index\00" ; [#uses=1] +@.str18516 = private constant [11 x i8] c"^$*+?.([%-\00" ; [#uses=1] +@.str19517 = private constant [18 x i8] c"too many captures\00" ; [#uses=1] +@.str20518 = private constant [22 x i8] c"invalid capture index\00" ; [#uses=1] +@.str21519 = private constant [19 x i8] c"unfinished capture\00" ; [#uses=1] +@.str22520 = private constant [35 x i8] c"missing '[' after '%%f' in pattern\00" ; [#uses=1] +@.str23521 = private constant [35 x i8] c"malformed pattern (ends with '%%')\00" ; [#uses=1] +@.str24522 = private constant [32 x i8] c"malformed pattern (missing ']')\00" ; [#uses=1] +@.str25523 = private constant [19 x i8] c"unbalanced pattern\00" ; [#uses=1] +@.str26524 = private constant [24 x i8] c"invalid pattern capture\00" ; [#uses=1] +@.str27525 = private constant [31 x i8] c"string/function/table expected\00" ; [#uses=1] +@.str28526 = private constant [33 x i8] c"invalid replacement value (a %s)\00" ; [#uses=1] +@.str29527 = private constant [46 x i8] c"'string.gfind' was renamed to 'string.gmatch'\00" ; [#uses=1] +@.str30528 = private constant [34 x i8] c"invalid option '%%%c' to 'format'\00" ; [#uses=1] +@.str31529 = private constant [3 x i8] c"\5Cr\00" ; [#uses=1] +@.str32530 = private constant [5 x i8] c"\5C000\00" ; [#uses=1] +@.str33531 = private constant [2 x i8] c"l\00" ; [#uses=1] +@.str34532 = private constant [6 x i8] c"-+ #0\00" ; [#uses=1] +@.str35533 = private constant [32 x i8] c"invalid format (repeated flags)\00" ; [#uses=1] +@.str36534 = private constant [45 x i8] c"invalid format (width or precision too long)\00" ; [#uses=1] +@.str37535 = private constant [30 x i8] c"unable to dump given function\00" ; [#uses=1] +@.str38536 = private constant [14 x i8] c"invalid value\00" ; [#uses=1] +@.str39537 = private constant [22 x i8] c"string slice too long\00" ; [#uses=1] +@.str538 = private constant [8 x i8] c"loadlib\00" ; [#uses=1] +@.str1539 = private constant [7 x i8] c"seeall\00" ; [#uses=1] +@_ZL8pk_funcs = internal global [3 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str538, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10ll_loadlibP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str1539, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9ll_seeallP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@.str2540 = private constant [7 x i8] c"module\00" ; [#uses=1] +@.str3541 = private constant [8 x i8] c"require\00" ; [#uses=1] +@_ZL8ll_funcs = internal global [3 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str2540, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z9ll_moduleP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str3541, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10ll_requireP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] +@_ZL7loaders = internal constant [5 x i32 (%struct.lua_State*)*] [i32 (%struct.lua_State*)* @_Z14loader_preloadP9lua_State, i32 (%struct.lua_State*)* @_Z10loader_LuaP9lua_State, i32 (%struct.lua_State*)* @_Z8loader_CP9lua_State, i32 (%struct.lua_State*)* @_Z12loader_CrootP9lua_State, i32 (%struct.lua_State*)* null], align 4 ; [#uses=2] +@.str4542 = private constant [9 x i8] c"_LOADLIB\00" ; [#uses=1] +@.str5543 = private constant [5 x i8] c"__gc\00" ; [#uses=1] +@.str6544 = private constant [8 x i8] c"package\00" ; [#uses=1] +@.str7545 = private constant [8 x i8] c"loaders\00" ; [#uses=1] +@.str8546 = private constant [5 x i8] c"path\00" ; [#uses=1] +@.str9547 = private constant [9 x i8] c"LUA_PATH\00" ; [#uses=1] +@.str10548 = private constant [138 x i8] c"./?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/lib/lua/5.1/?.lua;/usr/local/lib/lua/5.1/?/init.lua\00" ; [#uses=1] +@.str11549 = private constant [6 x i8] c"cpath\00" ; [#uses=1] +@.str12550 = private constant [10 x i8] c"LUA_CPATH\00" ; [#uses=1] +@.str13551 = private constant [69 x i8] c"./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so\00" ; [#uses=1] +@.str14552 = private constant [10 x i8] c"/\0A;\0A?\0A!\0A-\00" ; [#uses=1] +@.str15553 = private constant [7 x i8] c"config\00" ; [#uses=1] +@.str16554 = private constant [8 x i8] c"_LOADED\00" ; [#uses=1] +@.str17555 = private constant [7 x i8] c"loaded\00" ; [#uses=1] +@.str18556 = private constant [8 x i8] c"preload\00" ; [#uses=1] +@.str19557 = private constant [3 x i8] c";;\00" ; [#uses=1] +@.str20558 = private constant [4 x i8] c";\01;\00" ; [#uses=1] +@.str21559 = private constant [2 x i8] c"\01\00" ; [#uses=1] +@.str22560 = private constant [30 x i8] c"\0A\09no module '%s' in file '%s'\00" ; [#uses=1] +@.str23561 = private constant [46 x i8] c"error loading module '%s' from file '%s':\0A\09%s\00" ; [#uses=1] +@.str24562 = private constant [59 x i8] c"dynamic libraries not enabled; check your Lua installation\00" ; [#uses=1] +@.str25563 = private constant [5 x i8] c"%s%s\00" ; [#uses=1] +@.str26564 = private constant [10 x i8] c"LOADLIB: \00" ; [#uses=1] +@.str27565 = private constant [2 x i8] c"-\00" ; [#uses=1] +@.str28566 = private constant [2 x i8] c".\00" ; [#uses=1] +@.str29567 = private constant [2 x i8] c"_\00" ; [#uses=1] +@.str30568 = private constant [11 x i8] c"luaopen_%s\00" ; [#uses=1] +@.str31569 = private constant [2 x i8] c"/\00" ; [#uses=1] +@.str32570 = private constant [30 x i8] c"'package.%s' must be a string\00" ; [#uses=1] +@.str33571 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str34572 = private constant [2 x i8] c"?\00" ; [#uses=1] +@.str35573 = private constant [15 x i8] c"\0A\09no file '%s'\00" ; [#uses=1] +@.str36574 = private constant [2 x i8] c"r\00" ; [#uses=1] +@.str37575 = private constant [2 x i8] c";\00" ; [#uses=1] +@.str38576 = private constant [34 x i8] c"'package.preload' must be a table\00" ; [#uses=1] +@.str39577 = private constant [33 x i8] c"\0A\09no field package.preload['%s']\00" ; [#uses=1] +@_ZL9sentinel_ = internal constant i32 0, align 4 ; [#uses=1] +@.str40578 = private constant [43 x i8] c"loop or previous error loading module '%s'\00" ; [#uses=1] +@.str41579 = private constant [34 x i8] c"'package.loaders' must be a table\00" ; [#uses=1] +@.str42580 = private constant [25 x i8] c"module '%s' not found:%s\00" ; [#uses=1] +@.str43581 = private constant [30 x i8] c"name conflict for module '%s'\00" ; [#uses=1] +@.str44582 = private constant [6 x i8] c"_NAME\00" ; [#uses=1] +@.str45583 = private constant [2 x i8] c"f\00" ; [#uses=1] +@.str46584 = private constant [40 x i8] c"'module' not called from a Lua function\00" ; [#uses=1] +@.str47585 = private constant [3 x i8] c"_M\00" ; [#uses=1] +@.str48586 = private constant [9 x i8] c"_PACKAGE\00" ; [#uses=1] +@.str49587 = private constant [8 x i8] c"__index\00" ; [#uses=1] +@.str50588 = private constant [7 x i8] c"absent\00" ; [#uses=1] +@.str51589 = private constant [5 x i8] c"init\00" ; [#uses=1] +@.str590 = private constant [1 x i8] zeroinitializer ; [#uses=1] +@.str1591 = private constant [8 x i8] c"package\00" ; [#uses=1] +@.str2592 = private constant [6 x i8] c"table\00" ; [#uses=1] +@.str3593 = private constant [3 x i8] c"io\00" ; [#uses=1] +@.str4594 = private constant [3 x i8] c"os\00" ; [#uses=1] +@.str5595 = private constant [7 x i8] c"string\00" ; [#uses=1] +@.str6596 = private constant [5 x i8] c"math\00" ; [#uses=1] +@.str7597 = private constant [6 x i8] c"debug\00" ; [#uses=1] +@_ZL7lualibs = internal global [9 x %struct.luaL_Reg] [%struct.luaL_Reg { i8* getelementptr inbounds ([1 x i8]* @.str590, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z12luaopen_baseP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([8 x i8]* @.str1591, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z15luaopen_packageP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str2592, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaopen_tableP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([3 x i8]* @.str3593, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaopen_ioP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([3 x i8]* @.str4594, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaopen_osP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([7 x i8]* @.str5595, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z14luaopen_stringP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([5 x i8]* @.str6596, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z12luaopen_mathP9lua_State }, %struct.luaL_Reg { i8* getelementptr inbounds ([6 x i8]* @.str7597, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z13luaopen_debugP9lua_State }, %struct.luaL_Reg zeroinitializer], align 4 ; [#uses=1] + +; [#uses=0] +define i32 @main(i32 %argc, i8** %argv) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i8**, align 4 ; [#uses=3] + %status = alloca i32, align 4 ; [#uses=3] + %s = alloca %struct.Smain, align 4 ; [#uses=4] + %L = alloca %struct.lua_State*, align 4 ; [#uses=5] + store i32 0, i32* %1 + store i32 %argc, i32* %2, align 4 + store i8** %argv, i8*** %3, align 4 + %4 = call %struct.lua_State* @_Z13luaL_newstatev() ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L, align 4 + %5 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %6 = icmp eq %struct.lua_State* %5, null ; [#uses=1] + br i1 %6, label %7, label %11 + +; <label>:7 ; preds = %0 + %8 = load i8*** %3, align 4 ; [#uses=1] + %9 = getelementptr inbounds i8** %8, i32 0 ; [#uses=1] + %10 = load i8** %9 ; [#uses=1] + call void @_Z9l_messagePKcS0_(i8* %10, i8* getelementptr inbounds ([39 x i8]* @.str, i32 0, i32 0)) + store i32 1, i32* %1 + br label %32 + +; <label>:11 ; preds = %0 + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Smain* %s, i32 0, i32 0 ; [#uses=1] + store i32 %12, i32* %13, align 4 + %14 = load i8*** %3, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Smain* %s, i32 0, i32 1 ; [#uses=1] + store i8** %14, i8*** %15, align 4 + %16 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %17 = bitcast %struct.Smain* %s to i8* ; [#uses=1] + %18 = call i32 @_Z10lua_cpcallP9lua_StatePFiS0_EPv(%struct.lua_State* %16, i32 (%struct.lua_State*)* @_Z5pmainP9lua_State, i8* %17) ; [#uses=1] + store i32 %18, i32* %status, align 4 + %19 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %20 = load i32* %status, align 4 ; [#uses=1] + %21 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %19, i32 %20) ; [#uses=0] + %22 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z9lua_closeP9lua_State(%struct.lua_State* %22) + %23 = load i32* %status, align 4 ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %24, label %29, label %25 + +; <label>:25 ; preds = %11 + %26 = getelementptr inbounds %struct.Smain* %s, i32 0, i32 2 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = icmp ne i32 %27, 0 ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %25, %11 + %30 = phi i1 [ true, %11 ], [ %28, %25 ] ; [#uses=1] + %31 = select i1 %30, i32 1, i32 0 ; [#uses=1] + store i32 %31, i32* %1 + br label %32 + +; <label>:32 ; preds = %29, %7 + %33 = load i32* %1 ; [#uses=1] + ret i32 %33 +} + +; [#uses=4] +define internal void @_Z9l_messagePKcS0_(i8* %pname, i8* %msg) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + store i8* %pname, i8** %1, align 4 + store i8* %msg, i8** %2, align 4 + %3 = load i8** %1, align 4 ; [#uses=1] + %4 = icmp ne i8* %3, null ; [#uses=1] + br i1 %4, label %5, label %9 + +; <label>:5 ; preds = %0 + %6 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %7 = load i8** %1, align 4 ; [#uses=1] + %8 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %6, i8* getelementptr inbounds ([5 x i8]* @.str26, i32 0, i32 0), i8* %7) ; [#uses=0] + br label %9 + +; <label>:9 ; preds = %5, %0 + %10 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %11 = load i8** %2, align 4 ; [#uses=1] + %12 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %10, i8* getelementptr inbounds ([4 x i8]* @.str27, i32 0, i32 0), i8* %11) ; [#uses=0] + %13 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %14 = call i32 @fflush(%struct._IO_FILE* %13) ; [#uses=0] + ret void +} + +; [#uses=1] +define internal i32 @_Z5pmainP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %s = alloca %struct.Smain*, align 4 ; [#uses=10] + %argv = alloca i8**, align 4 ; [#uses=7] + %script = alloca i32, align 4 ; [#uses=7] + %has_i = alloca i32, align 4 ; [#uses=3] + %has_v = alloca i32, align 4 ; [#uses=4] + %has_e = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = bitcast i8* %4 to %struct.Smain* ; [#uses=1] + store %struct.Smain* %5, %struct.Smain** %s, align 4 + %6 = load %struct.Smain** %s, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Smain* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i8*** %7, align 4 ; [#uses=1] + store i8** %8, i8*** %argv, align 4 + store i32 0, i32* %has_i, align 4 + store i32 0, i32* %has_v, align 4 + store i32 0, i32* %has_e, align 4 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + store %struct.lua_State* %9, %struct.lua_State** @_ZL7globalL, align 4 + %10 = load i8*** %argv, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8** %10, i32 0 ; [#uses=1] + %12 = load i8** %11 ; [#uses=1] + %13 = icmp ne i8* %12, null ; [#uses=1] + br i1 %13, label %14, label %25 + +; <label>:14 ; preds = %0 + %15 = load i8*** %argv, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8** %15, i32 0 ; [#uses=1] + %17 = load i8** %16 ; [#uses=1] + %18 = getelementptr inbounds i8* %17, i32 0 ; [#uses=1] + %19 = load i8* %18 ; [#uses=1] + %20 = icmp ne i8 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %25 + +; <label>:21 ; preds = %14 + %22 = load i8*** %argv, align 4 ; [#uses=1] + %23 = getelementptr inbounds i8** %22, i32 0 ; [#uses=1] + %24 = load i8** %23 ; [#uses=1] + store i8* %24, i8** @_ZL8progname, align 4 + br label %25 + +; <label>:25 ; preds = %21, %14, %0 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %26, i32 0, i32 0) ; [#uses=0] + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_openlibsP9lua_State(%struct.lua_State* %28) + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %29, i32 1, i32 0) ; [#uses=0] + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %32 = call i32 @_Z14handle_luainitP9lua_State(%struct.lua_State* %31) ; [#uses=1] + %33 = load %struct.Smain** %s, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Smain* %33, i32 0, i32 2 ; [#uses=1] + store i32 %32, i32* %34, align 4 + %35 = load %struct.Smain** %s, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Smain* %35, i32 0, i32 2 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp ne i32 %37, 0 ; [#uses=1] + br i1 %38, label %39, label %40 + +; <label>:39 ; preds = %25 + store i32 0, i32* %1 + br label %107 + +; <label>:40 ; preds = %25 + %41 = load i8*** %argv, align 4 ; [#uses=1] + %42 = call i32 @_Z11collectargsPPcPiS1_S1_(i8** %41, i32* %has_i, i32* %has_v, i32* %has_e) ; [#uses=1] + store i32 %42, i32* %script, align 4 + %43 = load i32* %script, align 4 ; [#uses=1] + %44 = icmp slt i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %48 + +; <label>:45 ; preds = %40 + call void @_Z11print_usagev() + %46 = load %struct.Smain** %s, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Smain* %46, i32 0, i32 2 ; [#uses=1] + store i32 1, i32* %47, align 4 + store i32 0, i32* %1 + br label %107 + +; <label>:48 ; preds = %40 + %49 = load i32* %has_v, align 4 ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %52 + +; <label>:51 ; preds = %48 + call void @_Z13print_versionv() + br label %52 + +; <label>:52 ; preds = %51, %48 + %53 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %54 = load i8*** %argv, align 4 ; [#uses=1] + %55 = load i32* %script, align 4 ; [#uses=1] + %56 = icmp sgt i32 %55, 0 ; [#uses=1] + br i1 %56, label %57, label %59 + +; <label>:57 ; preds = %52 + %58 = load i32* %script, align 4 ; [#uses=1] + br label %63 + +; <label>:59 ; preds = %52 + %60 = load %struct.Smain** %s, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.Smain* %60, i32 0, i32 0 ; [#uses=1] + %62 = load i32* %61, align 4 ; [#uses=1] + br label %63 + +; <label>:63 ; preds = %59, %57 + %64 = phi i32 [ %58, %57 ], [ %62, %59 ] ; [#uses=1] + %65 = call i32 @_Z7runargsP9lua_StatePPci(%struct.lua_State* %53, i8** %54, i32 %64) ; [#uses=1] + %66 = load %struct.Smain** %s, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Smain* %66, i32 0, i32 2 ; [#uses=1] + store i32 %65, i32* %67, align 4 + %68 = load %struct.Smain** %s, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.Smain* %68, i32 0, i32 2 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + %71 = icmp ne i32 %70, 0 ; [#uses=1] + br i1 %71, label %72, label %73 + +; <label>:72 ; preds = %63 + store i32 0, i32* %1 + br label %107 + +; <label>:73 ; preds = %63 + %74 = load i32* %script, align 4 ; [#uses=1] + %75 = icmp ne i32 %74, 0 ; [#uses=1] + br i1 %75, label %76, label %83 + +; <label>:76 ; preds = %73 + %77 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %78 = load i8*** %argv, align 4 ; [#uses=1] + %79 = load i32* %script, align 4 ; [#uses=1] + %80 = call i32 @_Z13handle_scriptP9lua_StatePPci(%struct.lua_State* %77, i8** %78, i32 %79) ; [#uses=1] + %81 = load %struct.Smain** %s, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.Smain* %81, i32 0, i32 2 ; [#uses=1] + store i32 %80, i32* %82, align 4 + br label %83 + +; <label>:83 ; preds = %76, %73 + %84 = load %struct.Smain** %s, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.Smain* %84, i32 0, i32 2 ; [#uses=1] + %86 = load i32* %85, align 4 ; [#uses=1] + %87 = icmp ne i32 %86, 0 ; [#uses=1] + br i1 %87, label %88, label %89 + +; <label>:88 ; preds = %83 + store i32 0, i32* %1 + br label %107 + +; <label>:89 ; preds = %83 + %90 = load i32* %has_i, align 4 ; [#uses=1] + %91 = icmp ne i32 %90, 0 ; [#uses=1] + br i1 %91, label %92, label %94 + +; <label>:92 ; preds = %89 + %93 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z5dottyP9lua_State(%struct.lua_State* %93) + br label %106 + +; <label>:94 ; preds = %89 + %95 = load i32* %script, align 4 ; [#uses=1] + %96 = icmp eq i32 %95, 0 ; [#uses=1] + br i1 %96, label %97, label %105 + +; <label>:97 ; preds = %94 + %98 = load i32* %has_e, align 4 ; [#uses=1] + %99 = icmp ne i32 %98, 0 ; [#uses=1] + br i1 %99, label %105, label %100 + +; <label>:100 ; preds = %97 + %101 = load i32* %has_v, align 4 ; [#uses=1] + %102 = icmp ne i32 %101, 0 ; [#uses=1] + br i1 %102, label %105, label %103 + +; <label>:103 ; preds = %100 + call void @_Z13print_versionv() + %104 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z5dottyP9lua_State(%struct.lua_State* %104) + br label %105 + +; <label>:105 ; preds = %103, %100, %97, %94 + br label %106 + +; <label>:106 ; preds = %105, %92 + store i32 0, i32* %1 + br label %107 + +; <label>:107 ; preds = %106, %88, %72, %45, %39 + %108 = load i32* %1 ; [#uses=1] + ret i32 %108 +} + +; [#uses=6] +define internal i32 @_Z6reportP9lua_Statei(%struct.lua_State* %L, i32 %status) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=3] + %msg = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %status, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp ne i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %19 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 -1) ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %19, label %9 + +; <label>:9 ; preds = %5 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %10, i32 -1, i32* null) ; [#uses=1] + store i8* %11, i8** %msg, align 4 + %12 = load i8** %msg, align 4 ; [#uses=1] + %13 = icmp eq i8* %12, null ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %9 + store i8* getelementptr inbounds ([31 x i8]* @.str1, i32 0, i32 0), i8** %msg, align 4 + br label %15 + +; <label>:15 ; preds = %14, %9 + %16 = load i8** @_ZL8progname, align 4 ; [#uses=1] + %17 = load i8** %msg, align 4 ; [#uses=1] + call void @_Z9l_messagePKcS0_(i8* %16, i8* %17) + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %18, i32 -2) + br label %19 + +; <label>:19 ; preds = %15, %5, %0 + %20 = load i32* %2, align 4 ; [#uses=1] + ret i32 %20 +} + +; [#uses=1] +define internal i32 @_Z14handle_luainitP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %init = alloca i8*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = call i8* @getenv(i8* getelementptr inbounds ([9 x i8]* @.str24, i32 0, i32 0)) nounwind ; [#uses=1] + store i8* %3, i8** %init, align 4 + %4 = load i8** %init, align 4 ; [#uses=1] + %5 = icmp eq i8* %4, null ; [#uses=1] + br i1 %5, label %6, label %7 + +; <label>:6 ; preds = %0 + store i32 0, i32* %1 + br label %22 + +; <label>:7 ; preds = %0 + %8 = load i8** %init, align 4 ; [#uses=1] + %9 = getelementptr inbounds i8* %8, i32 0 ; [#uses=1] + %10 = load i8* %9 ; [#uses=1] + %11 = sext i8 %10 to i32 ; [#uses=1] + %12 = icmp eq i32 %11, 64 ; [#uses=1] + br i1 %12, label %13, label %18 + +; <label>:13 ; preds = %7 + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = load i8** %init, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8* %15, i32 1 ; [#uses=1] + %17 = call i32 @_Z6dofileP9lua_StatePKc(%struct.lua_State* %14, i8* %16) ; [#uses=1] + store i32 %17, i32* %1 + br label %22 + +; <label>:18 ; preds = %7 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i8** %init, align 4 ; [#uses=1] + %21 = call i32 @_Z8dostringP9lua_StatePKcS2_(%struct.lua_State* %19, i8* %20, i8* getelementptr inbounds ([10 x i8]* @.str25, i32 0, i32 0)) ; [#uses=1] + store i32 %21, i32* %1 + br label %22 + +; <label>:22 ; preds = %18, %13, %6 + %23 = load i32* %1 ; [#uses=1] + ret i32 %23 +} + +; [#uses=1] +define internal i32 @_Z11collectargsPPcPiS1_S1_(i8** %argv, i32* %pi, i32* %pv, i32* %pe) nounwind { + %1 = alloca i32, align 4 ; [#uses=10] + %2 = alloca i8**, align 4 ; [#uses=10] + %3 = alloca i32*, align 4 ; [#uses=2] + %4 = alloca i32*, align 4 ; [#uses=2] + %5 = alloca i32*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=17] + store i8** %argv, i8*** %2, align 4 + store i32* %pi, i32** %3, align 4 + store i32* %pv, i32** %4, align 4 + store i32* %pe, i32** %5, align 4 + store i32 1, i32* %i, align 4 + br label %6 + +; <label>:6 ; preds = %104, %0 + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = load i8*** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds i8** %8, i32 %7 ; [#uses=1] + %10 = load i8** %9 ; [#uses=1] + %11 = icmp ne i8* %10, null ; [#uses=1] + br i1 %11, label %12, label %107 + +; <label>:12 ; preds = %6 + %13 = load i32* %i, align 4 ; [#uses=1] + %14 = load i8*** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds i8** %14, i32 %13 ; [#uses=1] + %16 = load i8** %15 ; [#uses=1] + %17 = getelementptr inbounds i8* %16, i32 0 ; [#uses=1] + %18 = load i8* %17 ; [#uses=1] + %19 = sext i8 %18 to i32 ; [#uses=1] + %20 = icmp ne i32 %19, 45 ; [#uses=1] + br i1 %20, label %21, label %23 + +; <label>:21 ; preds = %12 + %22 = load i32* %i, align 4 ; [#uses=1] + store i32 %22, i32* %1 + br label %108 + +; <label>:23 ; preds = %12 + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = load i8*** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds i8** %25, i32 %24 ; [#uses=1] + %27 = load i8** %26 ; [#uses=1] + %28 = getelementptr inbounds i8* %27, i32 1 ; [#uses=1] + %29 = load i8* %28 ; [#uses=1] + %30 = sext i8 %29 to i32 ; [#uses=1] + switch i32 %30, label %102 [ + i32 45, label %31 + i32 0, label %54 + i32 105, label %56 + i32 118, label %68 + i32 101, label %80 + i32 108, label %82 + ] + +; <label>:31 ; preds = %23 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = load i8*** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds i8** %33, i32 %32 ; [#uses=1] + %35 = load i8** %34 ; [#uses=1] + %36 = getelementptr inbounds i8* %35, i32 2 ; [#uses=1] + %37 = load i8* %36 ; [#uses=1] + %38 = sext i8 %37 to i32 ; [#uses=1] + %39 = icmp ne i32 %38, 0 ; [#uses=1] + br i1 %39, label %40, label %41 + +; <label>:40 ; preds = %31 + store i32 -1, i32* %1 + br label %108 + +; <label>:41 ; preds = %31 + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = add nsw i32 %42, 1 ; [#uses=1] + %44 = load i8*** %2, align 4 ; [#uses=1] + %45 = getelementptr inbounds i8** %44, i32 %43 ; [#uses=1] + %46 = load i8** %45 ; [#uses=1] + %47 = icmp ne i8* %46, null ; [#uses=1] + br i1 %47, label %48, label %51 + +; <label>:48 ; preds = %41 + %49 = load i32* %i, align 4 ; [#uses=1] + %50 = add nsw i32 %49, 1 ; [#uses=1] + br label %52 + +; <label>:51 ; preds = %41 + br label %52 + +; <label>:52 ; preds = %51, %48 + %53 = phi i32 [ %50, %48 ], [ 0, %51 ] ; [#uses=1] + store i32 %53, i32* %1 + br label %108 + +; <label>:54 ; preds = %23 + %55 = load i32* %i, align 4 ; [#uses=1] + store i32 %55, i32* %1 + br label %108 + +; <label>:56 ; preds = %23 + %57 = load i32* %i, align 4 ; [#uses=1] + %58 = load i8*** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds i8** %58, i32 %57 ; [#uses=1] + %60 = load i8** %59 ; [#uses=1] + %61 = getelementptr inbounds i8* %60, i32 2 ; [#uses=1] + %62 = load i8* %61 ; [#uses=1] + %63 = sext i8 %62 to i32 ; [#uses=1] + %64 = icmp ne i32 %63, 0 ; [#uses=1] + br i1 %64, label %65, label %66 + +; <label>:65 ; preds = %56 + store i32 -1, i32* %1 + br label %108 + +; <label>:66 ; preds = %56 + %67 = load i32** %3, align 4 ; [#uses=1] + store i32 1, i32* %67 + br label %68 + +; <label>:68 ; preds = %66, %23 + %69 = load i32* %i, align 4 ; [#uses=1] + %70 = load i8*** %2, align 4 ; [#uses=1] + %71 = getelementptr inbounds i8** %70, i32 %69 ; [#uses=1] + %72 = load i8** %71 ; [#uses=1] + %73 = getelementptr inbounds i8* %72, i32 2 ; [#uses=1] + %74 = load i8* %73 ; [#uses=1] + %75 = sext i8 %74 to i32 ; [#uses=1] + %76 = icmp ne i32 %75, 0 ; [#uses=1] + br i1 %76, label %77, label %78 + +; <label>:77 ; preds = %68 + store i32 -1, i32* %1 + br label %108 + +; <label>:78 ; preds = %68 + %79 = load i32** %4, align 4 ; [#uses=1] + store i32 1, i32* %79 + br label %103 + +; <label>:80 ; preds = %23 + %81 = load i32** %5, align 4 ; [#uses=1] + store i32 1, i32* %81 + br label %82 + +; <label>:82 ; preds = %80, %23 + %83 = load i32* %i, align 4 ; [#uses=1] + %84 = load i8*** %2, align 4 ; [#uses=1] + %85 = getelementptr inbounds i8** %84, i32 %83 ; [#uses=1] + %86 = load i8** %85 ; [#uses=1] + %87 = getelementptr inbounds i8* %86, i32 2 ; [#uses=1] + %88 = load i8* %87 ; [#uses=1] + %89 = sext i8 %88 to i32 ; [#uses=1] + %90 = icmp eq i32 %89, 0 ; [#uses=1] + br i1 %90, label %91, label %101 + +; <label>:91 ; preds = %82 + %92 = load i32* %i, align 4 ; [#uses=1] + %93 = add nsw i32 %92, 1 ; [#uses=1] + store i32 %93, i32* %i, align 4 + %94 = load i32* %i, align 4 ; [#uses=1] + %95 = load i8*** %2, align 4 ; [#uses=1] + %96 = getelementptr inbounds i8** %95, i32 %94 ; [#uses=1] + %97 = load i8** %96 ; [#uses=1] + %98 = icmp eq i8* %97, null ; [#uses=1] + br i1 %98, label %99, label %100 + +; <label>:99 ; preds = %91 + store i32 -1, i32* %1 + br label %108 + +; <label>:100 ; preds = %91 + br label %101 + +; <label>:101 ; preds = %100, %82 + br label %103 + +; <label>:102 ; preds = %23 + store i32 -1, i32* %1 + br label %108 + +; <label>:103 ; preds = %101, %78 + br label %104 + +; <label>:104 ; preds = %103 + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = add nsw i32 %105, 1 ; [#uses=1] + store i32 %106, i32* %i, align 4 + br label %6 + +; <label>:107 ; preds = %6 + store i32 0, i32* %1 + br label %108 + +; <label>:108 ; preds = %107, %102, %99, %77, %65, %54, %52, %40, %21 + %109 = load i32* %1 ; [#uses=1] + ret i32 %109 +} + +; [#uses=1] +define internal void @_Z11print_usagev() { + %1 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %2 = load i8** @_ZL8progname, align 4 ; [#uses=1] + %3 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %1, i8* getelementptr inbounds ([307 x i8]* @.str23, i32 0, i32 0), i8* %2) ; [#uses=0] + %4 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %5 = call i32 @fflush(%struct._IO_FILE* %4) ; [#uses=0] + ret void +} + +; [#uses=2] +define internal void @_Z13print_versionv() { + call void @_Z9l_messagePKcS0_(i8* null, i8* getelementptr inbounds ([52 x i8]* @.str22, i32 0, i32 0)) + ret void +} + +; [#uses=1] +define internal i32 @_Z7runargsP9lua_StatePPci(%struct.lua_State* %L, i8** %argv, i32 %n) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i8**, align 4 ; [#uses=7] + %4 = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=12] + %chunk = alloca i8*, align 4 ; [#uses=4] + %filename = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8** %argv, i8*** %3, align 4 + store i32 %n, i32* %4, align 4 + store i32 1, i32* %i, align 4 + br label %5 + +; <label>:5 ; preds = %72, %0 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load i32* %4, align 4 ; [#uses=1] + %8 = icmp slt i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %75 + +; <label>:9 ; preds = %5 + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = load i8*** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds i8** %11, i32 %10 ; [#uses=1] + %13 = load i8** %12 ; [#uses=1] + %14 = icmp eq i8* %13, null ; [#uses=1] + br i1 %14, label %15, label %16 + +; <label>:15 ; preds = %9 + br label %72 + +; <label>:16 ; preds = %9 + %17 = load i32* %i, align 4 ; [#uses=1] + %18 = load i8*** %3, align 4 ; [#uses=1] + %19 = getelementptr inbounds i8** %18, i32 %17 ; [#uses=1] + %20 = load i8** %19 ; [#uses=1] + %21 = getelementptr inbounds i8* %20, i32 1 ; [#uses=1] + %22 = load i8* %21 ; [#uses=1] + %23 = sext i8 %22 to i32 ; [#uses=1] + switch i32 %23, label %70 [ + i32 101, label %24 + i32 108, label %47 + ] + +; <label>:24 ; preds = %16 + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = load i8*** %3, align 4 ; [#uses=1] + %27 = getelementptr inbounds i8** %26, i32 %25 ; [#uses=1] + %28 = load i8** %27 ; [#uses=1] + %29 = getelementptr inbounds i8* %28, i32 2 ; [#uses=1] + store i8* %29, i8** %chunk, align 4 + %30 = load i8** %chunk, align 4 ; [#uses=1] + %31 = load i8* %30 ; [#uses=1] + %32 = sext i8 %31 to i32 ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %40 + +; <label>:34 ; preds = %24 + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = add nsw i32 %35, 1 ; [#uses=2] + store i32 %36, i32* %i, align 4 + %37 = load i8*** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds i8** %37, i32 %36 ; [#uses=1] + %39 = load i8** %38 ; [#uses=1] + store i8* %39, i8** %chunk, align 4 + br label %40 + +; <label>:40 ; preds = %34, %24 + %41 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %42 = load i8** %chunk, align 4 ; [#uses=1] + %43 = call i32 @_Z8dostringP9lua_StatePKcS2_(%struct.lua_State* %41, i8* %42, i8* getelementptr inbounds ([16 x i8]* @.str20, i32 0, i32 0)) ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %46 + +; <label>:45 ; preds = %40 + store i32 1, i32* %1 + br label %76 + +; <label>:46 ; preds = %40 + br label %71 + +; <label>:47 ; preds = %16 + %48 = load i32* %i, align 4 ; [#uses=1] + %49 = load i8*** %3, align 4 ; [#uses=1] + %50 = getelementptr inbounds i8** %49, i32 %48 ; [#uses=1] + %51 = load i8** %50 ; [#uses=1] + %52 = getelementptr inbounds i8* %51, i32 2 ; [#uses=1] + store i8* %52, i8** %filename, align 4 + %53 = load i8** %filename, align 4 ; [#uses=1] + %54 = load i8* %53 ; [#uses=1] + %55 = sext i8 %54 to i32 ; [#uses=1] + %56 = icmp eq i32 %55, 0 ; [#uses=1] + br i1 %56, label %57, label %63 + +; <label>:57 ; preds = %47 + %58 = load i32* %i, align 4 ; [#uses=1] + %59 = add nsw i32 %58, 1 ; [#uses=2] + store i32 %59, i32* %i, align 4 + %60 = load i8*** %3, align 4 ; [#uses=1] + %61 = getelementptr inbounds i8** %60, i32 %59 ; [#uses=1] + %62 = load i8** %61 ; [#uses=1] + store i8* %62, i8** %filename, align 4 + br label %63 + +; <label>:63 ; preds = %57, %47 + %64 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %65 = load i8** %filename, align 4 ; [#uses=1] + %66 = call i32 @_Z9dolibraryP9lua_StatePKc(%struct.lua_State* %64, i8* %65) ; [#uses=1] + %67 = icmp ne i32 %66, 0 ; [#uses=1] + br i1 %67, label %68, label %69 + +; <label>:68 ; preds = %63 + store i32 1, i32* %1 + br label %76 + +; <label>:69 ; preds = %63 + br label %71 + +; <label>:70 ; preds = %16 + br label %71 + +; <label>:71 ; preds = %70, %69, %46 + br label %72 + +; <label>:72 ; preds = %71, %15 + %73 = load i32* %i, align 4 ; [#uses=1] + %74 = add nsw i32 %73, 1 ; [#uses=1] + store i32 %74, i32* %i, align 4 + br label %5 + +; <label>:75 ; preds = %5 + store i32 0, i32* %1 + br label %76 + +; <label>:76 ; preds = %75, %68, %45 + %77 = load i32* %1 ; [#uses=1] + ret i32 %77 +} + +; [#uses=1] +define internal i32 @_Z13handle_scriptP9lua_StatePPci(%struct.lua_State* %L, i8** %argv, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca i8**, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=4] + %status = alloca i32, align 4 ; [#uses=4] + %fname = alloca i8*, align 4 ; [#uses=4] + %narg = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8** %argv, i8*** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8*** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call i32 @_Z7getargsP9lua_StatePPci(%struct.lua_State* %4, i8** %5, i32 %6) ; [#uses=1] + store i32 %7, i32* %narg, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %8, i32 -10002, i8* getelementptr inbounds ([4 x i8]* @.str16, i32 0, i32 0)) + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = load i8*** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8** %10, i32 %9 ; [#uses=1] + %12 = load i8** %11 ; [#uses=1] + store i8* %12, i8** %fname, align 4 + %13 = load i8** %fname, align 4 ; [#uses=1] + %14 = call i32 @strcmp(i8* %13, i8* getelementptr inbounds ([2 x i8]* @.str17, i32 0, i32 0)) nounwind readonly ; [#uses=1] + %15 = icmp eq i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %25 + +; <label>:16 ; preds = %0 + %17 = load i32* %3, align 4 ; [#uses=1] + %18 = sub nsw i32 %17, 1 ; [#uses=1] + %19 = load i8*** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8** %19, i32 %18 ; [#uses=1] + %21 = load i8** %20 ; [#uses=1] + %22 = call i32 @strcmp(i8* %21, i8* getelementptr inbounds ([3 x i8]* @.str18, i32 0, i32 0)) nounwind readonly ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %25 + +; <label>:24 ; preds = %16 + store i8* null, i8** %fname, align 4 + br label %25 + +; <label>:25 ; preds = %24, %16, %0 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = load i8** %fname, align 4 ; [#uses=1] + %28 = call i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %26, i8* %27) ; [#uses=1] + store i32 %28, i32* %status, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load i32* %narg, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + %32 = sub nsw i32 0, %31 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %29, i32 %32) + %33 = load i32* %status, align 4 ; [#uses=1] + %34 = icmp eq i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %39 + +; <label>:35 ; preds = %25 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %37 = load i32* %narg, align 4 ; [#uses=1] + %38 = call i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %36, i32 %37, i32 0) ; [#uses=1] + store i32 %38, i32* %status, align 4 + br label %44 + +; <label>:39 ; preds = %25 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = load i32* %narg, align 4 ; [#uses=1] + %42 = sub nsw i32 0, %41 ; [#uses=1] + %43 = sub nsw i32 %42, 1 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %40, i32 %43) + br label %44 + +; <label>:44 ; preds = %39, %35 + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = load i32* %status, align 4 ; [#uses=1] + %47 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %45, i32 %46) ; [#uses=1] + ret i32 %47 +} + +; [#uses=2] +define internal void @_Z5dottyP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %status = alloca i32, align 4 ; [#uses=5] + %oldprogname = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load i8** @_ZL8progname, align 4 ; [#uses=1] + store i8* %2, i8** %oldprogname, align 4 + store i8* null, i8** @_ZL8progname, align 4 + br label %3 + +; <label>:3 ; preds = %39, %0 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8loadlineP9lua_State(%struct.lua_State* %4) ; [#uses=2] + store i32 %5, i32* %status, align 4 + %6 = icmp ne i32 %5, -1 ; [#uses=1] + br i1 %6, label %7, label %40 + +; <label>:7 ; preds = %3 + %8 = load i32* %status, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %7 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %11, i32 0, i32 0) ; [#uses=1] + store i32 %12, i32* %status, align 4 + br label %13 + +; <label>:13 ; preds = %10, %7 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %status, align 4 ; [#uses=1] + %16 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %14, i32 %15) ; [#uses=0] + %17 = load i32* %status, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %39 + +; <label>:19 ; preds = %13 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %20) ; [#uses=1] + %22 = icmp sgt i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %39 + +; <label>:23 ; preds = %19 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %24, i32 -10002, i8* getelementptr inbounds ([6 x i8]* @.str3, i32 0, i32 0)) + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %25, i32 1) + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %27) ; [#uses=1] + %29 = sub nsw i32 %28, 1 ; [#uses=1] + %30 = call i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %26, i32 %29, i32 0, i32 0) ; [#uses=1] + %31 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %31, label %32, label %38 + +; <label>:32 ; preds = %23 + %33 = load i8** @_ZL8progname, align 4 ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %35, i32 -1, i32* null) ; [#uses=1] + %37 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %34, i8* getelementptr inbounds ([27 x i8]* @.str4, i32 0, i32 0), i8* %36) ; [#uses=1] + call void @_Z9l_messagePKcS0_(i8* %33, i8* %37) + br label %38 + +; <label>:38 ; preds = %32, %23 + br label %39 + +; <label>:39 ; preds = %38, %19, %13 + br label %3 + +; <label>:40 ; preds = %3 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %41, i32 0) + %42 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %43 = call i32 @fputs(i8* getelementptr inbounds ([2 x i8]* @.str5, i32 0, i32 0), %struct._IO_FILE* %42) ; [#uses=0] + %44 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %45 = call i32 @fflush(%struct._IO_FILE* %44) ; [#uses=0] + %46 = load i8** %oldprogname, align 4 ; [#uses=1] + store i8* %46, i8** @_ZL8progname, align 4 + ret void +} + +; [#uses=1] +define internal i32 @_Z8loadlineP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %status = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %3, i32 0) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z8pushlineP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %8, label %7 + +; <label>:7 ; preds = %0 + store i32 -1, i32* %1 + br label %33 + +; <label>:8 ; preds = %0 + br label %9 + +; <label>:9 ; preds = %26, %8 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %11, i32 1, i32* null) ; [#uses=1] + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %13, i32 1) ; [#uses=1] + %15 = call i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %10, i8* %12, i32 %14, i8* getelementptr inbounds ([7 x i8]* @.str9, i32 0, i32 0)) ; [#uses=1] + store i32 %15, i32* %status, align 4 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load i32* %status, align 4 ; [#uses=1] + %18 = call i32 @_Z10incompleteP9lua_Statei(%struct.lua_State* %16, i32 %17) ; [#uses=1] + %19 = icmp ne i32 %18, 0 ; [#uses=1] + br i1 %19, label %21, label %20 + +; <label>:20 ; preds = %9 + br label %30 + +; <label>:21 ; preds = %9 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = call i32 @_Z8pushlineP9lua_Statei(%struct.lua_State* %22, i32 0) ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %24, label %26, label %25 + +; <label>:25 ; preds = %21 + store i32 -1, i32* %1 + br label %33 + +; <label>:26 ; preds = %21 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %27, i8* getelementptr inbounds ([2 x i8]* @.str5, i32 0, i32 0), i32 1) + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %28, i32 -2) + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %29, i32 3) + br label %9 + +; <label>:30 ; preds = %20 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %31, i32 1) + %32 = load i32* %status, align 4 ; [#uses=1] + store i32 %32, i32* %1 + br label %33 + +; <label>:33 ; preds = %30, %25, %7 + %34 = load i32* %1 ; [#uses=1] + ret i32 %34 +} + +; [#uses=5] +define internal i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %L, i32 %narg, i32 %clear) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=3] + %base = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i32 %clear, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %4) ; [#uses=1] + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = sub nsw i32 %5, %6 ; [#uses=1] + store i32 %7, i32* %base, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %8, i32 (%struct.lua_State*)* @_Z9tracebackP9lua_State, i32 0) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %base, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %9, i32 %10) + %11 = call void (i32)* (i32, void (i32)*)* @signal(i32 2, void (i32)* @_Z7lactioni) nounwind ; [#uses=0] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %17 + +; <label>:16 ; preds = %0 + br label %18 + +; <label>:17 ; preds = %0 + br label %18 + +; <label>:18 ; preds = %17, %16 + %19 = phi i32 [ 0, %16 ], [ -1, %17 ] ; [#uses=1] + %20 = load i32* %base, align 4 ; [#uses=1] + %21 = call i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %12, i32 %13, i32 %19, i32 %20) ; [#uses=1] + store i32 %21, i32* %status, align 4 + %22 = call void (i32)* (i32, void (i32)*)* @signal(i32 2, void (i32)* null) nounwind ; [#uses=0] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load i32* %base, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %23, i32 %24) + %25 = load i32* %status, align 4 ; [#uses=1] + %26 = icmp ne i32 %25, 0 ; [#uses=1] + br i1 %26, label %27, label %30 + +; <label>:27 ; preds = %18 + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %28, i32 2, i32 0) ; [#uses=0] + br label %30 + +; <label>:30 ; preds = %27, %18 + %31 = load i32* %status, align 4 ; [#uses=1] + ret i32 %31 +} + +; [#uses=8] +declare i32 @fputs(i8*, %struct._IO_FILE*) + +; [#uses=6] +declare i32 @fflush(%struct._IO_FILE*) + +; [#uses=1] +define internal i32 @_Z9tracebackP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %7, label %6 + +; <label>:6 ; preds = %0 + store i32 1, i32* %1 + br label %25 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %8, i32 -10002, i8* getelementptr inbounds ([6 x i8]* @.str7, i32 0, i32 0)) + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %9, i32 -1) ; [#uses=1] + %11 = icmp eq i32 %10, 5 ; [#uses=1] + br i1 %11, label %14, label %12 + +; <label>:12 ; preds = %7 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %13, i32 -2) + store i32 1, i32* %1 + br label %25 + +; <label>:14 ; preds = %7 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %15, i32 -1, i8* getelementptr inbounds ([10 x i8]* @.str8, i32 0, i32 0)) + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %16, i32 -1) ; [#uses=1] + %18 = icmp eq i32 %17, 6 ; [#uses=1] + br i1 %18, label %21, label %19 + +; <label>:19 ; preds = %14 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %20, i32 -3) + store i32 1, i32* %1 + br label %25 + +; <label>:21 ; preds = %14 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %22, i32 1) + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %23, i32 2) + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %24, i32 2, i32 1) + store i32 1, i32* %1 + br label %25 + +; <label>:25 ; preds = %21, %19, %12, %6 + %26 = load i32* %1 ; [#uses=1] + ret i32 %26 +} + +; [#uses=3] +declare void (i32)* @signal(i32, void (i32)*) nounwind + +; [#uses=1] +define internal void @_Z7lactioni(i32 %i) { + %1 = alloca i32, align 4 ; [#uses=2] + store i32 %i, i32* %1, align 4 + %2 = load i32* %1, align 4 ; [#uses=1] + %3 = call void (i32)* (i32, void (i32)*)* @signal(i32 %2, void (i32)* null) nounwind ; [#uses=0] + %4 = load %struct.lua_State** @_ZL7globalL, align 4 ; [#uses=1] + %5 = call i32 @_Z11lua_sethookP9lua_StatePFvS0_P9lua_DebugEii(%struct.lua_State* %4, void (%struct.lua_State*, %struct.lua_Debug*)* @_Z5lstopP9lua_StateP9lua_Debug, i32 11, i32 1) ; [#uses=0] + ret void +} + +; [#uses=1] +define internal void @_Z5lstopP9lua_StateP9lua_Debug(%struct.lua_State* %L, %struct.lua_Debug* %ar) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_Debug*, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z11lua_sethookP9lua_StatePFvS0_P9lua_DebugEii(%struct.lua_State* %3, void (%struct.lua_State*, %struct.lua_Debug*)* null, i32 0, i32 0) ; [#uses=0] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %5, i8* getelementptr inbounds ([13 x i8]* @.str6, i32 0, i32 0)) ; [#uses=0] + ret void +} + +; [#uses=2] +define internal i32 @_Z8pushlineP9lua_Statei(%struct.lua_State* %L, i32 %firstline) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=3] + %buffer = alloca [512 x i8], align 1 ; [#uses=1] + %b = alloca i8*, align 4 ; [#uses=8] + %l = alloca i32, align 4 ; [#uses=4] + %prmt = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %firstline, i32* %3, align 4 + %4 = getelementptr inbounds [512 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] + store i8* %4, i8** %b, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call i8* @_Z10get_promptP9lua_Statei(%struct.lua_State* %5, i32 %6) ; [#uses=1] + store i8* %7, i8** %prmt, align 4 + %8 = load i8** %prmt, align 4 ; [#uses=1] + %9 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %10 = call i32 @fputs(i8* %8, %struct._IO_FILE* %9) ; [#uses=0] + %11 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %12 = call i32 @fflush(%struct._IO_FILE* %11) ; [#uses=0] + %13 = load i8** %b, align 4 ; [#uses=1] + %14 = load %struct._IO_FILE** @stdin, align 4 ; [#uses=1] + %15 = call i8* @fgets(i8* %13, i32 512, %struct._IO_FILE* %14) ; [#uses=1] + %16 = icmp ne i8* %15, null ; [#uses=1] + %17 = zext i1 %16 to i32 ; [#uses=1] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %20 + +; <label>:19 ; preds = %0 + store i32 0, i32* %1 + br label %56 + +; <label>:20 ; preds = %0 + %21 = load i8** %b, align 4 ; [#uses=1] + %22 = call i32 @strlen(i8* %21) ; [#uses=1] + store i32 %22, i32* %l, align 4 + %23 = load i32* %l, align 4 ; [#uses=1] + %24 = icmp ugt i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %38 + +; <label>:25 ; preds = %20 + %26 = load i32* %l, align 4 ; [#uses=1] + %27 = sub i32 %26, 1 ; [#uses=1] + %28 = load i8** %b, align 4 ; [#uses=1] + %29 = getelementptr inbounds i8* %28, i32 %27 ; [#uses=1] + %30 = load i8* %29 ; [#uses=1] + %31 = sext i8 %30 to i32 ; [#uses=1] + %32 = icmp eq i32 %31, 10 ; [#uses=1] + br i1 %32, label %33, label %38 + +; <label>:33 ; preds = %25 + %34 = load i32* %l, align 4 ; [#uses=1] + %35 = sub i32 %34, 1 ; [#uses=1] + %36 = load i8** %b, align 4 ; [#uses=1] + %37 = getelementptr inbounds i8* %36, i32 %35 ; [#uses=1] + store i8 0, i8* %37 + br label %38 + +; <label>:38 ; preds = %33, %25, %20 + %39 = load i32* %3, align 4 ; [#uses=1] + %40 = icmp ne i32 %39, 0 ; [#uses=1] + br i1 %40, label %41, label %52 + +; <label>:41 ; preds = %38 + %42 = load i8** %b, align 4 ; [#uses=1] + %43 = getelementptr inbounds i8* %42, i32 0 ; [#uses=1] + %44 = load i8* %43 ; [#uses=1] + %45 = sext i8 %44 to i32 ; [#uses=1] + %46 = icmp eq i32 %45, 61 ; [#uses=1] + br i1 %46, label %47, label %52 + +; <label>:47 ; preds = %41 + %48 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %49 = load i8** %b, align 4 ; [#uses=1] + %50 = getelementptr inbounds i8* %49, i32 1 ; [#uses=1] + %51 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %48, i8* getelementptr inbounds ([10 x i8]* @.str11, i32 0, i32 0), i8* %50) ; [#uses=0] + br label %55 + +; <label>:52 ; preds = %41, %38 + %53 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %54 = load i8** %b, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %53, i8* %54) + br label %55 + +; <label>:55 ; preds = %52, %47 + store i32 1, i32* %1 + br label %56 + +; <label>:56 ; preds = %55, %19 + %57 = load i32* %1 ; [#uses=1] + ret i32 %57 +} + +; [#uses=1] +define internal i32 @_Z10incompleteP9lua_Statei(%struct.lua_State* %L, i32 %status) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %lmsg = alloca i32, align 4 ; [#uses=2] + %msg = alloca i8*, align 4 ; [#uses=3] + %tp = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %status, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 3 ; [#uses=1] + br i1 %5, label %6, label %20 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %7, i32 -1, i32* %lmsg) ; [#uses=1] + store i8* %8, i8** %msg, align 4 + %9 = load i8** %msg, align 4 ; [#uses=1] + %10 = load i32* %lmsg, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %9, i32 %10 ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 -7 ; [#uses=1] + store i8* %12, i8** %tp, align 4 + %13 = load i8** %msg, align 4 ; [#uses=1] + %14 = call i8* @strstr(i8* %13, i8* getelementptr inbounds ([8 x i8]* @.str10, i32 0, i32 0)) ; [#uses=1] + %15 = load i8** %tp, align 4 ; [#uses=1] + %16 = icmp eq i8* %14, %15 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %6 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %18, i32 -2) + store i32 1, i32* %1 + br label %21 + +; <label>:19 ; preds = %6 + br label %20 + +; <label>:20 ; preds = %19, %0 + store i32 0, i32* %1 + br label %21 + +; <label>:21 ; preds = %20, %17 + %22 = load i32* %1 ; [#uses=1] + ret i32 %22 +} + +; [#uses=2] +declare i8* @strstr(i8*, i8*) nounwind readonly + +; [#uses=1] +define internal i8* @_Z10get_promptP9lua_Statei(%struct.lua_State* %L, i32 %firstline) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=3] + %p = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %firstline, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %7 + +; <label>:6 ; preds = %0 + br label %8 + +; <label>:7 ; preds = %0 + br label %8 + +; <label>:8 ; preds = %7, %6 + %9 = phi i8* [ getelementptr inbounds ([8 x i8]* @.str12, i32 0, i32 0), %6 ], [ getelementptr inbounds ([9 x i8]* @.str13, i32 0, i32 0), %7 ] ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -10002, i8* %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %10, i32 -1, i32* null) ; [#uses=1] + store i8* %11, i8** %p, align 4 + %12 = load i8** %p, align 4 ; [#uses=1] + %13 = icmp eq i8* %12, null ; [#uses=1] + br i1 %13, label %14, label %21 + +; <label>:14 ; preds = %8 + %15 = load i32* %2, align 4 ; [#uses=1] + %16 = icmp ne i32 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %18 + +; <label>:17 ; preds = %14 + br label %19 + +; <label>:18 ; preds = %14 + br label %19 + +; <label>:19 ; preds = %18, %17 + %20 = phi i8* [ getelementptr inbounds ([3 x i8]* @.str14, i32 0, i32 0), %17 ], [ getelementptr inbounds ([4 x i8]* @.str15, i32 0, i32 0), %18 ] ; [#uses=1] + store i8* %20, i8** %p, align 4 + br label %21 + +; <label>:21 ; preds = %19, %8 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %22, i32 -2) + %23 = load i8** %p, align 4 ; [#uses=1] + ret i8* %23 +} + +; [#uses=3] +declare i8* @fgets(i8*, i32, %struct._IO_FILE*) + +; [#uses=23] +declare i32 @strlen(i8*) nounwind readonly + +; [#uses=1] +define internal i32 @_Z7getargsP9lua_StatePPci(%struct.lua_State* %L, i8** %argv, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i8**, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=5] + %narg = alloca i32, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=11] + %argc = alloca i32, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8** %argv, i8*** %2, align 4 + store i32 %n, i32* %3, align 4 + store i32 0, i32* %argc, align 4 + br label %4 + +; <label>:4 ; preds = %10, %0 + %5 = load i32* %argc, align 4 ; [#uses=1] + %6 = load i8*** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds i8** %6, i32 %5 ; [#uses=1] + %8 = load i8** %7 ; [#uses=1] + %9 = icmp ne i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %4 + %11 = load i32* %argc, align 4 ; [#uses=1] + %12 = add nsw i32 %11, 1 ; [#uses=1] + store i32 %12, i32* %argc, align 4 + br label %4 + +; <label>:13 ; preds = %4 + %14 = load i32* %argc, align 4 ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + %17 = sub nsw i32 %14, %16 ; [#uses=1] + store i32 %17, i32* %narg, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i32* %narg, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 3 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %18, i32 %20, i8* getelementptr inbounds ([29 x i8]* @.str19, i32 0, i32 0)) + %21 = load i32* %3, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + store i32 %22, i32* %i, align 4 + br label %23 + +; <label>:23 ; preds = %33, %13 + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = load i32* %argc, align 4 ; [#uses=1] + %26 = icmp slt i32 %24, %25 ; [#uses=1] + br i1 %26, label %27, label %36 + +; <label>:27 ; preds = %23 + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = load i32* %i, align 4 ; [#uses=1] + %30 = load i8*** %2, align 4 ; [#uses=1] + %31 = getelementptr inbounds i8** %30, i32 %29 ; [#uses=1] + %32 = load i8** %31 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %28, i8* %32) + br label %33 + +; <label>:33 ; preds = %27 + %34 = load i32* %i, align 4 ; [#uses=1] + %35 = add nsw i32 %34, 1 ; [#uses=1] + store i32 %35, i32* %i, align 4 + br label %23 + +; <label>:36 ; preds = %23 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = load i32* %narg, align 4 ; [#uses=1] + %39 = load i32* %3, align 4 ; [#uses=1] + %40 = add nsw i32 %39, 1 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %37, i32 %38, i32 %40) + store i32 0, i32* %i, align 4 + br label %41 + +; <label>:41 ; preds = %55, %36 + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = load i32* %argc, align 4 ; [#uses=1] + %44 = icmp slt i32 %42, %43 ; [#uses=1] + br i1 %44, label %45, label %58 + +; <label>:45 ; preds = %41 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = load i32* %i, align 4 ; [#uses=1] + %48 = load i8*** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds i8** %48, i32 %47 ; [#uses=1] + %50 = load i8** %49 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %46, i8* %50) + %51 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %52 = load i32* %i, align 4 ; [#uses=1] + %53 = load i32* %3, align 4 ; [#uses=1] + %54 = sub nsw i32 %52, %53 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %51, i32 -2, i32 %54) + br label %55 + +; <label>:55 ; preds = %45 + %56 = load i32* %i, align 4 ; [#uses=1] + %57 = add nsw i32 %56, 1 ; [#uses=1] + store i32 %57, i32* %i, align 4 + br label %41 + +; <label>:58 ; preds = %41 + %59 = load i32* %narg, align 4 ; [#uses=1] + ret i32 %59 +} + +; [#uses=6] +declare i32 @strcmp(i8*, i8*) nounwind readonly + +; [#uses=2] +define internal i32 @_Z8dostringP9lua_StatePKcS2_(%struct.lua_State* %L, i8* %s, i8* %name) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %s, i8** %2, align 4 + store i8* %name, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = call i32 @strlen(i8* %6) ; [#uses=1] + %8 = load i8** %3, align 4 ; [#uses=1] + %9 = call i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %4, i8* %5, i32 %7, i8* %8) ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br i1 %10, label %15, label %11 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %12, i32 0, i32 1) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br label %15 + +; <label>:15 ; preds = %11, %0 + %16 = phi i1 [ true, %0 ], [ %14, %11 ] ; [#uses=1] + %17 = zext i1 %16 to i32 ; [#uses=1] + store i32 %17, i32* %status, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i32* %status, align 4 ; [#uses=1] + %20 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %18, i32 %19) ; [#uses=1] + ret i32 %20 +} + +; [#uses=1] +define internal i32 @_Z9dolibraryP9lua_StatePKc(%struct.lua_State* %L, i8* %name) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %name, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -10002, i8* getelementptr inbounds ([8 x i8]* @.str21, i32 0, i32 0)) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %4, i8* %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %7, i32 1, i32 1) ; [#uses=1] + %9 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %6, i32 %8) ; [#uses=1] + ret i32 %9 +} + +; [#uses=5] +declare i32 @fprintf(%struct._IO_FILE*, i8*, ...) + +; [#uses=3] +declare i8* @getenv(i8*) nounwind + +; [#uses=1] +define internal i32 @_Z6dofileP9lua_StatePKc(%struct.lua_State* %L, i8* %name) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %name, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %3, i8* %4) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %11, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 @_Z6docallP9lua_Stateii(%struct.lua_State* %8, i32 0, i32 1) ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br label %11 + +; <label>:11 ; preds = %7, %0 + %12 = phi i1 [ true, %0 ], [ %10, %7 ] ; [#uses=1] + %13 = zext i1 %12 to i32 ; [#uses=1] + store i32 %13, i32* %status, align 4 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %status, align 4 ; [#uses=1] + %16 = call i32 @_Z6reportP9lua_Statei(%struct.lua_State* %14, i32 %15) ; [#uses=1] + ret i32 %16 +} + +; [#uses=1] +define hidden void @_Z15luaA_pushobjectP9lua_StatePK10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %o) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %3, %struct.lua_TValue** %o2, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o1, align 4 + %7 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 0 ; [#uses=1] + %11 = bitcast %union.anon* %8 to i8* ; [#uses=1] + %12 = bitcast %union.anon* %10 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %11, i8* %12, i32 8, i32 4, i1 false) + %13 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 1 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 1 ; [#uses=1] + store i32 %15, i32* %17, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=2] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 1 ; [#uses=1] + store %struct.lua_TValue* %21, %struct.lua_TValue** %19, align 4 + ret void +} + +; [#uses=68] +declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind + +; [#uses=4] +define i32 @_Z14lua_checkstackP9lua_Statei(%struct.lua_State* %L, i32 %size) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %2 = alloca i32, align 4 ; [#uses=8] + %res = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %size, i32* %2, align 4 + store i32 1, i32* %res, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp sgt i32 %3, 8000 ; [#uses=1] + br i1 %4, label %19, label %5 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 5 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = ptrtoint %struct.lua_TValue* %8 to i32 ; [#uses=1] + %13 = ptrtoint %struct.lua_TValue* %11 to i32 ; [#uses=1] + %14 = sub i32 %12, %13 ; [#uses=1] + %15 = sdiv exact i32 %14, 12 ; [#uses=1] + %16 = load i32* %2, align 4 ; [#uses=1] + %17 = add nsw i32 %15, %16 ; [#uses=1] + %18 = icmp sgt i32 %17, 8000 ; [#uses=1] + br i1 %18, label %19, label %20 + +; <label>:19 ; preds = %5, %0 + store i32 0, i32* %res, align 4 + br label %66 + +; <label>:20 ; preds = %5 + %21 = load i32* %2, align 4 ; [#uses=1] + %22 = icmp sgt i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %65 + +; <label>:23 ; preds = %20 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_State* %24, i32 0, i32 9 ; [#uses=1] + %26 = load %struct.lua_TValue** %25, align 4 ; [#uses=1] + %27 = bitcast %struct.lua_TValue* %26 to i8* ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %29, align 4 ; [#uses=1] + %31 = bitcast %struct.lua_TValue* %30 to i8* ; [#uses=1] + %32 = ptrtoint i8* %27 to i32 ; [#uses=1] + %33 = ptrtoint i8* %31 to i32 ; [#uses=1] + %34 = sub i32 %32, %33 ; [#uses=1] + %35 = load i32* %2, align 4 ; [#uses=1] + %36 = mul nsw i32 %35, 12 ; [#uses=1] + %37 = icmp sle i32 %34, %36 ; [#uses=1] + br i1 %37, label %38, label %41 + +; <label>:38 ; preds = %23 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = load i32* %2, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %39, i32 %40) + br label %42 + +; <label>:41 ; preds = %23 + br label %42 + +; <label>:42 ; preds = %41, %38 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 7 ; [#uses=1] + %45 = load %struct.CallInfo** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.CallInfo* %45, i32 0, i32 2 ; [#uses=1] + %47 = load %struct.lua_TValue** %46, align 4 ; [#uses=1] + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 4 ; [#uses=1] + %50 = load %struct.lua_TValue** %49, align 4 ; [#uses=1] + %51 = load i32* %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %50, i32 %51 ; [#uses=1] + %53 = icmp ult %struct.lua_TValue* %47, %52 ; [#uses=1] + br i1 %53, label %54, label %64 + +; <label>:54 ; preds = %42 + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 4 ; [#uses=1] + %57 = load %struct.lua_TValue** %56, align 4 ; [#uses=1] + %58 = load i32* %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %57, i32 %58 ; [#uses=1] + %60 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 7 ; [#uses=1] + %62 = load %struct.CallInfo** %61, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.CallInfo* %62, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %59, %struct.lua_TValue** %63, align 4 + br label %64 + +; <label>:64 ; preds = %54, %42 + br label %65 + +; <label>:65 ; preds = %64, %20 + br label %66 + +; <label>:66 ; preds = %65, %19 + %67 = load i32* %res, align 4 ; [#uses=1] + ret i32 %67 +} + +; [#uses=8] +define void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %from, %struct.lua_State* %to, i32 %n) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=5] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %from, %struct.lua_State** %1, align 4 + store %struct.lua_State* %to, %struct.lua_State** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = icmp eq %struct.lua_State* %4, %5 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + br label %43 + +; <label>:8 ; preds = %0 + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 4 ; [#uses=2] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = sub i32 0, %9 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %12, i32 %13 ; [#uses=1] + store %struct.lua_TValue* %14, %struct.lua_TValue** %11, align 4 + store i32 0, i32* %i, align 4 + br label %15 + +; <label>:15 ; preds = %40, %8 + %16 = load i32* %i, align 4 ; [#uses=1] + %17 = load i32* %3, align 4 ; [#uses=1] + %18 = icmp slt i32 %16, %17 ; [#uses=1] + br i1 %18, label %19, label %43 + +; <label>:19 ; preds = %15 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 4 ; [#uses=1] + %22 = load %struct.lua_TValue** %21, align 4 ; [#uses=1] + %23 = load i32* %i, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %22, i32 %23 ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %o2, align 4 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 4 ; [#uses=2] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=2] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 1 ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %26, align 4 + store %struct.lua_TValue* %27, %struct.lua_TValue** %o1, align 4 + %29 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 0 ; [#uses=1] + %31 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 0 ; [#uses=1] + %33 = bitcast %union.anon* %30 to i8* ; [#uses=1] + %34 = bitcast %union.anon* %32 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %33, i8* %34, i32 8, i32 4, i1 false) + %35 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 1 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 0, i32 1 ; [#uses=1] + store i32 %37, i32* %39, align 4 + br label %40 + +; <label>:40 ; preds = %19 + %41 = load i32* %i, align 4 ; [#uses=1] + %42 = add nsw i32 %41, 1 ; [#uses=1] + store i32 %42, i32* %i, align 4 + br label %15 + +; <label>:43 ; preds = %15, %7 + ret void +} + +; [#uses=1] +define void @_Z12lua_setlevelP9lua_StateS0_(%struct.lua_State* %from, %struct.lua_State* %to) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %from, %struct.lua_State** %1, align 4 + store %struct.lua_State* %to, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 15 ; [#uses=1] + %5 = load i16* %4, align 2 ; [#uses=1] + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 15 ; [#uses=1] + store i16 %5, i16* %7, align 2 + ret void +} + +; [#uses=1] +define i32 (%struct.lua_State*)* @_Z11lua_atpanicP9lua_StatePFiS0_E(%struct.lua_State* %L, i32 (%struct.lua_State*)* %panicf) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + %old = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 (%struct.lua_State*)* %panicf, i32 (%struct.lua_State*)** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 19 ; [#uses=1] + %7 = load i32 (%struct.lua_State*)** %6, align 4 ; [#uses=1] + store i32 (%struct.lua_State*)* %7, i32 (%struct.lua_State*)** %old, align 4 + %8 = load i32 (%struct.lua_State*)** %2, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.global_State** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 19 ; [#uses=1] + store i32 (%struct.lua_State*)* %8, i32 (%struct.lua_State*)** %12, align 4 + %13 = load i32 (%struct.lua_State*)** %old, align 4 ; [#uses=1] + ret i32 (%struct.lua_State*)* %13 +} + +; [#uses=1] +define %struct.lua_State* @_Z13lua_newthreadP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.global_State* %4, i32 0, i32 14 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 6 ; [#uses=1] + %9 = load %struct.global_State** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.global_State* %9, i32 0, i32 13 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp uge i32 %6, %11 ; [#uses=1] + br i1 %12, label %13, label %15 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %14) + br label %15 + +; <label>:15 ; preds = %13, %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call %struct.lua_State* @_Z14luaE_newthreadP9lua_State(%struct.lua_State* %16) ; [#uses=1] + store %struct.lua_State* %17, %struct.lua_State** %L1, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %i_o, align 4 + %21 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %22 = bitcast %struct.lua_State* %21 to %union.GCObject* ; [#uses=1] + %23 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast double* %25 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %22, %union.GCObject** %26, align 4 + %27 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 1 ; [#uses=1] + store i32 8, i32* %28, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 4 ; [#uses=2] + %31 = load %struct.lua_TValue** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 1 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %30, align 4 + %33 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + ret %struct.lua_State* %33 +} + +; [#uses=32] +define i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 4 ; [#uses=1] + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.lua_TValue** %6, align 4 ; [#uses=1] + %8 = ptrtoint %struct.lua_TValue* %4 to i32 ; [#uses=1] + %9 = ptrtoint %struct.lua_TValue* %7 to i32 ; [#uses=1] + %10 = sub i32 %8, %9 ; [#uses=1] + %11 = sdiv exact i32 %10, 12 ; [#uses=1] + ret i32 %11 +} + +; [#uses=68] +define void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %L, i32 %idx) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp sge i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %30 + +; <label>:5 ; preds = %0 + br label %6 + +; <label>:6 ; preds = %16, %5 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 4 ; [#uses=1] + %9 = load %struct.lua_TValue** %8, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 5 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %12, i32 %13 ; [#uses=1] + %15 = icmp ult %struct.lua_TValue* %9, %14 ; [#uses=1] + br i1 %15, label %16, label %22 + +; <label>:16 ; preds = %6 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 4 ; [#uses=2] + %19 = load %struct.lua_TValue** %18, align 4 ; [#uses=2] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 1 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %18, align 4 + %21 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %21, align 4 + br label %6 + +; <label>:22 ; preds = %6 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 5 ; [#uses=1] + %25 = load %struct.lua_TValue** %24, align 4 ; [#uses=1] + %26 = load i32* %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %25, i32 %26 ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %29, align 4 + br label %37 + +; <label>:30 ; preds = %0 + %31 = load i32* %2, align 4 ; [#uses=1] + %32 = add nsw i32 %31, 1 ; [#uses=1] + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 4 ; [#uses=2] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 %32 ; [#uses=1] + store %struct.lua_TValue* %36, %struct.lua_TValue** %34, align 4 + br label %37 + +; <label>:37 ; preds = %30, %22 + ret void +} + +; [#uses=13] +define void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %p, align 4 + br label %6 + +; <label>:6 ; preds = %13, %0 + %7 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 1 ; [#uses=2] + store %struct.lua_TValue* %8, %struct.lua_TValue** %p, align 4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = icmp ult %struct.lua_TValue* %8, %11 ; [#uses=1] + br i1 %12, label %13, label %28 + +; <label>:13 ; preds = %6 + %14 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %14, %struct.lua_TValue** %o2, align 4 + %15 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %o1, align 4 + %17 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 0 ; [#uses=1] + %19 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %union.anon* %18 to i8* ; [#uses=1] + %22 = bitcast %union.anon* %20 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %21, i8* %22, i32 8, i32 4, i1 false) + %23 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 1 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 1 ; [#uses=1] + store i32 %25, i32* %27, align 4 + br label %6 + +; <label>:28 ; preds = %6 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 4 ; [#uses=2] + %31 = load %struct.lua_TValue** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %30, align 4 + ret void +} + +; [#uses=40] +define internal %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %L, i32 %idx) nounwind { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=8] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %3 = alloca i32, align 4 ; [#uses=10] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %func = alloca %union.Closure*, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %func1 = alloca %union.Closure*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sgt i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %21 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 5 ; [#uses=1] + %9 = load %struct.lua_TValue** %8, align 4 ; [#uses=1] + %10 = load i32* %3, align 4 ; [#uses=1] + %11 = sub nsw i32 %10, 1 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %9, i32 %11 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %o, align 4 + %13 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 4 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = icmp uge %struct.lua_TValue* %13, %16 ; [#uses=1] + br i1 %17, label %18, label %19 + +; <label>:18 ; preds = %6 + store %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue** %1 + br label %98 + +; <label>:19 ; preds = %6 + %20 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %1 + br label %98 + +; <label>:21 ; preds = %0 + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = icmp sgt i32 %22, -10000 ; [#uses=1] + br i1 %23, label %24, label %30 + +; <label>:24 ; preds = %21 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 4 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = load i32* %3, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %27, i32 %28 ; [#uses=1] + store %struct.lua_TValue* %29, %struct.lua_TValue** %1 + br label %98 + +; <label>:30 ; preds = %21 + %31 = load i32* %3, align 4 ; [#uses=1] + switch i32 %31, label %67 [ + i32 -10000, label %32 + i32 -10001, label %37 + i32 -10002, label %64 + ] + +; <label>:32 ; preds = %30 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 6 ; [#uses=1] + %35 = load %struct.global_State** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.global_State* %35, i32 0, i32 20 ; [#uses=1] + store %struct.lua_TValue* %36, %struct.lua_TValue** %1 + br label %98 + +; <label>:37 ; preds = %30 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_State* %38, i32 0, i32 7 ; [#uses=1] + %40 = load %struct.CallInfo** %39, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.CallInfo* %40, i32 0, i32 1 ; [#uses=1] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 0 ; [#uses=1] + %44 = getelementptr inbounds %union.anon* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast double* %44 to %union.GCObject** ; [#uses=1] + %46 = load %union.GCObject** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %union.GCObject* %46, i32 0, i32 0 ; [#uses=1] + %48 = bitcast %struct.lua_State* %47 to %union.Closure* ; [#uses=1] + store %union.Closure* %48, %union.Closure** %func, align 4 + %49 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 23 ; [#uses=1] + store %struct.lua_TValue* %50, %struct.lua_TValue** %i_o, align 4 + %51 = load %union.Closure** %func, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.Closure* %51, i32 0, i32 0 ; [#uses=1] + %53 = getelementptr inbounds %struct.CClosure* %52, i32 0, i32 6 ; [#uses=1] + %54 = load %struct.Table** %53, align 4 ; [#uses=1] + %55 = bitcast %struct.Table* %54 to %union.GCObject* ; [#uses=1] + %56 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %union.anon* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast double* %58 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %55, %union.GCObject** %59, align 4 + %60 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %61, align 4 + %62 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_State* %62, i32 0, i32 23 ; [#uses=1] + store %struct.lua_TValue* %63, %struct.lua_TValue** %1 + br label %98 + +; <label>:64 ; preds = %30 + %65 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_State* %65, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %66, %struct.lua_TValue** %1 + br label %98 + +; <label>:67 ; preds = %30 + %68 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_State* %68, i32 0, i32 7 ; [#uses=1] + %70 = load %struct.CallInfo** %69, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.CallInfo* %70, i32 0, i32 1 ; [#uses=1] + %72 = load %struct.lua_TValue** %71, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %72, i32 0, i32 0 ; [#uses=1] + %74 = getelementptr inbounds %union.anon* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast double* %74 to %union.GCObject** ; [#uses=1] + %76 = load %union.GCObject** %75, align 4 ; [#uses=1] + %77 = getelementptr inbounds %union.GCObject* %76, i32 0, i32 0 ; [#uses=1] + %78 = bitcast %struct.lua_State* %77 to %union.Closure* ; [#uses=1] + store %union.Closure* %78, %union.Closure** %func1, align 4 + %79 = load i32* %3, align 4 ; [#uses=1] + %80 = sub nsw i32 -10002, %79 ; [#uses=1] + store i32 %80, i32* %3, align 4 + %81 = load i32* %3, align 4 ; [#uses=1] + %82 = load %union.Closure** %func1, align 4 ; [#uses=1] + %83 = getelementptr inbounds %union.Closure* %82, i32 0, i32 0 ; [#uses=1] + %84 = getelementptr inbounds %struct.CClosure* %83, i32 0, i32 4 ; [#uses=1] + %85 = load i8* %84, align 1 ; [#uses=1] + %86 = zext i8 %85 to i32 ; [#uses=1] + %87 = icmp sle i32 %81, %86 ; [#uses=1] + br i1 %87, label %88, label %95 + +; <label>:88 ; preds = %67 + %89 = load i32* %3, align 4 ; [#uses=1] + %90 = sub nsw i32 %89, 1 ; [#uses=1] + %91 = load %union.Closure** %func1, align 4 ; [#uses=1] + %92 = getelementptr inbounds %union.Closure* %91, i32 0, i32 0 ; [#uses=1] + %93 = getelementptr inbounds %struct.CClosure* %92, i32 0, i32 8 ; [#uses=1] + %94 = getelementptr inbounds [1 x %struct.lua_TValue]* %93, i32 0, i32 %90 ; [#uses=1] + br label %96 + +; <label>:95 ; preds = %67 + br label %96 + +; <label>:96 ; preds = %95, %88 + %97 = phi %struct.lua_TValue* [ %94, %88 ], [ bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %95 ] ; [#uses=1] + store %struct.lua_TValue* %97, %struct.lua_TValue** %1 + br label %98 + +; <label>:98 ; preds = %96, %64, %37, %32, %24, %19, %18 + %99 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %99 +} + +; [#uses=15] +define void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %q = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %p, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + store %struct.lua_TValue* %8, %struct.lua_TValue** %q, align 4 + br label %9 + +; <label>:9 ; preds = %28, %0 + %10 = load %struct.lua_TValue** %q, align 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %12 = icmp ugt %struct.lua_TValue* %10, %11 ; [#uses=1] + br i1 %12, label %13, label %31 + +; <label>:13 ; preds = %9 + %14 = load %struct.lua_TValue** %q, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %o2, align 4 + %16 = load %struct.lua_TValue** %q, align 4 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %o1, align 4 + %17 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 0 ; [#uses=1] + %19 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %union.anon* %18 to i8* ; [#uses=1] + %22 = bitcast %union.anon* %20 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %21, i8* %22, i32 8, i32 4, i1 false) + %23 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 1 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 1 ; [#uses=1] + store i32 %25, i32* %27, align 4 + br label %28 + +; <label>:28 ; preds = %13 + %29 = load %struct.lua_TValue** %q, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %30, %struct.lua_TValue** %q, align 4 + br label %9 + +; <label>:31 ; preds = %9 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 4 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + store %struct.lua_TValue* %34, %struct.lua_TValue** %o21, align 4 + %35 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %o12, align 4 + %36 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 0 ; [#uses=1] + %38 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 0, i32 0 ; [#uses=1] + %40 = bitcast %union.anon* %37 to i8* ; [#uses=1] + %41 = bitcast %union.anon* %39 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %40, i8* %41, i32 8, i32 4, i1 false) + %42 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 1 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 0, i32 1 ; [#uses=1] + store i32 %44, i32* %46, align 4 + ret void +} + +; [#uses=5] +define void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=19] + %2 = alloca i32, align 4 ; [#uses=5] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %func = alloca %union.Closure*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp eq i32 %3, -10001 ; [#uses=1] + br i1 %4, label %5, label %15 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 7 ; [#uses=1] + %8 = load %struct.CallInfo** %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 12 ; [#uses=1] + %11 = load %struct.CallInfo** %10, align 4 ; [#uses=1] + %12 = icmp eq %struct.CallInfo* %8, %11 ; [#uses=1] + br i1 %12, label %13, label %15 + +; <label>:13 ; preds = %5 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %14, i8* getelementptr inbounds ([23 x i8]* @.str28, i32 0, i32 0)) + br label %15 + +; <label>:15 ; preds = %13, %5, %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %16, i32 %17) ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %o, align 4 + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = icmp eq i32 %19, -10001 ; [#uses=1] + br i1 %20, label %21, label %92 + +; <label>:21 ; preds = %15 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 7 ; [#uses=1] + %24 = load %struct.CallInfo** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.CallInfo* %24, i32 0, i32 1 ; [#uses=1] + %26 = load %struct.lua_TValue** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + %30 = load %union.GCObject** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.GCObject* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to %union.Closure* ; [#uses=1] + store %union.Closure* %32, %union.Closure** %func, align 4 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 4 ; [#uses=1] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 -1 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %union.anon* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast double* %38 to %union.GCObject** ; [#uses=1] + %40 = load %union.GCObject** %39, align 4 ; [#uses=1] + %41 = getelementptr inbounds %union.GCObject* %40, i32 0, i32 0 ; [#uses=1] + %42 = bitcast %struct.lua_State* %41 to %struct.Table* ; [#uses=1] + %43 = load %union.Closure** %func, align 4 ; [#uses=1] + %44 = getelementptr inbounds %union.Closure* %43, i32 0, i32 0 ; [#uses=1] + %45 = getelementptr inbounds %struct.CClosure* %44, i32 0, i32 6 ; [#uses=1] + store %struct.Table* %42, %struct.Table** %45, align 4 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_State* %46, i32 0, i32 4 ; [#uses=1] + %48 = load %struct.lua_TValue** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 -1 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 0, i32 1 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + %52 = icmp sge i32 %51, 4 ; [#uses=1] + br i1 %52, label %53, label %91 + +; <label>:53 ; preds = %21 + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 -1 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 0 ; [#uses=1] + %59 = getelementptr inbounds %union.anon* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast double* %59 to %union.GCObject** ; [#uses=1] + %61 = load %union.GCObject** %60, align 4 ; [#uses=1] + %62 = getelementptr inbounds %union.GCObject* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast %struct.lua_State* %62 to %struct.GCheader* ; [#uses=1] + %64 = getelementptr inbounds %struct.GCheader* %63, i32 0, i32 2 ; [#uses=1] + %65 = load i8* %64, align 1 ; [#uses=1] + %66 = zext i8 %65 to i32 ; [#uses=1] + %67 = and i32 %66, 3 ; [#uses=1] + %68 = icmp ne i32 %67, 0 ; [#uses=1] + br i1 %68, label %69, label %91 + +; <label>:69 ; preds = %53 + %70 = load %union.Closure** %func, align 4 ; [#uses=1] + %71 = bitcast %union.Closure* %70 to %union.GCObject* ; [#uses=1] + %72 = getelementptr inbounds %union.GCObject* %71, i32 0, i32 0 ; [#uses=1] + %73 = bitcast %struct.lua_State* %72 to %struct.GCheader* ; [#uses=1] + %74 = getelementptr inbounds %struct.GCheader* %73, i32 0, i32 2 ; [#uses=1] + %75 = load i8* %74, align 1 ; [#uses=1] + %76 = zext i8 %75 to i32 ; [#uses=1] + %77 = and i32 %76, 4 ; [#uses=1] + %78 = icmp ne i32 %77, 0 ; [#uses=1] + br i1 %78, label %79, label %91 + +; <label>:79 ; preds = %69 + %80 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %81 = load %union.Closure** %func, align 4 ; [#uses=1] + %82 = bitcast %union.Closure* %81 to %union.GCObject* ; [#uses=1] + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_State* %83, i32 0, i32 4 ; [#uses=1] + %85 = load %struct.lua_TValue** %84, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 -1 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_TValue* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %union.anon* %87, i32 0, i32 0 ; [#uses=1] + %89 = bitcast double* %88 to %union.GCObject** ; [#uses=1] + %90 = load %union.GCObject** %89, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %80, %union.GCObject* %82, %union.GCObject* %90) + br label %91 + +; <label>:91 ; preds = %79, %69, %53, %21 + br label %179 + +; <label>:92 ; preds = %15 + %93 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.lua_State* %93, i32 0, i32 4 ; [#uses=1] + %95 = load %struct.lua_TValue** %94, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.lua_TValue* %95, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %96, %struct.lua_TValue** %o2, align 4 + %97 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %97, %struct.lua_TValue** %o1, align 4 + %98 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_TValue* %98, i32 0, i32 0 ; [#uses=1] + %100 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.lua_TValue* %100, i32 0, i32 0 ; [#uses=1] + %102 = bitcast %union.anon* %99 to i8* ; [#uses=1] + %103 = bitcast %union.anon* %101 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %102, i8* %103, i32 8, i32 4, i1 false) + %104 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_TValue* %104, i32 0, i32 1 ; [#uses=1] + %106 = load i32* %105, align 4 ; [#uses=1] + %107 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.lua_TValue* %107, i32 0, i32 1 ; [#uses=1] + store i32 %106, i32* %108, align 4 + %109 = load i32* %2, align 4 ; [#uses=1] + %110 = icmp slt i32 %109, -10002 ; [#uses=1] + br i1 %110, label %111, label %178 + +; <label>:111 ; preds = %92 + %112 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.lua_State* %112, i32 0, i32 4 ; [#uses=1] + %114 = load %struct.lua_TValue** %113, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.lua_TValue* %114, i32 -1 ; [#uses=1] + %116 = getelementptr inbounds %struct.lua_TValue* %115, i32 0, i32 1 ; [#uses=1] + %117 = load i32* %116, align 4 ; [#uses=1] + %118 = icmp sge i32 %117, 4 ; [#uses=1] + br i1 %118, label %119, label %177 + +; <label>:119 ; preds = %111 + %120 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_State* %120, i32 0, i32 4 ; [#uses=1] + %122 = load %struct.lua_TValue** %121, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_TValue* %122, i32 -1 ; [#uses=1] + %124 = getelementptr inbounds %struct.lua_TValue* %123, i32 0, i32 0 ; [#uses=1] + %125 = getelementptr inbounds %union.anon* %124, i32 0, i32 0 ; [#uses=1] + %126 = bitcast double* %125 to %union.GCObject** ; [#uses=1] + %127 = load %union.GCObject** %126, align 4 ; [#uses=1] + %128 = getelementptr inbounds %union.GCObject* %127, i32 0, i32 0 ; [#uses=1] + %129 = bitcast %struct.lua_State* %128 to %struct.GCheader* ; [#uses=1] + %130 = getelementptr inbounds %struct.GCheader* %129, i32 0, i32 2 ; [#uses=1] + %131 = load i8* %130, align 1 ; [#uses=1] + %132 = zext i8 %131 to i32 ; [#uses=1] + %133 = and i32 %132, 3 ; [#uses=1] + %134 = icmp ne i32 %133, 0 ; [#uses=1] + br i1 %134, label %135, label %177 + +; <label>:135 ; preds = %119 + %136 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %137 = getelementptr inbounds %struct.lua_State* %136, i32 0, i32 7 ; [#uses=1] + %138 = load %struct.CallInfo** %137, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.CallInfo* %138, i32 0, i32 1 ; [#uses=1] + %140 = load %struct.lua_TValue** %139, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.lua_TValue* %140, i32 0, i32 0 ; [#uses=1] + %142 = getelementptr inbounds %union.anon* %141, i32 0, i32 0 ; [#uses=1] + %143 = bitcast double* %142 to %union.GCObject** ; [#uses=1] + %144 = load %union.GCObject** %143, align 4 ; [#uses=1] + %145 = getelementptr inbounds %union.GCObject* %144, i32 0, i32 0 ; [#uses=1] + %146 = bitcast %struct.lua_State* %145 to %union.Closure* ; [#uses=1] + %147 = bitcast %union.Closure* %146 to %union.GCObject* ; [#uses=1] + %148 = getelementptr inbounds %union.GCObject* %147, i32 0, i32 0 ; [#uses=1] + %149 = bitcast %struct.lua_State* %148 to %struct.GCheader* ; [#uses=1] + %150 = getelementptr inbounds %struct.GCheader* %149, i32 0, i32 2 ; [#uses=1] + %151 = load i8* %150, align 1 ; [#uses=1] + %152 = zext i8 %151 to i32 ; [#uses=1] + %153 = and i32 %152, 4 ; [#uses=1] + %154 = icmp ne i32 %153, 0 ; [#uses=1] + br i1 %154, label %155, label %177 + +; <label>:155 ; preds = %135 + %156 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %157 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %158 = getelementptr inbounds %struct.lua_State* %157, i32 0, i32 7 ; [#uses=1] + %159 = load %struct.CallInfo** %158, align 4 ; [#uses=1] + %160 = getelementptr inbounds %struct.CallInfo* %159, i32 0, i32 1 ; [#uses=1] + %161 = load %struct.lua_TValue** %160, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.lua_TValue* %161, i32 0, i32 0 ; [#uses=1] + %163 = getelementptr inbounds %union.anon* %162, i32 0, i32 0 ; [#uses=1] + %164 = bitcast double* %163 to %union.GCObject** ; [#uses=1] + %165 = load %union.GCObject** %164, align 4 ; [#uses=1] + %166 = getelementptr inbounds %union.GCObject* %165, i32 0, i32 0 ; [#uses=1] + %167 = bitcast %struct.lua_State* %166 to %union.Closure* ; [#uses=1] + %168 = bitcast %union.Closure* %167 to %union.GCObject* ; [#uses=1] + %169 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %170 = getelementptr inbounds %struct.lua_State* %169, i32 0, i32 4 ; [#uses=1] + %171 = load %struct.lua_TValue** %170, align 4 ; [#uses=1] + %172 = getelementptr inbounds %struct.lua_TValue* %171, i32 -1 ; [#uses=1] + %173 = getelementptr inbounds %struct.lua_TValue* %172, i32 0, i32 0 ; [#uses=1] + %174 = getelementptr inbounds %union.anon* %173, i32 0, i32 0 ; [#uses=1] + %175 = bitcast double* %174 to %union.GCObject** ; [#uses=1] + %176 = load %union.GCObject** %175, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %156, %union.GCObject* %168, %union.GCObject* %176) + br label %177 + +; <label>:177 ; preds = %155, %135, %119, %111 + br label %178 + +; <label>:178 ; preds = %177, %92 + br label %179 + +; <label>:179 ; preds = %178, %91 + %180 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %181 = getelementptr inbounds %struct.lua_State* %180, i32 0, i32 4 ; [#uses=2] + %182 = load %struct.lua_TValue** %181, align 4 ; [#uses=1] + %183 = getelementptr inbounds %struct.lua_TValue* %182, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %183, %struct.lua_TValue** %181, align 4 + ret void +} + +; [#uses=60] +define void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o2, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + store %struct.lua_TValue* %8, %struct.lua_TValue** %o1, align 4 + %9 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %union.anon* %10 to i8* ; [#uses=1] + %14 = bitcast %union.anon* %12 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %13, i8* %14, i32 8, i32 4, i1 false) + %15 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 1 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + store i32 %17, i32* %19, align 4 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 4 ; [#uses=2] + %22 = load %struct.lua_TValue** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 1 ; [#uses=1] + store %struct.lua_TValue* %23, %struct.lua_TValue** %21, align 4 + ret void +} + +; [#uses=61] +define i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = icmp eq %struct.lua_TValue* %6, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + br label %13 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 1 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + br label %13 + +; <label>:13 ; preds = %9, %8 + %14 = phi i32 [ -1, %8 ], [ %12, %9 ] ; [#uses=1] + ret i32 %14 +} + +; [#uses=6] +define i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %L, i32 %t) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=1] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %t, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp eq i32 %3, -1 ; [#uses=1] + br i1 %4, label %5, label %6 + +; <label>:5 ; preds = %0 + br label %10 + +; <label>:6 ; preds = %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds [0 x i8*]* bitcast ([11 x i8*]* @luaT_typenames to [0 x i8*]*), i32 0, i32 %7 ; [#uses=1] + %9 = load i8** %8 ; [#uses=1] + br label %10 + +; <label>:10 ; preds = %6, %5 + %11 = phi i8* [ getelementptr inbounds ([9 x i8]* @.str129, i32 0, i32 0), %5 ], [ %9, %6 ] ; [#uses=1] + ret i8* %11 +} + +; [#uses=5] +define i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %L, i32 %idx) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 6 ; [#uses=1] + br i1 %9, label %10, label %22 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Closure* ; [#uses=1] + %18 = getelementptr inbounds %union.Closure* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %struct.CClosure* %18, i32 0, i32 3 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = icmp ne i8 %20, 0 ; [#uses=1] + br label %22 + +; <label>:22 ; preds = %10, %0 + %23 = phi i1 [ false, %0 ], [ %21, %10 ] ; [#uses=1] + %24 = zext i1 %23 to i32 ; [#uses=1] + ret i32 %24 +} + +; [#uses=7] +define i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %L, i32 %idx) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %n = alloca %struct.lua_TValue, align 4 ; [#uses=1] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 3 ; [#uses=1] + br i1 %9, label %14, label %10 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %11, %struct.lua_TValue* %n) ; [#uses=2] + store %struct.lua_TValue* %12, %struct.lua_TValue** %o, align 4 + %13 = icmp ne %struct.lua_TValue* %12, null ; [#uses=1] + br label %14 + +; <label>:14 ; preds = %10, %0 + %15 = phi i1 [ true, %0 ], [ %13, %10 ] ; [#uses=1] + %16 = zext i1 %15 to i32 ; [#uses=1] + ret i32 %16 +} + +; [#uses=8] +define i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %L, i32 %idx) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store i32 %5, i32* %t, align 4 + %6 = load i32* %t, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 4 ; [#uses=1] + br i1 %7, label %11, label %8 + +; <label>:8 ; preds = %0 + %9 = load i32* %t, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 3 ; [#uses=1] + br label %11 + +; <label>:11 ; preds = %8, %0 + %12 = phi i1 [ true, %0 ], [ %10, %8 ] ; [#uses=1] + %13 = zext i1 %12 to i32 ; [#uses=1] + ret i32 %13 +} + +; [#uses=0] +define i32 @_Z14lua_isuserdataP9lua_Statei(%struct.lua_State* %L, i32 %idx) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 7 ; [#uses=1] + br i1 %9, label %15, label %10 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %13, 2 ; [#uses=1] + br label %15 + +; <label>:15 ; preds = %10, %0 + %16 = phi i1 [ true, %0 ], [ %14, %10 ] ; [#uses=1] + %17 = zext i1 %16 to i32 ; [#uses=1] + ret i32 %17 +} + +; [#uses=3] +define i32 @_Z12lua_rawequalP9lua_Stateii(%struct.lua_State* %L, i32 %index1, i32 %index2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %index1, i32* %2, align 4 + store i32 %index2, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o1, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %7, i32 %8) ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %o2, align 4 + %10 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %11 = icmp eq %struct.lua_TValue* %10, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %11, label %15, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %14 = icmp eq %struct.lua_TValue* %13, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %14, label %15, label %16 + +; <label>:15 ; preds = %12, %0 + br label %20 + +; <label>:16 ; preds = %12 + %17 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %18 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %19 = call i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %17, %struct.lua_TValue* %18) ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %16, %15 + %21 = phi i32 [ 0, %15 ], [ %19, %16 ] ; [#uses=1] + ret i32 %21 +} + +; [#uses=0] +define i32 @_Z9lua_equalP9lua_Stateii(%struct.lua_State* %L, i32 %index1, i32 %index2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %index1, i32* %2, align 4 + store i32 %index2, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o1, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %7, i32 %8) ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %o2, align 4 + %10 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %11 = icmp eq %struct.lua_TValue* %10, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %11, label %15, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %14 = icmp eq %struct.lua_TValue* %13, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %14, label %15, label %16 + +; <label>:15 ; preds = %12, %0 + br label %33 + +; <label>:16 ; preds = %12 + %17 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 1 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 1 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = icmp eq i32 %19, %22 ; [#uses=1] + br i1 %23, label %24, label %30 + +; <label>:24 ; preds = %16 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %27 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %28 = call i32 @_Z13luaV_equalvalP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %25, %struct.lua_TValue* %26, %struct.lua_TValue* %27) ; [#uses=1] + %29 = icmp ne i32 %28, 0 ; [#uses=1] + br label %30 + +; <label>:30 ; preds = %24, %16 + %31 = phi i1 [ false, %16 ], [ %29, %24 ] ; [#uses=1] + %32 = zext i1 %31 to i32 ; [#uses=1] + br label %33 + +; <label>:33 ; preds = %30, %15 + %34 = phi i32 [ 0, %15 ], [ %32, %30 ] ; [#uses=1] + store i32 %34, i32* %i, align 4 + %35 = load i32* %i, align 4 ; [#uses=1] + ret i32 %35 +} + +; [#uses=1] +define i32 @_Z12lua_lessthanP9lua_Stateii(%struct.lua_State* %L, i32 %index1, i32 %index2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %index1, i32* %2, align 4 + store i32 %index2, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o1, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %7, i32 %8) ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %o2, align 4 + %10 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %11 = icmp eq %struct.lua_TValue* %10, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %11, label %15, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %14 = icmp eq %struct.lua_TValue* %13, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %14, label %15, label %16 + +; <label>:15 ; preds = %12, %0 + br label %21 + +; <label>:16 ; preds = %12 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %19 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %20 = call i32 @_Z13luaV_lessthanP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %17, %struct.lua_TValue* %18, %struct.lua_TValue* %19) ; [#uses=1] + br label %21 + +; <label>:21 ; preds = %16, %15 + %22 = phi i32 [ 0, %15 ], [ %20, %16 ] ; [#uses=1] + store i32 %22, i32* %i, align 4 + %23 = load i32* %i, align 4 ; [#uses=1] + ret i32 %23 +} + +; [#uses=5] +define double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca double, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %n = alloca %struct.lua_TValue, align 4 ; [#uses=1] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 3 ; [#uses=1] + br i1 %10, label %15, label %11 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %13 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %12, %struct.lua_TValue* %n) ; [#uses=2] + store %struct.lua_TValue* %13, %struct.lua_TValue** %o, align 4 + %14 = icmp ne %struct.lua_TValue* %13, null ; [#uses=1] + br i1 %14, label %15, label %20 + +; <label>:15 ; preds = %11, %0 + %16 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %union.anon* %17, i32 0, i32 0 ; [#uses=1] + %19 = load double* %18, align 4 ; [#uses=1] + store double %19, double* %1 + br label %21 + +; <label>:20 ; preds = %11 + store double 0.000000e+00, double* %1 + br label %21 + +; <label>:21 ; preds = %20, %15 + %22 = load double* %1 ; [#uses=1] + ret double %22 +} + +; [#uses=7] +define i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %n = alloca %struct.lua_TValue, align 4 ; [#uses=1] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %res = alloca i32, align 4 ; [#uses=2] + %num = alloca double, align 8 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 3 ; [#uses=1] + br i1 %10, label %15, label %11 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %13 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %12, %struct.lua_TValue* %n) ; [#uses=2] + store %struct.lua_TValue* %13, %struct.lua_TValue** %o, align 4 + %14 = icmp ne %struct.lua_TValue* %13, null ; [#uses=1] + br i1 %14, label %15, label %23 + +; <label>:15 ; preds = %11, %0 + %16 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %union.anon* %17, i32 0, i32 0 ; [#uses=1] + %19 = load double* %18, align 4 ; [#uses=1] + store double %19, double* %num, align 8 + %20 = load double* %num, align 8 ; [#uses=1] + %21 = fptosi double %20 to i32 ; [#uses=1] + store i32 %21, i32* %res, align 4 + %22 = load i32* %res, align 4 ; [#uses=1] + store i32 %22, i32* %1 + br label %24 + +; <label>:23 ; preds = %11 + store i32 0, i32* %1 + br label %24 + +; <label>:24 ; preds = %23, %15 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=10] +define i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %L, i32 %idx) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + br i1 %9, label %24, label %10 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %13, 1 ; [#uses=1] + br i1 %14, label %15, label %22 + +; <label>:15 ; preds = %10 + %16 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %union.anon* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast double* %18 to i32* ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, 0 ; [#uses=1] + br label %22 + +; <label>:22 ; preds = %15, %10 + %23 = phi i1 [ false, %10 ], [ %21, %15 ] ; [#uses=1] + br label %24 + +; <label>:24 ; preds = %22, %0 + %25 = phi i1 [ true, %0 ], [ %23, %22 ] ; [#uses=1] + %26 = xor i1 %25, true ; [#uses=1] + %27 = zext i1 %26 to i32 ; [#uses=1] + ret i32 %27 +} + +; [#uses=29] +define i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %L, i32 %idx, i32* %len) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i32*, align 4 ; [#uses=5] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + store i32* %len, i32** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %5, i32 %6) ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %o, align 4 + %8 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp eq i32 %10, 4 ; [#uses=1] + br i1 %11, label %41, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %15 = call i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %13, %struct.lua_TValue* %14) ; [#uses=1] + %16 = icmp ne i32 %15, 0 ; [#uses=1] + br i1 %16, label %23, label %17 + +; <label>:17 ; preds = %12 + %18 = load i32** %4, align 4 ; [#uses=1] + %19 = icmp ne i32* %18, null ; [#uses=1] + br i1 %19, label %20, label %22 + +; <label>:20 ; preds = %17 + %21 = load i32** %4, align 4 ; [#uses=1] + store i32 0, i32* %21 + br label %22 + +; <label>:22 ; preds = %20, %17 + store i8* null, i8** %1 + br label %66 + +; <label>:23 ; preds = %12 + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_State* %24, i32 0, i32 6 ; [#uses=1] + %26 = load %struct.global_State** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.global_State* %26, i32 0, i32 14 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 6 ; [#uses=1] + %31 = load %struct.global_State** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.global_State* %31, i32 0, i32 13 ; [#uses=1] + %33 = load i32* %32, align 4 ; [#uses=1] + %34 = icmp uge i32 %28, %33 ; [#uses=1] + br i1 %34, label %35, label %37 + +; <label>:35 ; preds = %23 + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %36) + br label %37 + +; <label>:37 ; preds = %35, %23 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = load i32* %3, align 4 ; [#uses=1] + %40 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %38, i32 %39) ; [#uses=1] + store %struct.lua_TValue* %40, %struct.lua_TValue** %o, align 4 + br label %41 + +; <label>:41 ; preds = %37, %0 + %42 = load i32** %4, align 4 ; [#uses=1] + %43 = icmp ne i32* %42, null ; [#uses=1] + br i1 %43, label %44, label %56 + +; <label>:44 ; preds = %41 + %45 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 0, i32 0 ; [#uses=1] + %47 = getelementptr inbounds %union.anon* %46, i32 0, i32 0 ; [#uses=1] + %48 = bitcast double* %47 to %union.GCObject** ; [#uses=1] + %49 = load %union.GCObject** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %union.GCObject* %49, i32 0, i32 0 ; [#uses=1] + %51 = bitcast %struct.lua_State* %50 to %union.TString* ; [#uses=1] + %52 = getelementptr inbounds %union.TString* %51, i32 0, i32 0 ; [#uses=1] + %53 = getelementptr inbounds %struct.anon* %52, i32 0, i32 5 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = load i32** %4, align 4 ; [#uses=1] + store i32 %54, i32* %55 + br label %56 + +; <label>:56 ; preds = %44, %41 + %57 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 0 ; [#uses=1] + %59 = getelementptr inbounds %union.anon* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast double* %59 to %union.GCObject** ; [#uses=1] + %61 = load %union.GCObject** %60, align 4 ; [#uses=1] + %62 = getelementptr inbounds %union.GCObject* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast %struct.lua_State* %62 to %union.TString* ; [#uses=1] + %64 = getelementptr inbounds %union.TString* %63, i32 1 ; [#uses=1] + %65 = bitcast %union.TString* %64 to i8* ; [#uses=1] + store i8* %65, i8** %1 + br label %66 + +; <label>:66 ; preds = %56, %22 + %67 = load i8** %1 ; [#uses=1] + ret i8* %67 +} + +; [#uses=13] +define i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca i32, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %l = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + switch i32 %9, label %61 [ + i32 4, label %10 + i32 7, label %21 + i32 5, label %32 + i32 3, label %41 + ] + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.TString* ; [#uses=1] + %18 = getelementptr inbounds %union.TString* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %struct.anon* %18, i32 0, i32 5 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + store i32 %20, i32* %1 + br label %62 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 0 ; [#uses=1] + %24 = getelementptr inbounds %union.anon* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast double* %24 to %union.GCObject** ; [#uses=1] + %26 = load %union.GCObject** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %union.GCObject* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast %struct.lua_State* %27 to %union.Udata* ; [#uses=1] + %29 = getelementptr inbounds %union.Udata* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %4* %29, i32 0, i32 5 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + store i32 %31, i32* %1 + br label %62 + +; <label>:32 ; preds = %0 + %33 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 0 ; [#uses=1] + %35 = getelementptr inbounds %union.anon* %34, i32 0, i32 0 ; [#uses=1] + %36 = bitcast double* %35 to %union.GCObject** ; [#uses=1] + %37 = load %union.GCObject** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.GCObject* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.lua_State* %38 to %struct.Table* ; [#uses=1] + %40 = call i32 @_Z9luaH_getnP5Table(%struct.Table* %39) ; [#uses=1] + store i32 %40, i32* %1 + br label %62 + +; <label>:41 ; preds = %0 + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %43 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %44 = call i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %42, %struct.lua_TValue* %43) ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %46, label %57 + +; <label>:46 ; preds = %41 + %47 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_TValue* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %union.anon* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast double* %49 to %union.GCObject** ; [#uses=1] + %51 = load %union.GCObject** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.GCObject* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast %struct.lua_State* %52 to %union.TString* ; [#uses=1] + %54 = getelementptr inbounds %union.TString* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %struct.anon* %54, i32 0, i32 5 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + br label %58 + +; <label>:57 ; preds = %41 + br label %58 + +; <label>:58 ; preds = %57, %46 + %59 = phi i32 [ %56, %46 ], [ 0, %57 ] ; [#uses=1] + store i32 %59, i32* %l, align 4 + %60 = load i32* %l, align 4 ; [#uses=1] + store i32 %60, i32* %1 + br label %62 + +; <label>:61 ; preds = %0 + store i32 0, i32* %1 + br label %62 + +; <label>:62 ; preds = %61, %58, %32, %21, %10 + %63 = load i32* %1 ; [#uses=1] + ret i32 %63 +} + +; [#uses=1] +define i32 (%struct.lua_State*)* @_Z15lua_tocfunctionP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 6 ; [#uses=1] + br i1 %9, label %10, label %22 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Closure* ; [#uses=1] + %18 = getelementptr inbounds %union.Closure* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %struct.CClosure* %18, i32 0, i32 3 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = icmp ne i8 %20, 0 ; [#uses=1] + br i1 %21, label %23, label %22 + +; <label>:22 ; preds = %10, %0 + br label %34 + +; <label>:23 ; preds = %10 + %24 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %union.anon* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast double* %26 to %union.GCObject** ; [#uses=1] + %28 = load %union.GCObject** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %union.GCObject* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast %struct.lua_State* %29 to %union.Closure* ; [#uses=1] + %31 = getelementptr inbounds %union.Closure* %30, i32 0, i32 0 ; [#uses=1] + %32 = getelementptr inbounds %struct.CClosure* %31, i32 0, i32 7 ; [#uses=1] + %33 = load i32 (%struct.lua_State*)** %32, align 4 ; [#uses=1] + br label %34 + +; <label>:34 ; preds = %23, %22 + %35 = phi i32 (%struct.lua_State*)* [ null, %22 ], [ %33, %23 ] ; [#uses=1] + ret i32 (%struct.lua_State*)* %35 +} + +; [#uses=9] +define i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + switch i32 %9, label %26 [ + i32 7, label %10 + i32 2, label %20 + ] + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Udata* ; [#uses=1] + %18 = getelementptr inbounds %union.Udata* %17, i32 1 ; [#uses=1] + %19 = bitcast %union.Udata* %18 to i8* ; [#uses=1] + store i8* %19, i8** %1 + br label %27 + +; <label>:20 ; preds = %0 + %21 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %union.anon* %22, i32 0, i32 0 ; [#uses=1] + %24 = bitcast double* %23 to i8** ; [#uses=1] + %25 = load i8** %24, align 4 ; [#uses=1] + store i8* %25, i8** %1 + br label %27 + +; <label>:26 ; preds = %0 + store i8* null, i8** %1 + br label %27 + +; <label>:27 ; preds = %26, %20, %10 + %28 = load i8** %1 ; [#uses=1] + ret i8* %28 +} + +; [#uses=4] +define %struct.lua_State* @_Z12lua_tothreadP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 8 ; [#uses=1] + br i1 %9, label %11, label %10 + +; <label>:10 ; preds = %0 + br label %18 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %union.anon* %13, i32 0, i32 0 ; [#uses=1] + %15 = bitcast double* %14 to %union.GCObject** ; [#uses=1] + %16 = load %union.GCObject** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + br label %18 + +; <label>:18 ; preds = %11, %10 + %19 = phi %struct.lua_State* [ null, %10 ], [ %17, %11 ] ; [#uses=1] + ret %struct.lua_State* %19 +} + +; [#uses=1] +define i8* @_Z13lua_topointerP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca i8*, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=3] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + switch i32 %9, label %40 [ + i32 5, label %10 + i32 6, label %19 + i32 8, label %28 + i32 7, label %36 + i32 2, label %36 + ] + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %struct.Table* ; [#uses=1] + %18 = bitcast %struct.Table* %17 to i8* ; [#uses=1] + store i8* %18, i8** %1 + br label %41 + +; <label>:19 ; preds = %0 + %20 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %union.anon* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast double* %22 to %union.GCObject** ; [#uses=1] + %24 = load %union.GCObject** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.GCObject* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast %struct.lua_State* %25 to %union.Closure* ; [#uses=1] + %27 = bitcast %union.Closure* %26 to i8* ; [#uses=1] + store i8* %27, i8** %1 + br label %41 + +; <label>:28 ; preds = %0 + %29 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast double* %31 to %union.GCObject** ; [#uses=1] + %33 = load %union.GCObject** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %union.GCObject* %33, i32 0, i32 0 ; [#uses=1] + %35 = bitcast %struct.lua_State* %34 to i8* ; [#uses=1] + store i8* %35, i8** %1 + br label %41 + +; <label>:36 ; preds = %0, %0 + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %38 = load i32* %3, align 4 ; [#uses=1] + %39 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %37, i32 %38) ; [#uses=1] + store i8* %39, i8** %1 + br label %41 + +; <label>:40 ; preds = %0 + store i8* null, i8** %1 + br label %41 + +; <label>:41 ; preds = %40, %36, %28, %19, %10 + %42 = load i8** %1 ; [#uses=1] + ret i8* %42 +} + +; [#uses=23] +define void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 4 ; [#uses=1] + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %5, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=2] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 1 ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %7, align 4 + ret void +} + +; [#uses=41] +define void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %L, double %n) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca double, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store double %n, double* %2, align 8 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %i_o, align 4 + %6 = load double* %2, align 8 ; [#uses=1] + %7 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + store double %6, double* %9, align 4 + %10 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %11, align 4 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 4 ; [#uses=2] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 1 ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %13, align 4 + ret void +} + +; [#uses=27] +define void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %L, i32 %n) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %n, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %i_o, align 4 + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = sitofp i32 %6 to double ; [#uses=1] + %8 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 0 ; [#uses=1] + %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] + store double %7, double* %10, align 4 + %11 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %12, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=2] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %14, align 4 + ret void +} + +; [#uses=36] +define void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %L, i8* %s, i32 %len) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %s, i8** %2, align 4 + store i32 %len, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 14 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.global_State** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 13 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp uge i32 %8, %13 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %16) + br label %17 + +; <label>:17 ; preds = %15, %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %i_o, align 4 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load i8** %2, align 4 ; [#uses=1] + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %21, i8* %22, i32 %23) ; [#uses=1] + %25 = bitcast %union.TString* %24 to %union.GCObject* ; [#uses=1] + %26 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %25, %union.GCObject** %29, align 4 + %30 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 4 ; [#uses=2] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 1 ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %33, align 4 + ret void +} + +; [#uses=24] +define void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %L, i8* %s) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %s, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = icmp eq i8* %3, null ; [#uses=1] + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %6) + br label %12 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i8** %2, align 4 ; [#uses=1] + %10 = load i8** %2, align 4 ; [#uses=1] + %11 = call i32 @strlen(i8* %10) ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %8, i8* %9, i32 %11) + br label %12 + +; <label>:12 ; preds = %7, %5 + ret void +} + +; [#uses=1] +define i8* @_Z16lua_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %L, i8* %fmt, i8* %argp) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %ret = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + store i8* %argp, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 14 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.global_State** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 13 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp uge i32 %8, %13 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %16) + br label %17 + +; <label>:17 ; preds = %15, %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %2, align 4 ; [#uses=1] + %20 = load i8** %3, align 4 ; [#uses=1] + %21 = call i8* @_Z17luaO_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %18, i8* %19, i8* %20) ; [#uses=1] + store i8* %21, i8** %ret, align 4 + %22 = load i8** %ret, align 4 ; [#uses=1] + ret i8* %22 +} + +; [#uses=26] +define i8* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %L, i8* %fmt, ...) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=2] + %ret = alloca i8*, align 4 ; [#uses=2] + %argp = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 14 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 6 ; [#uses=1] + %10 = load %struct.global_State** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.global_State* %10, i32 0, i32 13 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp uge i32 %7, %12 ; [#uses=1] + br i1 %13, label %14, label %16 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %15) + br label %16 + +; <label>:16 ; preds = %14, %0 + %17 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_start(i8* %17) + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %2, align 4 ; [#uses=1] + %20 = load i8** %argp, align 4 ; [#uses=1] + %21 = call i8* @_Z17luaO_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %18, i8* %19, i8* %20) ; [#uses=1] + store i8* %21, i8** %ret, align 4 + %22 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_end(i8* %22) + %23 = load i8** %ret, align 4 ; [#uses=1] + ret i8* %23 +} + +; [#uses=4] +declare void @llvm.va_start(i8*) nounwind + +; [#uses=4] +declare void @llvm.va_end(i8*) nounwind + +; [#uses=13] +define void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %L, i32 (%struct.lua_State*)* %fn, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %2 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=7] + %cl = alloca %union.Closure*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 (%struct.lua_State*)* %fn, i32 (%struct.lua_State*)** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 14 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.global_State** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 13 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp uge i32 %8, %13 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %16) + br label %17 + +; <label>:17 ; preds = %15, %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = call %struct.Table* @_Z10getcurrenvP9lua_State(%struct.lua_State* %20) ; [#uses=1] + %22 = call %union.Closure* @_Z16luaF_newCclosureP9lua_StateiP5Table(%struct.lua_State* %18, i32 %19, %struct.Table* %21) ; [#uses=1] + store %union.Closure* %22, %union.Closure** %cl, align 4 + %23 = load i32 (%struct.lua_State*)** %2, align 4 ; [#uses=1] + %24 = load %union.Closure** %cl, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.Closure* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %struct.CClosure* %25, i32 0, i32 7 ; [#uses=1] + store i32 (%struct.lua_State*)* %23, i32 (%struct.lua_State*)** %26, align 4 + %27 = load i32* %3, align 4 ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 4 ; [#uses=2] + %30 = load %struct.lua_TValue** %29, align 4 ; [#uses=1] + %31 = sub i32 0, %27 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %30, i32 %31 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %29, align 4 + br label %33 + +; <label>:33 ; preds = %37, %17 + %34 = load i32* %3, align 4 ; [#uses=2] + %35 = add nsw i32 %34, -1 ; [#uses=1] + store i32 %35, i32* %3, align 4 + %36 = icmp ne i32 %34, 0 ; [#uses=1] + br i1 %36, label %37, label %59 + +; <label>:37 ; preds = %33 + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_State* %38, i32 0, i32 4 ; [#uses=1] + %40 = load %struct.lua_TValue** %39, align 4 ; [#uses=1] + %41 = load i32* %3, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %40, i32 %41 ; [#uses=1] + store %struct.lua_TValue* %42, %struct.lua_TValue** %o2, align 4 + %43 = load i32* %3, align 4 ; [#uses=1] + %44 = load %union.Closure** %cl, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.Closure* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %struct.CClosure* %45, i32 0, i32 8 ; [#uses=1] + %47 = getelementptr inbounds [1 x %struct.lua_TValue]* %46, i32 0, i32 %43 ; [#uses=1] + store %struct.lua_TValue* %47, %struct.lua_TValue** %o1, align 4 + %48 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 0 ; [#uses=1] + %50 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 0 ; [#uses=1] + %52 = bitcast %union.anon* %49 to i8* ; [#uses=1] + %53 = bitcast %union.anon* %51 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %52, i8* %53, i32 8, i32 4, i1 false) + %54 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 1 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + %57 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 1 ; [#uses=1] + store i32 %56, i32* %58, align 4 + br label %33 + +; <label>:59 ; preds = %33 + %60 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 4 ; [#uses=1] + %62 = load %struct.lua_TValue** %61, align 4 ; [#uses=1] + store %struct.lua_TValue* %62, %struct.lua_TValue** %i_o, align 4 + %63 = load %union.Closure** %cl, align 4 ; [#uses=1] + %64 = bitcast %union.Closure* %63 to %union.GCObject* ; [#uses=1] + %65 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 0 ; [#uses=1] + %67 = getelementptr inbounds %union.anon* %66, i32 0, i32 0 ; [#uses=1] + %68 = bitcast double* %67 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %64, %union.GCObject** %68, align 4 + %69 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 1 ; [#uses=1] + store i32 6, i32* %70, align 4 + %71 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_State* %71, i32 0, i32 4 ; [#uses=2] + %73 = load %struct.lua_TValue** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 1 ; [#uses=1] + store %struct.lua_TValue* %74, %struct.lua_TValue** %72, align 4 + ret void +} + +; [#uses=3] +define internal %struct.Table* @_Z10getcurrenvP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.Table*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %func = alloca %union.Closure*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 7 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 12 ; [#uses=1] + %8 = load %struct.CallInfo** %7, align 4 ; [#uses=1] + %9 = icmp eq %struct.CallInfo* %5, %8 ; [#uses=1] + br i1 %9, label %10, label %19 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 22 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %union.anon* %13, i32 0, i32 0 ; [#uses=1] + %15 = bitcast double* %14 to %union.GCObject** ; [#uses=1] + %16 = load %union.GCObject** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %struct.Table* ; [#uses=1] + store %struct.Table* %18, %struct.Table** %1 + br label %35 + +; <label>:19 ; preds = %0 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 7 ; [#uses=1] + %22 = load %struct.CallInfo** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.CallInfo* %22, i32 0, i32 1 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %union.anon* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast double* %26 to %union.GCObject** ; [#uses=1] + %28 = load %union.GCObject** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %union.GCObject* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast %struct.lua_State* %29 to %union.Closure* ; [#uses=1] + store %union.Closure* %30, %union.Closure** %func, align 4 + %31 = load %union.Closure** %func, align 4 ; [#uses=1] + %32 = getelementptr inbounds %union.Closure* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %struct.CClosure* %32, i32 0, i32 6 ; [#uses=1] + %34 = load %struct.Table** %33, align 4 ; [#uses=1] + store %struct.Table* %34, %struct.Table** %1 + br label %35 + +; <label>:35 ; preds = %19, %10 + %36 = load %struct.Table** %1 ; [#uses=1] + ret %struct.Table* %36 +} + +; [#uses=13] +define void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %L, i32 %b) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %b, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %i_o, align 4 + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + %8 = zext i1 %7 to i32 ; [#uses=1] + %9 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 0 ; [#uses=1] + %11 = getelementptr inbounds %union.anon* %10, i32 0, i32 0 ; [#uses=1] + %12 = bitcast double* %11 to i32* ; [#uses=1] + store i32 %8, i32* %12, align 4 + %13 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %14, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=2] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 1 ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %16, align 4 + ret void +} + +; [#uses=7] +define void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %L, i8* %p) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %p, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %i_o, align 4 + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast double* %9 to i8** ; [#uses=1] + store i8* %6, i8** %10, align 4 + %11 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + store i32 2, i32* %12, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=2] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %14, align 4 + ret void +} + +; [#uses=2] +define i32 @_Z14lua_pushthreadP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 4 ; [#uses=1] + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %4, %struct.lua_TValue** %i_o, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = bitcast %struct.lua_State* %5 to %union.GCObject* ; [#uses=1] + %7 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast double* %9 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %6, %union.GCObject** %10, align 4 + %11 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + store i32 8, i32* %12, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=2] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %14, align 4 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 6 ; [#uses=1] + %19 = load %struct.global_State** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.global_State* %19, i32 0, i32 21 ; [#uses=1] + %21 = load %struct.lua_State** %20, align 4 ; [#uses=1] + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = icmp eq %struct.lua_State* %21, %22 ; [#uses=1] + %24 = zext i1 %23 to i32 ; [#uses=1] + ret i32 %24 +} + +; [#uses=2] +define void @_Z12lua_gettableP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %t, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 4 ; [#uses=1] + %10 = load %struct.lua_TValue** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 -1 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 -1 ; [#uses=1] + call void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %6, %struct.lua_TValue* %7, %struct.lua_TValue* %11, %struct.lua_TValue* %15) + ret void +} + +; [#uses=28] +define void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %L, i32 %idx, i8* %k) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=3] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %key = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i8* %k, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %t, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %i_o, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i8** %3, align 4 ; [#uses=1] + %9 = load i8** %3, align 4 ; [#uses=1] + %10 = call i32 @strlen(i8* %9) ; [#uses=1] + %11 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %7, i8* %8, i32 %10) ; [#uses=1] + %12 = bitcast %union.TString* %11 to %union.GCObject* ; [#uses=1] + %13 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %12, %union.GCObject** %16, align 4 + %17 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %18, align 4 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 4 ; [#uses=1] + %23 = load %struct.lua_TValue** %22, align 4 ; [#uses=1] + call void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %19, %struct.lua_TValue* %20, %struct.lua_TValue* %key, %struct.lua_TValue* %23) + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_State* %24, i32 0, i32 4 ; [#uses=2] + %26 = load %struct.lua_TValue** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 1 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %25, align 4 + ret void +} + +; [#uses=8] +define void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %t, align 4 + %6 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 0 ; [#uses=1] + %8 = getelementptr inbounds %union.anon* %7, i32 0, i32 0 ; [#uses=1] + %9 = bitcast double* %8 to %union.GCObject** ; [#uses=1] + %10 = load %union.GCObject** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %union.GCObject* %10, i32 0, i32 0 ; [#uses=1] + %12 = bitcast %struct.lua_State* %11 to %struct.Table* ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 -1 ; [#uses=1] + %17 = call %struct.lua_TValue* @_Z8luaH_getP5TablePK10lua_TValue(%struct.Table* %12, %struct.lua_TValue* %16) ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %o2, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %21, %struct.lua_TValue** %o1, align 4 + %22 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 0 ; [#uses=1] + %24 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast %union.anon* %23 to i8* ; [#uses=1] + %27 = bitcast %union.anon* %25 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %26, i8* %27, i32 8, i32 4, i1 false) + %28 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 1 ; [#uses=1] + store i32 %30, i32* %32, align 4 + ret void +} + +; [#uses=27] +define void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %L, i32 %idx, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast double* %9 to %union.GCObject** ; [#uses=1] + %11 = load %union.GCObject** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.GCObject* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %struct.lua_State* %12 to %struct.Table* ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %13, i32 %14) ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %o2, align 4 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 4 ; [#uses=1] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %o1, align 4 + %19 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %union.anon* %20 to i8* ; [#uses=1] + %24 = bitcast %union.anon* %22 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %24, i32 8, i32 4, i1 false) + %25 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 %27, i32* %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 4 ; [#uses=2] + %32 = load %struct.lua_TValue** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 1 ; [#uses=1] + store %struct.lua_TValue* %33, %struct.lua_TValue** %31, align 4 + ret void +} + +; [#uses=13] +define void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %L, i32 %narray, i32 %nrec) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narray, i32* %2, align 4 + store i32 %nrec, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 14 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.global_State** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 13 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp uge i32 %8, %13 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %16) + br label %17 + +; <label>:17 ; preds = %15, %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %i_o, align 4 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load i32* %2, align 4 ; [#uses=1] + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %21, i32 %22, i32 %23) ; [#uses=1] + %25 = bitcast %struct.Table* %24 to %union.GCObject* ; [#uses=1] + %26 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %25, %union.GCObject** %29, align 4 + %30 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 4 ; [#uses=2] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 1 ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %33, align 4 + ret void +} + +; [#uses=8] +define i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %L, i32 %objindex) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %obj = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %mt = alloca %struct.Table*, align 4 ; [#uses=6] + %res = alloca i32, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %objindex, i32* %2, align 4 + store %struct.Table* null, %struct.Table** %mt, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %obj, align 4 + %6 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + switch i32 %8, label %30 [ + i32 5, label %9 + i32 7, label %19 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast double* %12 to %union.GCObject** ; [#uses=1] + %14 = load %union.GCObject** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.Table* ; [#uses=1] + %17 = getelementptr inbounds %struct.Table* %16, i32 0, i32 5 ; [#uses=1] + %18 = load %struct.Table** %17, align 4 ; [#uses=1] + store %struct.Table* %18, %struct.Table** %mt, align 4 + br label %40 + +; <label>:19 ; preds = %0 + %20 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %union.anon* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast double* %22 to %union.GCObject** ; [#uses=1] + %24 = load %union.GCObject** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.GCObject* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast %struct.lua_State* %25 to %union.Udata* ; [#uses=1] + %27 = getelementptr inbounds %union.Udata* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %4* %27, i32 0, i32 3 ; [#uses=1] + %29 = load %struct.Table** %28, align 4 ; [#uses=1] + store %struct.Table* %29, %struct.Table** %mt, align 4 + br label %40 + +; <label>:30 ; preds = %0 + %31 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 1 ; [#uses=1] + %33 = load i32* %32, align 4 ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 6 ; [#uses=1] + %36 = load %struct.global_State** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.global_State* %36, i32 0, i32 23 ; [#uses=1] + %38 = getelementptr inbounds [9 x %struct.Table*]* %37, i32 0, i32 %33 ; [#uses=1] + %39 = load %struct.Table** %38 ; [#uses=1] + store %struct.Table* %39, %struct.Table** %mt, align 4 + br label %40 + +; <label>:40 ; preds = %30, %19, %9 + %41 = load %struct.Table** %mt, align 4 ; [#uses=1] + %42 = icmp eq %struct.Table* %41, null ; [#uses=1] + br i1 %42, label %43, label %44 + +; <label>:43 ; preds = %40 + store i32 0, i32* %res, align 4 + br label %60 + +; <label>:44 ; preds = %40 + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_State* %45, i32 0, i32 4 ; [#uses=1] + %47 = load %struct.lua_TValue** %46, align 4 ; [#uses=1] + store %struct.lua_TValue* %47, %struct.lua_TValue** %i_o, align 4 + %48 = load %struct.Table** %mt, align 4 ; [#uses=1] + %49 = bitcast %struct.Table* %48 to %union.GCObject* ; [#uses=1] + %50 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %union.anon* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast double* %52 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %49, %union.GCObject** %53, align 4 + %54 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %55, align 4 + %56 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_State* %56, i32 0, i32 4 ; [#uses=2] + %58 = load %struct.lua_TValue** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 1 ; [#uses=1] + store %struct.lua_TValue* %59, %struct.lua_TValue** %57, align 4 + store i32 1, i32* %res, align 4 + br label %60 + +; <label>:60 ; preds = %44, %43 + %61 = load i32* %res, align 4 ; [#uses=1] + ret i32 %61 +} + +; [#uses=3] +define void @_Z11lua_getfenvP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + switch i32 %8, label %73 [ + i32 6, label %9 + i32 7, label %30 + i32 8, label %51 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %i_o, align 4 + %13 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + %17 = load %union.GCObject** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.GCObject* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to %union.Closure* ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %struct.CClosure* %20, i32 0, i32 6 ; [#uses=1] + %22 = load %struct.Table** %21, align 4 ; [#uses=1] + %23 = bitcast %struct.Table* %22 to %union.GCObject* ; [#uses=1] + %24 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %union.anon* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast double* %26 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %23, %union.GCObject** %27, align 4 + %28 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %29, align 4 + br label %78 + +; <label>:30 ; preds = %0 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 4 ; [#uses=1] + %33 = load %struct.lua_TValue** %32, align 4 ; [#uses=1] + store %struct.lua_TValue* %33, %struct.lua_TValue** %i_o1, align 4 + %34 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 0 ; [#uses=1] + %36 = getelementptr inbounds %union.anon* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast double* %36 to %union.GCObject** ; [#uses=1] + %38 = load %union.GCObject** %37, align 4 ; [#uses=1] + %39 = getelementptr inbounds %union.GCObject* %38, i32 0, i32 0 ; [#uses=1] + %40 = bitcast %struct.lua_State* %39 to %union.Udata* ; [#uses=1] + %41 = getelementptr inbounds %union.Udata* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %4* %41, i32 0, i32 4 ; [#uses=1] + %43 = load %struct.Table** %42, align 4 ; [#uses=1] + %44 = bitcast %struct.Table* %43 to %union.GCObject* ; [#uses=1] + %45 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 0, i32 0 ; [#uses=1] + %47 = getelementptr inbounds %union.anon* %46, i32 0, i32 0 ; [#uses=1] + %48 = bitcast double* %47 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %44, %union.GCObject** %48, align 4 + %49 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %50, align 4 + br label %78 + +; <label>:51 ; preds = %0 + %52 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %union.anon* %53, i32 0, i32 0 ; [#uses=1] + %55 = bitcast double* %54 to %union.GCObject** ; [#uses=1] + %56 = load %union.GCObject** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %union.GCObject* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_State* %57, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %58, %struct.lua_TValue** %o2, align 4 + %59 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_State* %59, i32 0, i32 4 ; [#uses=1] + %61 = load %struct.lua_TValue** %60, align 4 ; [#uses=1] + store %struct.lua_TValue* %61, %struct.lua_TValue** %o1, align 4 + %62 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_TValue* %62, i32 0, i32 0 ; [#uses=1] + %64 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_TValue* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %union.anon* %63 to i8* ; [#uses=1] + %67 = bitcast %union.anon* %65 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %66, i8* %67, i32 8, i32 4, i1 false) + %68 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_TValue* %68, i32 0, i32 1 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + %71 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_TValue* %71, i32 0, i32 1 ; [#uses=1] + store i32 %70, i32* %72, align 4 + br label %78 + +; <label>:73 ; preds = %0 + %74 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.lua_State* %74, i32 0, i32 4 ; [#uses=1] + %76 = load %struct.lua_TValue** %75, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_TValue* %76, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %77, align 4 + br label %78 + +; <label>:78 ; preds = %73, %51, %30, %9 + %79 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.lua_State* %79, i32 0, i32 4 ; [#uses=2] + %81 = load %struct.lua_TValue** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_TValue* %81, i32 1 ; [#uses=1] + store %struct.lua_TValue* %82, %struct.lua_TValue** %80, align 4 + ret void +} + +; [#uses=2] +define void @_Z12lua_settableP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %t, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 4 ; [#uses=1] + %10 = load %struct.lua_TValue** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 -2 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 -1 ; [#uses=1] + call void @_Z13luaV_settableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %6, %struct.lua_TValue* %7, %struct.lua_TValue* %11, %struct.lua_TValue* %15) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 4 ; [#uses=2] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 -2 ; [#uses=1] + store %struct.lua_TValue* %19, %struct.lua_TValue** %17, align 4 + ret void +} + +; [#uses=36] +define void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %L, i32 %idx, i8* %k) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=3] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %key = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i8* %k, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %t, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %i_o, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i8** %3, align 4 ; [#uses=1] + %9 = load i8** %3, align 4 ; [#uses=1] + %10 = call i32 @strlen(i8* %9) ; [#uses=1] + %11 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %7, i8* %8, i32 %10) ; [#uses=1] + %12 = bitcast %union.TString* %11 to %union.GCObject* ; [#uses=1] + %13 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %12, %union.GCObject** %16, align 4 + %17 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %18, align 4 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 4 ; [#uses=1] + %23 = load %struct.lua_TValue** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 -1 ; [#uses=1] + call void @_Z13luaV_settableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %19, %struct.lua_TValue* %20, %struct.lua_TValue* %key, %struct.lua_TValue* %24) + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 4 ; [#uses=2] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %26, align 4 + ret void +} + +; [#uses=4] +define void @_Z10lua_rawsetP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %t, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %o2, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %struct.Table* ; [#uses=1] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 -2 ; [#uses=1] + %22 = call %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %10, %struct.Table* %17, %struct.lua_TValue* %21) ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %o1, align 4 + %23 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast %union.anon* %24 to i8* ; [#uses=1] + %28 = bitcast %union.anon* %26 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %27, i8* %28, i32 8, i32 4, i1 false) + %29 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 1 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 0, i32 1 ; [#uses=1] + store i32 %31, i32* %33, align 4 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 4 ; [#uses=1] + %36 = load %struct.lua_TValue** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 -1 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 1 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = icmp sge i32 %39, 4 ; [#uses=1] + br i1 %40, label %41, label %82 + +; <label>:41 ; preds = %0 + %42 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_State* %42, i32 0, i32 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 -1 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 0, i32 0 ; [#uses=1] + %47 = getelementptr inbounds %union.anon* %46, i32 0, i32 0 ; [#uses=1] + %48 = bitcast double* %47 to %union.GCObject** ; [#uses=1] + %49 = load %union.GCObject** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %union.GCObject* %49, i32 0, i32 0 ; [#uses=1] + %51 = bitcast %struct.lua_State* %50 to %struct.GCheader* ; [#uses=1] + %52 = getelementptr inbounds %struct.GCheader* %51, i32 0, i32 2 ; [#uses=1] + %53 = load i8* %52, align 1 ; [#uses=1] + %54 = zext i8 %53 to i32 ; [#uses=1] + %55 = and i32 %54, 3 ; [#uses=1] + %56 = icmp ne i32 %55, 0 ; [#uses=1] + br i1 %56, label %57, label %82 + +; <label>:57 ; preds = %41 + %58 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 0, i32 0 ; [#uses=1] + %60 = getelementptr inbounds %union.anon* %59, i32 0, i32 0 ; [#uses=1] + %61 = bitcast double* %60 to %union.GCObject** ; [#uses=1] + %62 = load %union.GCObject** %61, align 4 ; [#uses=1] + %63 = getelementptr inbounds %union.GCObject* %62, i32 0, i32 0 ; [#uses=1] + %64 = bitcast %struct.lua_State* %63 to %struct.Table* ; [#uses=1] + %65 = bitcast %struct.Table* %64 to %union.GCObject* ; [#uses=1] + %66 = getelementptr inbounds %union.GCObject* %65, i32 0, i32 0 ; [#uses=1] + %67 = bitcast %struct.lua_State* %66 to %struct.GCheader* ; [#uses=1] + %68 = getelementptr inbounds %struct.GCheader* %67, i32 0, i32 2 ; [#uses=1] + %69 = load i8* %68, align 1 ; [#uses=1] + %70 = zext i8 %69 to i32 ; [#uses=1] + %71 = and i32 %70, 4 ; [#uses=1] + %72 = icmp ne i32 %71, 0 ; [#uses=1] + br i1 %72, label %73, label %82 + +; <label>:73 ; preds = %57 + %74 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %75 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_TValue* %75, i32 0, i32 0 ; [#uses=1] + %77 = getelementptr inbounds %union.anon* %76, i32 0, i32 0 ; [#uses=1] + %78 = bitcast double* %77 to %union.GCObject** ; [#uses=1] + %79 = load %union.GCObject** %78, align 4 ; [#uses=1] + %80 = getelementptr inbounds %union.GCObject* %79, i32 0, i32 0 ; [#uses=1] + %81 = bitcast %struct.lua_State* %80 to %struct.Table* ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %74, %struct.Table* %81) + br label %82 + +; <label>:82 ; preds = %73, %57, %41, %0 + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_State* %83, i32 0, i32 4 ; [#uses=2] + %85 = load %struct.lua_TValue** %84, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 -2 ; [#uses=1] + store %struct.lua_TValue* %86, %struct.lua_TValue** %84, align 4 + ret void +} + +; [#uses=14] +define void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %L, i32 %idx, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 4 ; [#uses=1] + %9 = load %struct.lua_TValue** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %10, %struct.lua_TValue** %o2, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %union.anon* %13, i32 0, i32 0 ; [#uses=1] + %15 = bitcast double* %14 to %union.GCObject** ; [#uses=1] + %16 = load %union.GCObject** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %struct.Table* ; [#uses=1] + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = call %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %11, %struct.Table* %18, i32 %19) ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %o1, align 4 + %21 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast %union.anon* %22 to i8* ; [#uses=1] + %26 = bitcast %union.anon* %24 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %25, i8* %26, i32 8, i32 4, i1 false) + %27 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 1 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 1 ; [#uses=1] + store i32 %29, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 4 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 -1 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 1 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp sge i32 %37, 4 ; [#uses=1] + br i1 %38, label %39, label %80 + +; <label>:39 ; preds = %0 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 4 ; [#uses=1] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 -1 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 0, i32 0 ; [#uses=1] + %45 = getelementptr inbounds %union.anon* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast double* %45 to %union.GCObject** ; [#uses=1] + %47 = load %union.GCObject** %46, align 4 ; [#uses=1] + %48 = getelementptr inbounds %union.GCObject* %47, i32 0, i32 0 ; [#uses=1] + %49 = bitcast %struct.lua_State* %48 to %struct.GCheader* ; [#uses=1] + %50 = getelementptr inbounds %struct.GCheader* %49, i32 0, i32 2 ; [#uses=1] + %51 = load i8* %50, align 1 ; [#uses=1] + %52 = zext i8 %51 to i32 ; [#uses=1] + %53 = and i32 %52, 3 ; [#uses=1] + %54 = icmp ne i32 %53, 0 ; [#uses=1] + br i1 %54, label %55, label %80 + +; <label>:55 ; preds = %39 + %56 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %union.anon* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast double* %58 to %union.GCObject** ; [#uses=1] + %60 = load %union.GCObject** %59, align 4 ; [#uses=1] + %61 = getelementptr inbounds %union.GCObject* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast %struct.lua_State* %61 to %struct.Table* ; [#uses=1] + %63 = bitcast %struct.Table* %62 to %union.GCObject* ; [#uses=1] + %64 = getelementptr inbounds %union.GCObject* %63, i32 0, i32 0 ; [#uses=1] + %65 = bitcast %struct.lua_State* %64 to %struct.GCheader* ; [#uses=1] + %66 = getelementptr inbounds %struct.GCheader* %65, i32 0, i32 2 ; [#uses=1] + %67 = load i8* %66, align 1 ; [#uses=1] + %68 = zext i8 %67 to i32 ; [#uses=1] + %69 = and i32 %68, 4 ; [#uses=1] + %70 = icmp ne i32 %69, 0 ; [#uses=1] + br i1 %70, label %71, label %80 + +; <label>:71 ; preds = %55 + %72 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %73 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %union.anon* %74, i32 0, i32 0 ; [#uses=1] + %76 = bitcast double* %75 to %union.GCObject** ; [#uses=1] + %77 = load %union.GCObject** %76, align 4 ; [#uses=1] + %78 = getelementptr inbounds %union.GCObject* %77, i32 0, i32 0 ; [#uses=1] + %79 = bitcast %struct.lua_State* %78 to %struct.Table* ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %72, %struct.Table* %79) + br label %80 + +; <label>:80 ; preds = %71, %55, %39, %0 + %81 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_State* %81, i32 0, i32 4 ; [#uses=2] + %83 = load %struct.lua_TValue** %82, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_TValue* %83, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %84, %struct.lua_TValue** %82, align 4 + ret void +} + +; [#uses=8] +define i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %L, i32 %objindex) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=2] + %obj = alloca %struct.lua_TValue*, align 4 ; [#uses=9] + %mt = alloca %struct.Table*, align 4 ; [#uses=10] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %objindex, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %obj, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 -1 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %14 + +; <label>:13 ; preds = %0 + store %struct.Table* null, %struct.Table** %mt, align 4 + br label %25 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 -1 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %union.anon* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast double* %20 to %union.GCObject** ; [#uses=1] + %22 = load %union.GCObject** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %union.GCObject* %22, i32 0, i32 0 ; [#uses=1] + %24 = bitcast %struct.lua_State* %23 to %struct.Table* ; [#uses=1] + store %struct.Table* %24, %struct.Table** %mt, align 4 + br label %25 + +; <label>:25 ; preds = %14, %13 + %26 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 1 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + switch i32 %28, label %131 [ + i32 5, label %29 + i32 7, label %78 + ] + +; <label>:29 ; preds = %25 + %30 = load %struct.Table** %mt, align 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %union.anon* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast double* %33 to %union.GCObject** ; [#uses=1] + %35 = load %union.GCObject** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %union.GCObject* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %struct.lua_State* %36 to %struct.Table* ; [#uses=1] + %38 = getelementptr inbounds %struct.Table* %37, i32 0, i32 5 ; [#uses=1] + store %struct.Table* %30, %struct.Table** %38, align 4 + %39 = load %struct.Table** %mt, align 4 ; [#uses=1] + %40 = icmp ne %struct.Table* %39, null ; [#uses=1] + br i1 %40, label %41, label %77 + +; <label>:41 ; preds = %29 + %42 = load %struct.Table** %mt, align 4 ; [#uses=1] + %43 = bitcast %struct.Table* %42 to %union.GCObject* ; [#uses=1] + %44 = getelementptr inbounds %union.GCObject* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast %struct.lua_State* %44 to %struct.GCheader* ; [#uses=1] + %46 = getelementptr inbounds %struct.GCheader* %45, i32 0, i32 2 ; [#uses=1] + %47 = load i8* %46, align 1 ; [#uses=1] + %48 = zext i8 %47 to i32 ; [#uses=1] + %49 = and i32 %48, 3 ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %76 + +; <label>:51 ; preds = %41 + %52 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %union.anon* %53, i32 0, i32 0 ; [#uses=1] + %55 = bitcast double* %54 to %union.GCObject** ; [#uses=1] + %56 = load %union.GCObject** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %union.GCObject* %56, i32 0, i32 0 ; [#uses=1] + %58 = bitcast %struct.lua_State* %57 to %struct.Table* ; [#uses=1] + %59 = bitcast %struct.Table* %58 to %union.GCObject* ; [#uses=1] + %60 = getelementptr inbounds %union.GCObject* %59, i32 0, i32 0 ; [#uses=1] + %61 = bitcast %struct.lua_State* %60 to %struct.GCheader* ; [#uses=1] + %62 = getelementptr inbounds %struct.GCheader* %61, i32 0, i32 2 ; [#uses=1] + %63 = load i8* %62, align 1 ; [#uses=1] + %64 = zext i8 %63 to i32 ; [#uses=1] + %65 = and i32 %64, 4 ; [#uses=1] + %66 = icmp ne i32 %65, 0 ; [#uses=1] + br i1 %66, label %67, label %76 + +; <label>:67 ; preds = %51 + %68 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %69 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %union.anon* %70, i32 0, i32 0 ; [#uses=1] + %72 = bitcast double* %71 to %union.GCObject** ; [#uses=1] + %73 = load %union.GCObject** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds %union.GCObject* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast %struct.lua_State* %74 to %struct.Table* ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %68, %struct.Table* %75) + br label %76 + +; <label>:76 ; preds = %67, %51, %41 + br label %77 + +; <label>:77 ; preds = %76, %29 + br label %141 + +; <label>:78 ; preds = %25 + %79 = load %struct.Table** %mt, align 4 ; [#uses=1] + %80 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 0, i32 0 ; [#uses=1] + %82 = getelementptr inbounds %union.anon* %81, i32 0, i32 0 ; [#uses=1] + %83 = bitcast double* %82 to %union.GCObject** ; [#uses=1] + %84 = load %union.GCObject** %83, align 4 ; [#uses=1] + %85 = getelementptr inbounds %union.GCObject* %84, i32 0, i32 0 ; [#uses=1] + %86 = bitcast %struct.lua_State* %85 to %union.Udata* ; [#uses=1] + %87 = getelementptr inbounds %union.Udata* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %4* %87, i32 0, i32 3 ; [#uses=1] + store %struct.Table* %79, %struct.Table** %88, align 4 + %89 = load %struct.Table** %mt, align 4 ; [#uses=1] + %90 = icmp ne %struct.Table* %89, null ; [#uses=1] + br i1 %90, label %91, label %130 + +; <label>:91 ; preds = %78 + %92 = load %struct.Table** %mt, align 4 ; [#uses=1] + %93 = bitcast %struct.Table* %92 to %union.GCObject* ; [#uses=1] + %94 = getelementptr inbounds %union.GCObject* %93, i32 0, i32 0 ; [#uses=1] + %95 = bitcast %struct.lua_State* %94 to %struct.GCheader* ; [#uses=1] + %96 = getelementptr inbounds %struct.GCheader* %95, i32 0, i32 2 ; [#uses=1] + %97 = load i8* %96, align 1 ; [#uses=1] + %98 = zext i8 %97 to i32 ; [#uses=1] + %99 = and i32 %98, 3 ; [#uses=1] + %100 = icmp ne i32 %99, 0 ; [#uses=1] + br i1 %100, label %101, label %129 + +; <label>:101 ; preds = %91 + %102 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.lua_TValue* %102, i32 0, i32 0 ; [#uses=1] + %104 = getelementptr inbounds %union.anon* %103, i32 0, i32 0 ; [#uses=1] + %105 = bitcast double* %104 to %union.GCObject** ; [#uses=1] + %106 = load %union.GCObject** %105, align 4 ; [#uses=1] + %107 = getelementptr inbounds %union.GCObject* %106, i32 0, i32 0 ; [#uses=1] + %108 = bitcast %struct.lua_State* %107 to %union.Udata* ; [#uses=1] + %109 = bitcast %union.Udata* %108 to %union.GCObject* ; [#uses=1] + %110 = getelementptr inbounds %union.GCObject* %109, i32 0, i32 0 ; [#uses=1] + %111 = bitcast %struct.lua_State* %110 to %struct.GCheader* ; [#uses=1] + %112 = getelementptr inbounds %struct.GCheader* %111, i32 0, i32 2 ; [#uses=1] + %113 = load i8* %112, align 1 ; [#uses=1] + %114 = zext i8 %113 to i32 ; [#uses=1] + %115 = and i32 %114, 4 ; [#uses=1] + %116 = icmp ne i32 %115, 0 ; [#uses=1] + br i1 %116, label %117, label %129 + +; <label>:117 ; preds = %101 + %118 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %119 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_TValue* %119, i32 0, i32 0 ; [#uses=1] + %121 = getelementptr inbounds %union.anon* %120, i32 0, i32 0 ; [#uses=1] + %122 = bitcast double* %121 to %union.GCObject** ; [#uses=1] + %123 = load %union.GCObject** %122, align 4 ; [#uses=1] + %124 = getelementptr inbounds %union.GCObject* %123, i32 0, i32 0 ; [#uses=1] + %125 = bitcast %struct.lua_State* %124 to %union.Udata* ; [#uses=1] + %126 = bitcast %union.Udata* %125 to %union.GCObject* ; [#uses=1] + %127 = load %struct.Table** %mt, align 4 ; [#uses=1] + %128 = bitcast %struct.Table* %127 to %union.GCObject* ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %118, %union.GCObject* %126, %union.GCObject* %128) + br label %129 + +; <label>:129 ; preds = %117, %101, %91 + br label %130 + +; <label>:130 ; preds = %129, %78 + br label %141 + +; <label>:131 ; preds = %25 + %132 = load %struct.Table** %mt, align 4 ; [#uses=1] + %133 = load %struct.lua_TValue** %obj, align 4 ; [#uses=1] + %134 = getelementptr inbounds %struct.lua_TValue* %133, i32 0, i32 1 ; [#uses=1] + %135 = load i32* %134, align 4 ; [#uses=1] + %136 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %137 = getelementptr inbounds %struct.lua_State* %136, i32 0, i32 6 ; [#uses=1] + %138 = load %struct.global_State** %137, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.global_State* %138, i32 0, i32 23 ; [#uses=1] + %140 = getelementptr inbounds [9 x %struct.Table*]* %139, i32 0, i32 %135 ; [#uses=1] + store %struct.Table* %132, %struct.Table** %140 + br label %141 + +; <label>:141 ; preds = %131, %130, %77 + %142 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %143 = getelementptr inbounds %struct.lua_State* %142, i32 0, i32 4 ; [#uses=2] + %144 = load %struct.lua_TValue** %143, align 4 ; [#uses=1] + %145 = getelementptr inbounds %struct.lua_TValue* %144, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %145, %struct.lua_TValue** %143, align 4 + ret i32 1 +} + +; [#uses=6] +define i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %res = alloca i32, align 4 ; [#uses=4] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i32 1, i32* %res, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %o, align 4 + %6 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + switch i32 %8, label %74 [ + i32 6, label %9 + i32 7, label %29 + i32 8, label %49 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 -1 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + %17 = load %union.GCObject** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.GCObject* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to %struct.Table* ; [#uses=1] + %20 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %union.anon* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast double* %22 to %union.GCObject** ; [#uses=1] + %24 = load %union.GCObject** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.GCObject* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast %struct.lua_State* %25 to %union.Closure* ; [#uses=1] + %27 = getelementptr inbounds %union.Closure* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %struct.CClosure* %27, i32 0, i32 6 ; [#uses=1] + store %struct.Table* %19, %struct.Table** %28, align 4 + br label %75 + +; <label>:29 ; preds = %0 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 4 ; [#uses=1] + %32 = load %struct.lua_TValue** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 -1 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 0 ; [#uses=1] + %35 = getelementptr inbounds %union.anon* %34, i32 0, i32 0 ; [#uses=1] + %36 = bitcast double* %35 to %union.GCObject** ; [#uses=1] + %37 = load %union.GCObject** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.GCObject* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.lua_State* %38 to %struct.Table* ; [#uses=1] + %40 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %union.anon* %41, i32 0, i32 0 ; [#uses=1] + %43 = bitcast double* %42 to %union.GCObject** ; [#uses=1] + %44 = load %union.GCObject** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.GCObject* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.lua_State* %45 to %union.Udata* ; [#uses=1] + %47 = getelementptr inbounds %union.Udata* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds %4* %47, i32 0, i32 4 ; [#uses=1] + store %struct.Table* %39, %struct.Table** %48, align 4 + br label %75 + +; <label>:49 ; preds = %0 + %50 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %union.anon* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast double* %52 to %union.GCObject** ; [#uses=1] + %54 = load %union.GCObject** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %union.GCObject* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %56, %struct.lua_TValue** %i_o, align 4 + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_State* %57, i32 0, i32 4 ; [#uses=1] + %59 = load %struct.lua_TValue** %58, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_TValue* %59, i32 -1 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 0 ; [#uses=1] + %62 = getelementptr inbounds %union.anon* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast double* %62 to %union.GCObject** ; [#uses=1] + %64 = load %union.GCObject** %63, align 4 ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %struct.Table* ; [#uses=1] + %67 = bitcast %struct.Table* %66 to %union.GCObject* ; [#uses=1] + %68 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_TValue* %68, i32 0, i32 0 ; [#uses=1] + %70 = getelementptr inbounds %union.anon* %69, i32 0, i32 0 ; [#uses=1] + %71 = bitcast double* %70 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %67, %union.GCObject** %71, align 4 + %72 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %72, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %73, align 4 + br label %75 + +; <label>:74 ; preds = %0 + store i32 0, i32* %res, align 4 + br label %75 + +; <label>:75 ; preds = %74, %49, %29, %9 + %76 = load i32* %res, align 4 ; [#uses=1] + %77 = icmp ne i32 %76, 0 ; [#uses=1] + br i1 %77, label %78, label %129 + +; <label>:78 ; preds = %75 + %79 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.lua_State* %79, i32 0, i32 4 ; [#uses=1] + %81 = load %struct.lua_TValue** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_TValue* %81, i32 -1 ; [#uses=1] + %83 = getelementptr inbounds %struct.lua_TValue* %82, i32 0, i32 0 ; [#uses=1] + %84 = getelementptr inbounds %union.anon* %83, i32 0, i32 0 ; [#uses=1] + %85 = bitcast double* %84 to %union.GCObject** ; [#uses=1] + %86 = load %union.GCObject** %85, align 4 ; [#uses=1] + %87 = getelementptr inbounds %union.GCObject* %86, i32 0, i32 0 ; [#uses=1] + %88 = bitcast %struct.lua_State* %87 to %struct.Table* ; [#uses=1] + %89 = bitcast %struct.Table* %88 to %union.GCObject* ; [#uses=1] + %90 = getelementptr inbounds %union.GCObject* %89, i32 0, i32 0 ; [#uses=1] + %91 = bitcast %struct.lua_State* %90 to %struct.GCheader* ; [#uses=1] + %92 = getelementptr inbounds %struct.GCheader* %91, i32 0, i32 2 ; [#uses=1] + %93 = load i8* %92, align 1 ; [#uses=1] + %94 = zext i8 %93 to i32 ; [#uses=1] + %95 = and i32 %94, 3 ; [#uses=1] + %96 = icmp ne i32 %95, 0 ; [#uses=1] + br i1 %96, label %97, label %128 + +; <label>:97 ; preds = %78 + %98 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_TValue* %98, i32 0, i32 0 ; [#uses=1] + %100 = getelementptr inbounds %union.anon* %99, i32 0, i32 0 ; [#uses=1] + %101 = bitcast double* %100 to %union.GCObject** ; [#uses=1] + %102 = load %union.GCObject** %101, align 4 ; [#uses=1] + %103 = getelementptr inbounds %union.GCObject* %102, i32 0, i32 0 ; [#uses=1] + %104 = bitcast %struct.lua_State* %103 to %struct.GCheader* ; [#uses=1] + %105 = getelementptr inbounds %struct.GCheader* %104, i32 0, i32 2 ; [#uses=1] + %106 = load i8* %105, align 1 ; [#uses=1] + %107 = zext i8 %106 to i32 ; [#uses=1] + %108 = and i32 %107, 4 ; [#uses=1] + %109 = icmp ne i32 %108, 0 ; [#uses=1] + br i1 %109, label %110, label %128 + +; <label>:110 ; preds = %97 + %111 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %112 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.lua_TValue* %112, i32 0, i32 0 ; [#uses=1] + %114 = getelementptr inbounds %union.anon* %113, i32 0, i32 0 ; [#uses=1] + %115 = bitcast double* %114 to %union.GCObject** ; [#uses=1] + %116 = load %union.GCObject** %115, align 4 ; [#uses=1] + %117 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %118 = getelementptr inbounds %struct.lua_State* %117, i32 0, i32 4 ; [#uses=1] + %119 = load %struct.lua_TValue** %118, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_TValue* %119, i32 -1 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_TValue* %120, i32 0, i32 0 ; [#uses=1] + %122 = getelementptr inbounds %union.anon* %121, i32 0, i32 0 ; [#uses=1] + %123 = bitcast double* %122 to %union.GCObject** ; [#uses=1] + %124 = load %union.GCObject** %123, align 4 ; [#uses=1] + %125 = getelementptr inbounds %union.GCObject* %124, i32 0, i32 0 ; [#uses=1] + %126 = bitcast %struct.lua_State* %125 to %struct.Table* ; [#uses=1] + %127 = bitcast %struct.Table* %126 to %union.GCObject* ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %111, %union.GCObject* %116, %union.GCObject* %127) + br label %128 + +; <label>:128 ; preds = %110, %97, %78 + br label %129 + +; <label>:129 ; preds = %128, %75 + %130 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %131 = getelementptr inbounds %struct.lua_State* %130, i32 0, i32 4 ; [#uses=2] + %132 = load %struct.lua_TValue** %131, align 4 ; [#uses=1] + %133 = getelementptr inbounds %struct.lua_TValue* %132, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %133, %struct.lua_TValue** %131, align 4 + %134 = load i32* %res, align 4 ; [#uses=1] + ret i32 %134 +} + +; [#uses=14] +define void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %L, i32 %nargs, i32 %nresults) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %func = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nargs, i32* %2, align 4 + store i32 %nresults, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = add nsw i32 %7, 1 ; [#uses=1] + %9 = sub i32 0, %8 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %6, i32 %9 ; [#uses=1] + store %struct.lua_TValue* %10, %struct.lua_TValue** %func, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %func, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %11, %struct.lua_TValue* %12, i32 %13) + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = icmp eq i32 %14, -1 ; [#uses=1] + br i1 %15, label %16, label %34 + +; <label>:16 ; preds = %0 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 4 ; [#uses=1] + %19 = load %struct.lua_TValue** %18, align 4 ; [#uses=1] + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 7 ; [#uses=1] + %22 = load %struct.CallInfo** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.CallInfo* %22, i32 0, i32 2 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = icmp uge %struct.lua_TValue* %19, %24 ; [#uses=1] + br i1 %25, label %26, label %34 + +; <label>:26 ; preds = %16 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 4 ; [#uses=1] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 7 ; [#uses=1] + %32 = load %struct.CallInfo** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.CallInfo* %32, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %29, %struct.lua_TValue** %33, align 4 + br label %34 + +; <label>:34 ; preds = %26, %16, %0 + ret void +} + +; [#uses=5] +define i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %L, i32 %nargs, i32 %nresults, i32 %errfunc) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=3] + %c = alloca %struct.CallS, align 4 ; [#uses=4] + %status = alloca i32, align 4 ; [#uses=2] + %func = alloca i32, align 4 ; [#uses=3] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nargs, i32* %2, align 4 + store i32 %nresults, i32* %3, align 4 + store i32 %errfunc, i32* %4, align 4 + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + store i32 0, i32* %func, align 4 + br label %21 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %4, align 4 ; [#uses=1] + %11 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %9, i32 %10) ; [#uses=1] + store %struct.lua_TValue* %11, %struct.lua_TValue** %o, align 4 + %12 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %13 = bitcast %struct.lua_TValue* %12 to i8* ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 10 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.lua_TValue* %16 to i8* ; [#uses=1] + %18 = ptrtoint i8* %13 to i32 ; [#uses=1] + %19 = ptrtoint i8* %17 to i32 ; [#uses=1] + %20 = sub i32 %18, %19 ; [#uses=1] + store i32 %20, i32* %func, align 4 + br label %21 + +; <label>:21 ; preds = %8, %7 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = load i32* %2, align 4 ; [#uses=1] + %26 = add nsw i32 %25, 1 ; [#uses=1] + %27 = sub i32 0, %26 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %24, i32 %27 ; [#uses=1] + %29 = getelementptr inbounds %struct.CallS* %c, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %29, align 4 + %30 = load i32* %3, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.CallS* %c, i32 0, i32 1 ; [#uses=1] + store i32 %30, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = bitcast %struct.CallS* %c to i8* ; [#uses=1] + %34 = getelementptr inbounds %struct.CallS* %c, i32 0, i32 0 ; [#uses=1] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = bitcast %struct.lua_TValue* %35 to i8* ; [#uses=1] + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 10 ; [#uses=1] + %39 = load %struct.lua_TValue** %38, align 4 ; [#uses=1] + %40 = bitcast %struct.lua_TValue* %39 to i8* ; [#uses=1] + %41 = ptrtoint i8* %36 to i32 ; [#uses=1] + %42 = ptrtoint i8* %40 to i32 ; [#uses=1] + %43 = sub i32 %41, %42 ; [#uses=1] + %44 = load i32* %func, align 4 ; [#uses=1] + %45 = call i32 @_Z10luaD_pcallP9lua_StatePFvS0_PvES1_ii(%struct.lua_State* %32, void (%struct.lua_State*, i8*)* @_Z6f_callP9lua_StatePv, i8* %33, i32 %43, i32 %44) ; [#uses=1] + store i32 %45, i32* %status, align 4 + %46 = load i32* %3, align 4 ; [#uses=1] + %47 = icmp eq i32 %46, -1 ; [#uses=1] + br i1 %47, label %48, label %66 + +; <label>:48 ; preds = %21 + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 4 ; [#uses=1] + %51 = load %struct.lua_TValue** %50, align 4 ; [#uses=1] + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_State* %52, i32 0, i32 7 ; [#uses=1] + %54 = load %struct.CallInfo** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.CallInfo* %54, i32 0, i32 2 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + %57 = icmp uge %struct.lua_TValue* %51, %56 ; [#uses=1] + br i1 %57, label %58, label %66 + +; <label>:58 ; preds = %48 + %59 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_State* %59, i32 0, i32 4 ; [#uses=1] + %61 = load %struct.lua_TValue** %60, align 4 ; [#uses=1] + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_State* %62, i32 0, i32 7 ; [#uses=1] + %64 = load %struct.CallInfo** %63, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.CallInfo* %64, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %61, %struct.lua_TValue** %65, align 4 + br label %66 + +; <label>:66 ; preds = %58, %48, %21 + %67 = load i32* %status, align 4 ; [#uses=1] + ret i32 %67 +} + +; [#uses=1] +define internal void @_Z6f_callP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=2] + %c = alloca %struct.CallS*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = bitcast i8* %3 to %struct.CallS* ; [#uses=1] + store %struct.CallS* %4, %struct.CallS** %c, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.CallS** %c, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.CallS* %6, i32 0, i32 0 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = load %struct.CallS** %c, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallS* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %5, %struct.lua_TValue* %8, i32 %11) + ret void +} + +; [#uses=1] +define i32 @_Z10lua_cpcallP9lua_StatePFiS0_EPv(%struct.lua_State* %L, i32 (%struct.lua_State*)* %func, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %c = alloca %struct.CCallS, align 4 ; [#uses=3] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 (%struct.lua_State*)* %func, i32 (%struct.lua_State*)** %2, align 4 + store i8* %ud, i8** %3, align 4 + %4 = load i32 (%struct.lua_State*)** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.CCallS* %c, i32 0, i32 0 ; [#uses=1] + store i32 (%struct.lua_State*)* %4, i32 (%struct.lua_State*)** %5, align 4 + %6 = load i8** %3, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.CCallS* %c, i32 0, i32 1 ; [#uses=1] + store i8* %6, i8** %7, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = bitcast %struct.CCallS* %c to i8* ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = bitcast %struct.lua_TValue* %12 to i8* ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 10 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.lua_TValue* %16 to i8* ; [#uses=1] + %18 = ptrtoint i8* %13 to i32 ; [#uses=1] + %19 = ptrtoint i8* %17 to i32 ; [#uses=1] + %20 = sub i32 %18, %19 ; [#uses=1] + %21 = call i32 @_Z10luaD_pcallP9lua_StatePFvS0_PvES1_ii(%struct.lua_State* %8, void (%struct.lua_State*, i8*)* @_Z7f_CcallP9lua_StatePv, i8* %9, i32 %20, i32 0) ; [#uses=1] + store i32 %21, i32* %status, align 4 + %22 = load i32* %status, align 4 ; [#uses=1] + ret i32 %22 +} + +; [#uses=1] +define internal void @_Z7f_CcallP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i8*, align 4 ; [#uses=2] + %c = alloca %struct.CCallS*, align 4 ; [#uses=3] + %cl = alloca %union.Closure*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = bitcast i8* %3 to %struct.CCallS* ; [#uses=1] + store %struct.CCallS* %4, %struct.CCallS** %c, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call %struct.Table* @_Z10getcurrenvP9lua_State(%struct.lua_State* %6) ; [#uses=1] + %8 = call %union.Closure* @_Z16luaF_newCclosureP9lua_StateiP5Table(%struct.lua_State* %5, i32 0, %struct.Table* %7) ; [#uses=1] + store %union.Closure* %8, %union.Closure** %cl, align 4 + %9 = load %struct.CCallS** %c, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CCallS* %9, i32 0, i32 0 ; [#uses=1] + %11 = load i32 (%struct.lua_State*)** %10, align 4 ; [#uses=1] + %12 = load %union.Closure** %cl, align 4 ; [#uses=1] + %13 = getelementptr inbounds %union.Closure* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %struct.CClosure* %13, i32 0, i32 7 ; [#uses=1] + store i32 (%struct.lua_State*)* %11, i32 (%struct.lua_State*)** %14, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %i_o, align 4 + %18 = load %union.Closure** %cl, align 4 ; [#uses=1] + %19 = bitcast %union.Closure* %18 to %union.GCObject* ; [#uses=1] + %20 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %union.anon* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast double* %22 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %19, %union.GCObject** %23, align 4 + %24 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 1 ; [#uses=1] + store i32 6, i32* %25, align 4 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_State* %26, i32 0, i32 4 ; [#uses=2] + %28 = load %struct.lua_TValue** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 1 ; [#uses=1] + store %struct.lua_TValue* %29, %struct.lua_TValue** %27, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 4 ; [#uses=1] + %32 = load %struct.lua_TValue** %31, align 4 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %i_o1, align 4 + %33 = load %struct.CCallS** %c, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.CCallS* %33, i32 0, i32 1 ; [#uses=1] + %35 = load i8** %34, align 4 ; [#uses=1] + %36 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %union.anon* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast double* %38 to i8** ; [#uses=1] + store i8* %35, i8** %39, align 4 + %40 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 1 ; [#uses=1] + store i32 2, i32* %41, align 4 + %42 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_State* %42, i32 0, i32 4 ; [#uses=2] + %44 = load %struct.lua_TValue** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 1 ; [#uses=1] + store %struct.lua_TValue* %45, %struct.lua_TValue** %43, align 4 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 4 ; [#uses=1] + %49 = load %struct.lua_TValue** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 -2 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %46, %struct.lua_TValue* %50, i32 0) + ret void +} + +; [#uses=3] +define i32 @_Z8lua_loadP9lua_StatePFPKcS0_PvPjES3_S2_(%struct.lua_State* %L, i8* (%struct.lua_State*, i8*, i32*)* %reader, i8* %data, i8* %chunkname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8* (%struct.lua_State*, i8*, i32*)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=4] + %z = alloca %struct.Zio, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* (%struct.lua_State*, i8*, i32*)* %reader, i8* (%struct.lua_State*, i8*, i32*)** %2, align 4 + store i8* %data, i8** %3, align 4 + store i8* %chunkname, i8** %4, align 4 + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = icmp ne i8* %5, null ; [#uses=1] + br i1 %6, label %8, label %7 + +; <label>:7 ; preds = %0 + store i8* getelementptr inbounds ([2 x i8]* @.str230, i32 0, i32 0), i8** %4, align 4 + br label %8 + +; <label>:8 ; preds = %7, %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i8* (%struct.lua_State*, i8*, i32*)** %2, align 4 ; [#uses=1] + %11 = load i8** %3, align 4 ; [#uses=1] + call void @_Z9luaZ_initP9lua_StateP3ZioPFPKcS0_PvPjES5_(%struct.lua_State* %9, %struct.Zio* %z, i8* (%struct.lua_State*, i8*, i32*)* %10, i8* %11) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i8** %4, align 4 ; [#uses=1] + %14 = call i32 @_Z20luaD_protectedparserP9lua_StateP3ZioPKc(%struct.lua_State* %12, %struct.Zio* %z, i8* %13) ; [#uses=1] + store i32 %14, i32* %status, align 4 + %15 = load i32* %status, align 4 ; [#uses=1] + ret i32 %15 +} + +; [#uses=1] +define i32 @_Z8lua_dumpP9lua_StatePFiS0_PKvjPvES3_(%struct.lua_State* %L, i32 (%struct.lua_State*, i8*, i32, i8*)* %writer, i8* %data) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32 (%struct.lua_State*, i8*, i32, i8*)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=3] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 (%struct.lua_State*, i8*, i32, i8*)* %writer, i32 (%struct.lua_State*, i8*, i32, i8*)** %2, align 4 + store i8* %data, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %o, align 4 + %8 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp eq i32 %10, 6 ; [#uses=1] + br i1 %11, label %12, label %40 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + %17 = load %union.GCObject** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.GCObject* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to %union.Closure* ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %struct.CClosure* %20, i32 0, i32 3 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = icmp ne i8 %22, 0 ; [#uses=1] + br i1 %23, label %40, label %24 + +; <label>:24 ; preds = %12 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + %30 = load %union.GCObject** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.GCObject* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to %union.Closure* ; [#uses=1] + %33 = getelementptr inbounds %union.Closure* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast %struct.CClosure* %33 to %struct.LClosure* ; [#uses=1] + %35 = getelementptr inbounds %struct.LClosure* %34, i32 0, i32 7 ; [#uses=1] + %36 = load %struct.Proto** %35, align 4 ; [#uses=1] + %37 = load i32 (%struct.lua_State*, i8*, i32, i8*)** %2, align 4 ; [#uses=1] + %38 = load i8** %3, align 4 ; [#uses=1] + %39 = call i32 @_Z9luaU_dumpP9lua_StatePK5ProtoPFiS0_PKvjPvES6_i(%struct.lua_State* %25, %struct.Proto* %36, i32 (%struct.lua_State*, i8*, i32, i8*)* %37, i8* %38, i32 0) ; [#uses=1] + store i32 %39, i32* %status, align 4 + br label %41 + +; <label>:40 ; preds = %12, %0 + store i32 1, i32* %status, align 4 + br label %41 + +; <label>:41 ; preds = %40, %24 + %42 = load i32* %status, align 4 ; [#uses=1] + ret i32 %42 +} + +; [#uses=1] +define i32 @_Z10lua_statusP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 3 ; [#uses=1] + %4 = load i8* %3, align 1 ; [#uses=1] + %5 = zext i8 %4 to i32 ; [#uses=1] + ret i32 %5 +} + +; [#uses=6] +define i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %L, i32 %what, i32 %data) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=4] + %res = alloca i32, align 4 ; [#uses=8] + %g = alloca %struct.global_State*, align 4 ; [#uses=17] + %a = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %what, i32* %2, align 4 + store i32 %data, i32* %3, align 4 + store i32 0, i32* %res, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + store %struct.global_State* %6, %struct.global_State** %g, align 4 + %7 = load i32* %2, align 4 ; [#uses=1] + switch i32 %7, label %81 [ + i32 0, label %8 + i32 1, label %11 + i32 2, label %17 + i32 3, label %19 + i32 4, label %24 + i32 5, label %29 + i32 6, label %67 + i32 7, label %74 + ] + +; <label>:8 ; preds = %0 + %9 = load %struct.global_State** %g, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.global_State* %9, i32 0, i32 13 ; [#uses=1] + store i32 -3, i32* %10, align 4 + br label %82 + +; <label>:11 ; preds = %0 + %12 = load %struct.global_State** %g, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.global_State* %12, i32 0, i32 14 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = load %struct.global_State** %g, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.global_State* %15, i32 0, i32 13 ; [#uses=1] + store i32 %14, i32* %16, align 4 + br label %82 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11luaC_fullgcP9lua_State(%struct.lua_State* %18) + br label %82 + +; <label>:19 ; preds = %0 + %20 = load %struct.global_State** %g, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.global_State* %20, i32 0, i32 14 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = lshr i32 %22, 10 ; [#uses=1] + store i32 %23, i32* %res, align 4 + br label %82 + +; <label>:24 ; preds = %0 + %25 = load %struct.global_State** %g, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.global_State* %25, i32 0, i32 14 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = and i32 %27, 1023 ; [#uses=1] + store i32 %28, i32* %res, align 4 + br label %82 + +; <label>:29 ; preds = %0 + %30 = load i32* %3, align 4 ; [#uses=1] + %31 = shl i32 %30, 10 ; [#uses=1] + store i32 %31, i32* %a, align 4 + %32 = load i32* %a, align 4 ; [#uses=1] + %33 = load %struct.global_State** %g, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.global_State* %33, i32 0, i32 14 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + %36 = icmp ule i32 %32, %35 ; [#uses=1] + br i1 %36, label %37, label %45 + +; <label>:37 ; preds = %29 + %38 = load %struct.global_State** %g, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.global_State* %38, i32 0, i32 14 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = load i32* %a, align 4 ; [#uses=1] + %42 = sub i32 %40, %41 ; [#uses=1] + %43 = load %struct.global_State** %g, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.global_State* %43, i32 0, i32 13 ; [#uses=1] + store i32 %42, i32* %44, align 4 + br label %48 + +; <label>:45 ; preds = %29 + %46 = load %struct.global_State** %g, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.global_State* %46, i32 0, i32 13 ; [#uses=1] + store i32 0, i32* %47, align 4 + br label %48 + +; <label>:48 ; preds = %45, %37 + br label %49 + +; <label>:49 ; preds = %65, %48 + %50 = load %struct.global_State** %g, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.global_State* %50, i32 0, i32 13 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = load %struct.global_State** %g, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.global_State* %53, i32 0, i32 14 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + %56 = icmp ule i32 %52, %55 ; [#uses=1] + br i1 %56, label %57, label %66 + +; <label>:57 ; preds = %49 + %58 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %58) + %59 = load %struct.global_State** %g, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.global_State* %59, i32 0, i32 4 ; [#uses=1] + %61 = load i8* %60, align 1 ; [#uses=1] + %62 = zext i8 %61 to i32 ; [#uses=1] + %63 = icmp eq i32 %62, 0 ; [#uses=1] + br i1 %63, label %64, label %65 + +; <label>:64 ; preds = %57 + store i32 1, i32* %res, align 4 + br label %66 + +; <label>:65 ; preds = %57 + br label %49 + +; <label>:66 ; preds = %64, %49 + br label %82 + +; <label>:67 ; preds = %0 + %68 = load %struct.global_State** %g, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.global_State* %68, i32 0, i32 17 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + store i32 %70, i32* %res, align 4 + %71 = load i32* %3, align 4 ; [#uses=1] + %72 = load %struct.global_State** %g, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.global_State* %72, i32 0, i32 17 ; [#uses=1] + store i32 %71, i32* %73, align 4 + br label %82 + +; <label>:74 ; preds = %0 + %75 = load %struct.global_State** %g, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.global_State* %75, i32 0, i32 18 ; [#uses=1] + %77 = load i32* %76, align 4 ; [#uses=1] + store i32 %77, i32* %res, align 4 + %78 = load i32* %3, align 4 ; [#uses=1] + %79 = load %struct.global_State** %g, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.global_State* %79, i32 0, i32 18 ; [#uses=1] + store i32 %78, i32* %80, align 4 + br label %82 + +; <label>:81 ; preds = %0 + store i32 -1, i32* %res, align 4 + br label %82 + +; <label>:82 ; preds = %81, %74, %67, %66, %24, %19, %17, %11, %8 + %83 = load i32* %res, align 4 ; [#uses=1] + ret i32 %83 +} + +; [#uses=4] +define i32 @_Z9lua_errorP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaG_errormsgP9lua_State(%struct.lua_State* %2) + ret i32 0 +} + +; [#uses=3] +define i32 @_Z8lua_nextP9lua_Statei(%struct.lua_State* %L, i32 %idx) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %more = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %t, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %t, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast double* %9 to %union.GCObject** ; [#uses=1] + %11 = load %union.GCObject** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.GCObject* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %struct.lua_State* %12 to %struct.Table* ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 4 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 -1 ; [#uses=1] + %18 = call i32 @_Z9luaH_nextP9lua_StateP5TableP10lua_TValue(%struct.lua_State* %6, %struct.Table* %13, %struct.lua_TValue* %17) ; [#uses=1] + store i32 %18, i32* %more, align 4 + %19 = load i32* %more, align 4 ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %26 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=2] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 1 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %23, align 4 + br label %31 + +; <label>:26 ; preds = %0 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 4 ; [#uses=2] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %30, %struct.lua_TValue** %28, align 4 + br label %31 + +; <label>:31 ; preds = %26, %21 + %32 = load i32* %more, align 4 ; [#uses=1] + ret i32 %32 +} + +; [#uses=10] +define void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %L, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca i32, align 4 ; [#uses=5] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %n, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = icmp sge i32 %3, 2 ; [#uses=1] + br i1 %4, label %5, label %40 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 6 ; [#uses=1] + %8 = load %struct.global_State** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 14 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 6 ; [#uses=1] + %13 = load %struct.global_State** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 13 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = icmp uge i32 %10, %15 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %5 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %18) + br label %19 + +; <label>:19 ; preds = %17, %5 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = load i32* %2, align 4 ; [#uses=1] + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 5 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = ptrtoint %struct.lua_TValue* %24 to i32 ; [#uses=1] + %29 = ptrtoint %struct.lua_TValue* %27 to i32 ; [#uses=1] + %30 = sub i32 %28, %29 ; [#uses=1] + %31 = sdiv exact i32 %30, 12 ; [#uses=1] + %32 = sub nsw i32 %31, 1 ; [#uses=1] + call void @_Z11luaV_concatP9lua_Stateii(%struct.lua_State* %20, i32 %21, i32 %32) + %33 = load i32* %2, align 4 ; [#uses=1] + %34 = sub nsw i32 %33, 1 ; [#uses=1] + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 4 ; [#uses=2] + %37 = load %struct.lua_TValue** %36, align 4 ; [#uses=1] + %38 = sub i32 0, %34 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %37, i32 %38 ; [#uses=1] + store %struct.lua_TValue* %39, %struct.lua_TValue** %36, align 4 + br label %61 + +; <label>:40 ; preds = %0 + %41 = load i32* %2, align 4 ; [#uses=1] + %42 = icmp eq i32 %41, 0 ; [#uses=1] + br i1 %42, label %43, label %60 + +; <label>:43 ; preds = %40 + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_State* %44, i32 0, i32 4 ; [#uses=1] + %46 = load %struct.lua_TValue** %45, align 4 ; [#uses=1] + store %struct.lua_TValue* %46, %struct.lua_TValue** %i_o, align 4 + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %47, i8* getelementptr inbounds ([1 x i8]* @.str331, i32 0, i32 0), i32 0) ; [#uses=1] + %49 = bitcast %union.TString* %48 to %union.GCObject* ; [#uses=1] + %50 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %union.anon* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast double* %52 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %49, %union.GCObject** %53, align 4 + %54 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %55, align 4 + %56 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_State* %56, i32 0, i32 4 ; [#uses=2] + %58 = load %struct.lua_TValue** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 1 ; [#uses=1] + store %struct.lua_TValue* %59, %struct.lua_TValue** %57, align 4 + br label %60 + +; <label>:60 ; preds = %43, %40 + br label %61 + +; <label>:61 ; preds = %60, %19 + ret void +} + +; [#uses=0] +define i8* (i8*, i8*, i32, i32)* @_Z13lua_getallocfP9lua_StatePPv(%struct.lua_State* %L, i8** %ud) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8**, align 4 ; [#uses=3] + %f = alloca i8* (i8*, i8*, i32, i32)*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8** %ud, i8*** %2, align 4 + %3 = load i8*** %2, align 4 ; [#uses=1] + %4 = icmp ne i8** %3, null ; [#uses=1] + br i1 %4, label %5, label %12 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 6 ; [#uses=1] + %8 = load %struct.global_State** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 2 ; [#uses=1] + %10 = load i8** %9, align 4 ; [#uses=1] + %11 = load i8*** %2, align 4 ; [#uses=1] + store i8* %10, i8** %11 + br label %12 + +; <label>:12 ; preds = %5, %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 6 ; [#uses=1] + %15 = load %struct.global_State** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.global_State* %15, i32 0, i32 1 ; [#uses=1] + %17 = load i8* (i8*, i8*, i32, i32)** %16, align 4 ; [#uses=1] + store i8* (i8*, i8*, i32, i32)* %17, i8* (i8*, i8*, i32, i32)** %f, align 4 + %18 = load i8* (i8*, i8*, i32, i32)** %f, align 4 ; [#uses=1] + ret i8* (i8*, i8*, i32, i32)* %18 +} + +; [#uses=0] +define void @_Z13lua_setallocfP9lua_StatePFPvS1_S1_jjES1_(%struct.lua_State* %L, i8* (i8*, i8*, i32, i32)* %f, i8* %ud) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8* (i8*, i8*, i32, i32)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* (i8*, i8*, i32, i32)* %f, i8* (i8*, i8*, i32, i32)** %2, align 4 + store i8* %ud, i8** %3, align 4 + %4 = load i8** %3, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 6 ; [#uses=1] + %7 = load %struct.global_State** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 2 ; [#uses=1] + store i8* %4, i8** %8, align 4 + %9 = load i8* (i8*, i8*, i32, i32)** %2, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 6 ; [#uses=1] + %12 = load %struct.global_State** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.global_State* %12, i32 0, i32 1 ; [#uses=1] + store i8* (i8*, i8*, i32, i32)* %9, i8* (i8*, i8*, i32, i32)** %13, align 4 + ret void +} + +; [#uses=3] +define i8* @_Z15lua_newuserdataP9lua_Statej(%struct.lua_State* %L, i32 %size) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=2] + %u = alloca %union.Udata*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %size, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 14 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 6 ; [#uses=1] + %10 = load %struct.global_State** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.global_State* %10, i32 0, i32 13 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp uge i32 %7, %12 ; [#uses=1] + br i1 %13, label %14, label %16 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %15) + br label %16 + +; <label>:16 ; preds = %14, %0 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = load i32* %2, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = call %struct.Table* @_Z10getcurrenvP9lua_State(%struct.lua_State* %19) ; [#uses=1] + %21 = call %union.Udata* @_Z13luaS_newudataP9lua_StatejP5Table(%struct.lua_State* %17, i32 %18, %struct.Table* %20) ; [#uses=1] + store %union.Udata* %21, %union.Udata** %u, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %i_o, align 4 + %25 = load %union.Udata** %u, align 4 ; [#uses=1] + %26 = bitcast %union.Udata* %25 to %union.GCObject* ; [#uses=1] + %27 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast double* %29 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %26, %union.GCObject** %30, align 4 + %31 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 1 ; [#uses=1] + store i32 7, i32* %32, align 4 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 4 ; [#uses=2] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 1 ; [#uses=1] + store %struct.lua_TValue* %36, %struct.lua_TValue** %34, align 4 + %37 = load %union.Udata** %u, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.Udata* %37, i32 1 ; [#uses=1] + %39 = bitcast %union.Udata* %38 to i8* ; [#uses=1] + ret i8* %39 +} + +; [#uses=1] +define i8* @_Z14lua_getupvalueP9lua_Stateii(%struct.lua_State* %L, i32 %funcindex, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %name = alloca i8*, align 4 ; [#uses=3] + %val = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %funcindex, i32* %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = call i8* @_Z11aux_upvalueP10lua_TValueiPS0_(%struct.lua_TValue* %6, i32 %7, %struct.lua_TValue** %val) ; [#uses=1] + store i8* %8, i8** %name, align 4 + %9 = load i8** %name, align 4 ; [#uses=1] + %10 = icmp ne i8* %9, null ; [#uses=1] + br i1 %10, label %11, label %31 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_TValue** %val, align 4 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %o2, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %o1, align 4 + %16 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 0 ; [#uses=1] + %18 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %union.anon* %17 to i8* ; [#uses=1] + %21 = bitcast %union.anon* %19 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %20, i8* %21, i32 8, i32 4, i1 false) + %22 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + store i32 %24, i32* %26, align 4 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 4 ; [#uses=2] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 1 ; [#uses=1] + store %struct.lua_TValue* %30, %struct.lua_TValue** %28, align 4 + br label %31 + +; <label>:31 ; preds = %11, %0 + %32 = load i8** %name, align 4 ; [#uses=1] + ret i8* %32 +} + +; [#uses=2] +define internal i8* @_Z11aux_upvalueP10lua_TValueiPS0_(%struct.lua_TValue* %fi, i32 %n, %struct.lua_TValue** %val) nounwind { + %1 = alloca i8*, align 4 ; [#uses=6] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=8] + %4 = alloca %struct.lua_TValue**, align 4 ; [#uses=3] + %f = alloca %union.Closure*, align 4 ; [#uses=6] + %p = alloca %struct.Proto*, align 4 ; [#uses=3] + store %struct.lua_TValue* %fi, %struct.lua_TValue** %2, align 4 + store i32 %n, i32* %3, align 4 + store %struct.lua_TValue** %val, %struct.lua_TValue*** %4, align 4 + %5 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 6 ; [#uses=1] + br i1 %8, label %10, label %9 + +; <label>:9 ; preds = %0 + store i8* null, i8** %1 + br label %79 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Closure* ; [#uses=1] + store %union.Closure* %17, %union.Closure** %f, align 4 + %18 = load %union.Closure** %f, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.Closure* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %struct.CClosure* %19, i32 0, i32 3 ; [#uses=1] + %21 = load i8* %20, align 1 ; [#uses=1] + %22 = icmp ne i8 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %43 + +; <label>:23 ; preds = %10 + %24 = load i32* %3, align 4 ; [#uses=1] + %25 = icmp sle i32 1, %24 ; [#uses=1] + br i1 %25, label %26, label %34 + +; <label>:26 ; preds = %23 + %27 = load i32* %3, align 4 ; [#uses=1] + %28 = load %union.Closure** %f, align 4 ; [#uses=1] + %29 = getelementptr inbounds %union.Closure* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %struct.CClosure* %29, i32 0, i32 4 ; [#uses=1] + %31 = load i8* %30, align 1 ; [#uses=1] + %32 = zext i8 %31 to i32 ; [#uses=1] + %33 = icmp sle i32 %27, %32 ; [#uses=1] + br i1 %33, label %35, label %34 + +; <label>:34 ; preds = %26, %23 + store i8* null, i8** %1 + br label %79 + +; <label>:35 ; preds = %26 + %36 = load i32* %3, align 4 ; [#uses=1] + %37 = sub nsw i32 %36, 1 ; [#uses=1] + %38 = load %union.Closure** %f, align 4 ; [#uses=1] + %39 = getelementptr inbounds %union.Closure* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %struct.CClosure* %39, i32 0, i32 8 ; [#uses=1] + %41 = getelementptr inbounds [1 x %struct.lua_TValue]* %40, i32 0, i32 %37 ; [#uses=1] + %42 = load %struct.lua_TValue*** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %41, %struct.lua_TValue** %42 + store i8* getelementptr inbounds ([1 x i8]* @.str331, i32 0, i32 0), i8** %1 + br label %79 + +; <label>:43 ; preds = %10 + %44 = load %union.Closure** %f, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.Closure* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.CClosure* %45 to %struct.LClosure* ; [#uses=1] + %47 = getelementptr inbounds %struct.LClosure* %46, i32 0, i32 7 ; [#uses=1] + %48 = load %struct.Proto** %47, align 4 ; [#uses=1] + store %struct.Proto* %48, %struct.Proto** %p, align 4 + %49 = load i32* %3, align 4 ; [#uses=1] + %50 = icmp sle i32 1, %49 ; [#uses=1] + br i1 %50, label %51, label %57 + +; <label>:51 ; preds = %43 + %52 = load i32* %3, align 4 ; [#uses=1] + %53 = load %struct.Proto** %p, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Proto* %53, i32 0, i32 10 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + %56 = icmp sle i32 %52, %55 ; [#uses=1] + br i1 %56, label %58, label %57 + +; <label>:57 ; preds = %51, %43 + store i8* null, i8** %1 + br label %79 + +; <label>:58 ; preds = %51 + %59 = load i32* %3, align 4 ; [#uses=1] + %60 = sub nsw i32 %59, 1 ; [#uses=1] + %61 = load %union.Closure** %f, align 4 ; [#uses=1] + %62 = getelementptr inbounds %union.Closure* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast %struct.CClosure* %62 to %struct.LClosure* ; [#uses=1] + %64 = getelementptr inbounds %struct.LClosure* %63, i32 0, i32 8 ; [#uses=1] + %65 = getelementptr inbounds [1 x %struct.UpVal*]* %64, i32 0, i32 %60 ; [#uses=1] + %66 = load %struct.UpVal** %65 ; [#uses=1] + %67 = getelementptr inbounds %struct.UpVal* %66, i32 0, i32 3 ; [#uses=1] + %68 = load %struct.lua_TValue** %67, align 4 ; [#uses=1] + %69 = load %struct.lua_TValue*** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %68, %struct.lua_TValue** %69 + %70 = load i32* %3, align 4 ; [#uses=1] + %71 = sub nsw i32 %70, 1 ; [#uses=1] + %72 = load %struct.Proto** %p, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Proto* %72, i32 0, i32 8 ; [#uses=1] + %74 = load %union.TString*** %73, align 4 ; [#uses=1] + %75 = getelementptr inbounds %union.TString** %74, i32 %71 ; [#uses=1] + %76 = load %union.TString** %75 ; [#uses=1] + %77 = getelementptr inbounds %union.TString* %76, i32 1 ; [#uses=1] + %78 = bitcast %union.TString* %77 to i8* ; [#uses=1] + store i8* %78, i8** %1 + br label %79 + +; <label>:79 ; preds = %58, %57, %35, %34, %9 + %80 = load i8** %1 ; [#uses=1] + ret i8* %80 +} + +; [#uses=1] +define i8* @_Z14lua_setupvalueP9lua_Stateii(%struct.lua_State* %L, i32 %funcindex, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %name = alloca i8*, align 4 ; [#uses=3] + %val = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %fi = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %funcindex, i32* %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call %struct.lua_TValue* @_Z9index2adrP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %fi, align 4 + %7 = load %struct.lua_TValue** %fi, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call i8* @_Z11aux_upvalueP10lua_TValueiPS0_(%struct.lua_TValue* %7, i32 %8, %struct.lua_TValue** %val) ; [#uses=1] + store i8* %9, i8** %name, align 4 + %10 = load i8** %name, align 4 ; [#uses=1] + %11 = icmp ne i8* %10, null ; [#uses=1] + br i1 %11, label %12, label %87 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=2] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %14, align 4 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 4 ; [#uses=1] + %19 = load %struct.lua_TValue** %18, align 4 ; [#uses=1] + store %struct.lua_TValue* %19, %struct.lua_TValue** %o2, align 4 + %20 = load %struct.lua_TValue** %val, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %o1, align 4 + %21 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast %union.anon* %22 to i8* ; [#uses=1] + %26 = bitcast %union.anon* %24 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %25, i8* %26, i32 8, i32 4, i1 false) + %27 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 1 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 1 ; [#uses=1] + store i32 %29, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 4 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp sge i32 %36, 4 ; [#uses=1] + br i1 %37, label %38, label %86 + +; <label>:38 ; preds = %12 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 4 ; [#uses=1] + %41 = load %struct.lua_TValue** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %41, i32 0, i32 0 ; [#uses=1] + %43 = getelementptr inbounds %union.anon* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast double* %43 to %union.GCObject** ; [#uses=1] + %45 = load %union.GCObject** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %union.GCObject* %45, i32 0, i32 0 ; [#uses=1] + %47 = bitcast %struct.lua_State* %46 to %struct.GCheader* ; [#uses=1] + %48 = getelementptr inbounds %struct.GCheader* %47, i32 0, i32 2 ; [#uses=1] + %49 = load i8* %48, align 1 ; [#uses=1] + %50 = zext i8 %49 to i32 ; [#uses=1] + %51 = and i32 %50, 3 ; [#uses=1] + %52 = icmp ne i32 %51, 0 ; [#uses=1] + br i1 %52, label %53, label %86 + +; <label>:53 ; preds = %38 + %54 = load %struct.lua_TValue** %fi, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %union.anon* %55, i32 0, i32 0 ; [#uses=1] + %57 = bitcast double* %56 to %union.GCObject** ; [#uses=1] + %58 = load %union.GCObject** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %union.GCObject* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast %struct.lua_State* %59 to %union.Closure* ; [#uses=1] + %61 = bitcast %union.Closure* %60 to %union.GCObject* ; [#uses=1] + %62 = getelementptr inbounds %union.GCObject* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast %struct.lua_State* %62 to %struct.GCheader* ; [#uses=1] + %64 = getelementptr inbounds %struct.GCheader* %63, i32 0, i32 2 ; [#uses=1] + %65 = load i8* %64, align 1 ; [#uses=1] + %66 = zext i8 %65 to i32 ; [#uses=1] + %67 = and i32 %66, 4 ; [#uses=1] + %68 = icmp ne i32 %67, 0 ; [#uses=1] + br i1 %68, label %69, label %86 + +; <label>:69 ; preds = %53 + %70 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %71 = load %struct.lua_TValue** %fi, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_TValue* %71, i32 0, i32 0 ; [#uses=1] + %73 = getelementptr inbounds %union.anon* %72, i32 0, i32 0 ; [#uses=1] + %74 = bitcast double* %73 to %union.GCObject** ; [#uses=1] + %75 = load %union.GCObject** %74, align 4 ; [#uses=1] + %76 = getelementptr inbounds %union.GCObject* %75, i32 0, i32 0 ; [#uses=1] + %77 = bitcast %struct.lua_State* %76 to %union.Closure* ; [#uses=1] + %78 = bitcast %union.Closure* %77 to %union.GCObject* ; [#uses=1] + %79 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.lua_State* %79, i32 0, i32 4 ; [#uses=1] + %81 = load %struct.lua_TValue** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_TValue* %81, i32 0, i32 0 ; [#uses=1] + %83 = getelementptr inbounds %union.anon* %82, i32 0, i32 0 ; [#uses=1] + %84 = bitcast double* %83 to %union.GCObject** ; [#uses=1] + %85 = load %union.GCObject** %84, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %70, %union.GCObject* %78, %union.GCObject* %85) + br label %86 + +; <label>:86 ; preds = %69, %53, %38, %12 + br label %87 + +; <label>:87 ; preds = %86, %0 + %88 = load i8** %name, align 4 ; [#uses=1] + ret i8* %88 +} + +; [#uses=2] +define hidden void @_Z8luaK_nilP9FuncStateii(%struct.FuncState* %fs, i32 %from, i32 %n) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=8] + %3 = alloca i32, align 4 ; [#uses=4] + %previous = alloca i32*, align 4 ; [#uses=6] + %pfrom = alloca i32, align 4 ; [#uses=2] + %pto = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %from, i32* %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.FuncState* %4, i32 0, i32 6 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 7 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp sgt i32 %6, %9 ; [#uses=1] + br i1 %10, label %11, label %81 + +; <label>:11 ; preds = %0 + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.FuncState* %12, i32 0, i32 6 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = icmp eq i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %25 + +; <label>:16 ; preds = %11 + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.FuncState* %18, i32 0, i32 13 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = icmp sge i32 %17, %21 ; [#uses=1] + br i1 %22, label %23, label %24 + +; <label>:23 ; preds = %16 + br label %89 + +; <label>:24 ; preds = %16 + br label %80 + +; <label>:25 ; preds = %11 + %26 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.FuncState* %26, i32 0, i32 6 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = sub nsw i32 %28, 1 ; [#uses=1] + %30 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.FuncState* %30, i32 0, i32 0 ; [#uses=1] + %32 = load %struct.Proto** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.Proto* %32, i32 0, i32 4 ; [#uses=1] + %34 = load i32** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds i32* %34, i32 %29 ; [#uses=1] + store i32* %35, i32** %previous, align 4 + %36 = load i32** %previous, align 4 ; [#uses=1] + %37 = load i32* %36 ; [#uses=1] + %38 = lshr i32 %37, 0 ; [#uses=1] + %39 = and i32 %38, 63 ; [#uses=1] + %40 = icmp eq i32 %39, 3 ; [#uses=1] + br i1 %40, label %41, label %79 + +; <label>:41 ; preds = %25 + %42 = load i32** %previous, align 4 ; [#uses=1] + %43 = load i32* %42 ; [#uses=1] + %44 = lshr i32 %43, 6 ; [#uses=1] + %45 = and i32 %44, 255 ; [#uses=1] + store i32 %45, i32* %pfrom, align 4 + %46 = load i32** %previous, align 4 ; [#uses=1] + %47 = load i32* %46 ; [#uses=1] + %48 = lshr i32 %47, 23 ; [#uses=1] + %49 = and i32 %48, 511 ; [#uses=1] + store i32 %49, i32* %pto, align 4 + %50 = load i32* %pfrom, align 4 ; [#uses=1] + %51 = load i32* %2, align 4 ; [#uses=1] + %52 = icmp sle i32 %50, %51 ; [#uses=1] + br i1 %52, label %53, label %78 + +; <label>:53 ; preds = %41 + %54 = load i32* %2, align 4 ; [#uses=1] + %55 = load i32* %pto, align 4 ; [#uses=1] + %56 = add nsw i32 %55, 1 ; [#uses=1] + %57 = icmp sle i32 %54, %56 ; [#uses=1] + br i1 %57, label %58, label %78 + +; <label>:58 ; preds = %53 + %59 = load i32* %2, align 4 ; [#uses=1] + %60 = load i32* %3, align 4 ; [#uses=1] + %61 = add nsw i32 %59, %60 ; [#uses=1] + %62 = sub nsw i32 %61, 1 ; [#uses=1] + %63 = load i32* %pto, align 4 ; [#uses=1] + %64 = icmp sgt i32 %62, %63 ; [#uses=1] + br i1 %64, label %65, label %77 + +; <label>:65 ; preds = %58 + %66 = load i32** %previous, align 4 ; [#uses=1] + %67 = load i32* %66 ; [#uses=1] + %68 = and i32 %67, 8388607 ; [#uses=1] + %69 = load i32* %2, align 4 ; [#uses=1] + %70 = load i32* %3, align 4 ; [#uses=1] + %71 = add nsw i32 %69, %70 ; [#uses=1] + %72 = sub nsw i32 %71, 1 ; [#uses=1] + %73 = shl i32 %72, 23 ; [#uses=1] + %74 = and i32 %73, -8388608 ; [#uses=1] + %75 = or i32 %68, %74 ; [#uses=1] + %76 = load i32** %previous, align 4 ; [#uses=1] + store i32 %75, i32* %76 + br label %77 + +; <label>:77 ; preds = %65, %58 + br label %89 + +; <label>:78 ; preds = %53, %41 + br label %79 + +; <label>:79 ; preds = %78, %25 + br label %80 + +; <label>:80 ; preds = %79, %24 + br label %81 + +; <label>:81 ; preds = %80, %0 + %82 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %83 = load i32* %2, align 4 ; [#uses=1] + %84 = load i32* %2, align 4 ; [#uses=1] + %85 = load i32* %3, align 4 ; [#uses=1] + %86 = add nsw i32 %84, %85 ; [#uses=1] + %87 = sub nsw i32 %86, 1 ; [#uses=1] + %88 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %82, i32 3, i32 %83, i32 %87, i32 0) ; [#uses=0] + br label %89 + +; <label>:89 ; preds = %81, %77, %23 + ret void +} + +; [#uses=24] +define hidden i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %fs, i32 %o, i32 %a, i32 %b, i32 %c) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + %5 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %o, i32* %2, align 4 + store i32 %a, i32* %3, align 4 + store i32 %b, i32* %4, align 4 + store i32 %c, i32* %5, align 4 + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = shl i32 %7, 0 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = shl i32 %9, 6 ; [#uses=1] + %11 = or i32 %8, %10 ; [#uses=1] + %12 = load i32* %4, align 4 ; [#uses=1] + %13 = shl i32 %12, 23 ; [#uses=1] + %14 = or i32 %11, %13 ; [#uses=1] + %15 = load i32* %5, align 4 ; [#uses=1] + %16 = shl i32 %15, 14 ; [#uses=1] + %17 = or i32 %14, %16 ; [#uses=1] + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.FuncState* %18, i32 0, i32 3 ; [#uses=1] + %20 = load %struct.LexState** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.LexState* %20, i32 0, i32 2 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = call i32 @_Z9luaK_codeP9FuncStateji(%struct.FuncState* %6, i32 %17, i32 %22) ; [#uses=1] + ret i32 %23 +} + +; [#uses=11] +define hidden i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %fs) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=5] + %jpc = alloca i32, align 4 ; [#uses=2] + %j = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + %2 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.FuncState* %2, i32 0, i32 8 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + store i32 %4, i32* %jpc, align 4 + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 8 ; [#uses=1] + store i32 -1, i32* %6, align 4 + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %7, i32 22, i32 0, i32 131070) ; [#uses=1] + store i32 %8, i32* %j, align 4 + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = load i32* %jpc, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %9, i32* %j, i32 %10) + %11 = load i32* %j, align 4 ; [#uses=1] + ret i32 %11 +} + +; [#uses=9] +define hidden i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %fs, i32 %o, i32 %a, i32 %bc) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %o, i32* %2, align 4 + store i32 %a, i32* %3, align 4 + store i32 %bc, i32* %4, align 4 + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = shl i32 %6, 0 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = shl i32 %8, 6 ; [#uses=1] + %10 = or i32 %7, %9 ; [#uses=1] + %11 = load i32* %4, align 4 ; [#uses=1] + %12 = shl i32 %11, 14 ; [#uses=1] + %13 = or i32 %10, %12 ; [#uses=1] + %14 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 3 ; [#uses=1] + %16 = load %struct.LexState** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 2 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = call i32 @_Z9luaK_codeP9FuncStateji(%struct.FuncState* %5, i32 %13, i32 %18) ; [#uses=1] + ret i32 %19 +} + +; [#uses=11] +define hidden void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %fs, i32* %l1, i32 %l2) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=4] + %list = alloca i32, align 4 ; [#uses=4] + %next = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32* %l1, i32** %2, align 4 + store i32 %l2, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, -1 ; [#uses=1] + br i1 %5, label %6, label %7 + +; <label>:6 ; preds = %0 + br label %29 + +; <label>:7 ; preds = %0 + %8 = load i32** %2, align 4 ; [#uses=1] + %9 = load i32* %8 ; [#uses=1] + %10 = icmp eq i32 %9, -1 ; [#uses=1] + br i1 %10, label %11, label %14 + +; <label>:11 ; preds = %7 + %12 = load i32* %3, align 4 ; [#uses=1] + %13 = load i32** %2, align 4 ; [#uses=1] + store i32 %12, i32* %13 + br label %28 + +; <label>:14 ; preds = %7 + %15 = load i32** %2, align 4 ; [#uses=1] + %16 = load i32* %15 ; [#uses=1] + store i32 %16, i32* %list, align 4 + br label %17 + +; <label>:17 ; preds = %22, %14 + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = load i32* %list, align 4 ; [#uses=1] + %20 = call i32 @_Z7getjumpP9FuncStatei(%struct.FuncState* %18, i32 %19) ; [#uses=2] + store i32 %20, i32* %next, align 4 + %21 = icmp ne i32 %20, -1 ; [#uses=1] + br i1 %21, label %22, label %24 + +; <label>:22 ; preds = %17 + %23 = load i32* %next, align 4 ; [#uses=1] + store i32 %23, i32* %list, align 4 + br label %17 + +; <label>:24 ; preds = %17 + %25 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %26 = load i32* %list, align 4 ; [#uses=1] + %27 = load i32* %3, align 4 ; [#uses=1] + call void @_Z7fixjumpP9FuncStateii(%struct.FuncState* %25, i32 %26, i32 %27) + br label %28 + +; <label>:28 ; preds = %24, %11 + br label %29 + +; <label>:29 ; preds = %28, %6 + ret void +} + +; [#uses=2] +define hidden void @_Z8luaK_retP9FuncStateii(%struct.FuncState* %fs, i32 %first, i32 %nret) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %first, i32* %2, align 4 + store i32 %nret, i32* %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 1 ; [#uses=1] + %8 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %4, i32 30, i32 %5, i32 %7, i32 0) ; [#uses=0] + ret void +} + +; [#uses=5] +define hidden i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %fs) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + %2 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.FuncState* %2, i32 0, i32 6 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 7 ; [#uses=1] + store i32 %4, i32* %6, align 4 + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 6 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + ret i32 %9 +} + +; [#uses=4] +define hidden void @_Z14luaK_patchlistP9FuncStateii(%struct.FuncState* %fs, i32 %list, i32 %target) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %list, i32* %2, align 4 + store i32 %target, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 6 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp eq i32 %4, %7 ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %10, i32 %11) + br label %17 + +; <label>:12 ; preds = %0 + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = load i32* %2, align 4 ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = load i32* %3, align 4 ; [#uses=1] + call void @_Z12patchlistauxP9FuncStateiiii(%struct.FuncState* %13, i32 %14, i32 %15, i32 255, i32 %16) + br label %17 + +; <label>:17 ; preds = %12, %9 + ret void +} + +; [#uses=11] +define hidden void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %fs, i32 %list) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %list, i32* %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %3) ; [#uses=0] + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 8 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %5, i32* %7, i32 %8) + ret void +} + +; [#uses=4] +define internal void @_Z12patchlistauxP9FuncStateiiii(%struct.FuncState* %fs, i32 %list, i32 %vtarget, i32 %reg, i32 %dtarget) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + %5 = alloca i32, align 4 ; [#uses=2] + %next = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %list, i32* %2, align 4 + store i32 %vtarget, i32* %3, align 4 + store i32 %reg, i32* %4, align 4 + store i32 %dtarget, i32* %5, align 4 + br label %6 + +; <label>:6 ; preds = %26, %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = icmp ne i32 %7, -1 ; [#uses=1] + br i1 %8, label %9, label %28 + +; <label>:9 ; preds = %6 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = call i32 @_Z7getjumpP9FuncStatei(%struct.FuncState* %10, i32 %11) ; [#uses=1] + store i32 %12, i32* %next, align 4 + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = load i32* %2, align 4 ; [#uses=1] + %15 = load i32* %4, align 4 ; [#uses=1] + %16 = call i32 @_Z12patchtestregP9FuncStateii(%struct.FuncState* %13, i32 %14, i32 %15) ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %22 + +; <label>:18 ; preds = %9 + %19 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %20 = load i32* %2, align 4 ; [#uses=1] + %21 = load i32* %3, align 4 ; [#uses=1] + call void @_Z7fixjumpP9FuncStateii(%struct.FuncState* %19, i32 %20, i32 %21) + br label %26 + +; <label>:22 ; preds = %9 + %23 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %24 = load i32* %2, align 4 ; [#uses=1] + %25 = load i32* %5, align 4 ; [#uses=1] + call void @_Z7fixjumpP9FuncStateii(%struct.FuncState* %23, i32 %24, i32 %25) + br label %26 + +; <label>:26 ; preds = %22, %18 + %27 = load i32* %next, align 4 ; [#uses=1] + store i32 %27, i32* %2, align 4 + br label %6 + +; <label>:28 ; preds = %6 + ret void +} + +; [#uses=4] +define internal i32 @_Z7getjumpP9FuncStatei(%struct.FuncState* %fs, i32 %pc) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %offset = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store i32 %pc, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.Proto** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Proto* %7, i32 0, i32 4 ; [#uses=1] + %9 = load i32** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds i32* %9, i32 %4 ; [#uses=1] + %11 = load i32* %10 ; [#uses=1] + %12 = lshr i32 %11, 14 ; [#uses=1] + %13 = and i32 %12, 262143 ; [#uses=1] + %14 = sub nsw i32 %13, 131071 ; [#uses=1] + store i32 %14, i32* %offset, align 4 + %15 = load i32* %offset, align 4 ; [#uses=1] + %16 = icmp eq i32 %15, -1 ; [#uses=1] + br i1 %16, label %17, label %18 + +; <label>:17 ; preds = %0 + store i32 -1, i32* %1 + br label %23 + +; <label>:18 ; preds = %0 + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 1 ; [#uses=1] + %21 = load i32* %offset, align 4 ; [#uses=1] + %22 = add nsw i32 %20, %21 ; [#uses=1] + store i32 %22, i32* %1 + br label %23 + +; <label>:23 ; preds = %18, %17 + %24 = load i32* %1 ; [#uses=1] + ret i32 %24 +} + +; [#uses=3] +define internal void @_Z7fixjumpP9FuncStateii(%struct.FuncState* %fs, i32 %pc, i32 %dest) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %jmp = alloca i32*, align 4 ; [#uses=3] + %offset = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %pc, i32* %2, align 4 + store i32 %dest, i32* %3, align 4 + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.Proto** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Proto* %7, i32 0, i32 4 ; [#uses=1] + %9 = load i32** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds i32* %9, i32 %4 ; [#uses=1] + store i32* %10, i32** %jmp, align 4 + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = add nsw i32 %12, 1 ; [#uses=1] + %14 = sub nsw i32 %11, %13 ; [#uses=1] + store i32 %14, i32* %offset, align 4 + %15 = load i32* %offset, align 4 ; [#uses=1] + %16 = call i32 @abs(i32 %15) nounwind readnone ; [#uses=1] + %17 = icmp sgt i32 %16, 131071 ; [#uses=1] + br i1 %17, label %18, label %22 + +; <label>:18 ; preds = %0 + %19 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.FuncState* %19, i32 0, i32 3 ; [#uses=1] + %21 = load %struct.LexState** %20, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %21, i8* getelementptr inbounds ([27 x i8]* @.str37, i32 0, i32 0)) + br label %22 + +; <label>:22 ; preds = %18, %0 + %23 = load i32** %jmp, align 4 ; [#uses=1] + %24 = load i32* %23 ; [#uses=1] + %25 = and i32 %24, 16383 ; [#uses=1] + %26 = load i32* %offset, align 4 ; [#uses=1] + %27 = add nsw i32 %26, 131071 ; [#uses=1] + %28 = shl i32 %27, 14 ; [#uses=1] + %29 = and i32 %28, -16384 ; [#uses=1] + %30 = or i32 %25, %29 ; [#uses=1] + %31 = load i32** %jmp, align 4 ; [#uses=1] + store i32 %30, i32* %31 + ret void +} + +; [#uses=2] +define hidden void @_Z15luaK_checkstackP9FuncStatei(%struct.FuncState* %fs, i32 %n) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %newstack = alloca i32, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %n, i32* %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.FuncState* %3, i32 0, i32 9 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = add nsw i32 %5, %6 ; [#uses=1] + store i32 %7, i32* %newstack, align 4 + %8 = load i32* %newstack, align 4 ; [#uses=1] + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.Proto** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.Proto* %11, i32 0, i32 22 ; [#uses=1] + %13 = load i8* %12, align 1 ; [#uses=1] + %14 = zext i8 %13 to i32 ; [#uses=1] + %15 = icmp sgt i32 %8, %14 ; [#uses=1] + br i1 %15, label %16, label %30 + +; <label>:16 ; preds = %0 + %17 = load i32* %newstack, align 4 ; [#uses=1] + %18 = icmp sge i32 %17, 250 ; [#uses=1] + br i1 %18, label %19, label %23 + +; <label>:19 ; preds = %16 + %20 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.FuncState* %20, i32 0, i32 3 ; [#uses=1] + %22 = load %struct.LexState** %21, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %22, i8* getelementptr inbounds ([35 x i8]* @.str432, i32 0, i32 0)) + br label %23 + +; <label>:23 ; preds = %19, %16 + %24 = load i32* %newstack, align 4 ; [#uses=1] + %25 = trunc i32 %24 to i8 ; [#uses=1] + %26 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.FuncState* %26, i32 0, i32 0 ; [#uses=1] + %28 = load %struct.Proto** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Proto* %28, i32 0, i32 22 ; [#uses=1] + store i8 %25, i8* %29, align 1 + br label %30 + +; <label>:30 ; preds = %23, %0 + ret void +} + +; [#uses=11] +define hidden void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %fs, i32 %n) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %n, i32* %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + call void @_Z15luaK_checkstackP9FuncStatei(%struct.FuncState* %3, i32 %4) + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 9 ; [#uses=2] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = add nsw i32 %8, %5 ; [#uses=1] + store i32 %9, i32* %7, align 4 + ret void +} + +; [#uses=2] +define hidden i32 @_Z12luaK_stringKP9FuncStateP7TString(%struct.FuncState* %fs, %union.TString* %s) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %union.TString* %s, %union.TString** %2, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %i_o, align 4 + %3 = load %union.TString** %2, align 4 ; [#uses=1] + %4 = bitcast %union.TString* %3 to %union.GCObject* ; [#uses=1] + %5 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 0 ; [#uses=1] + %7 = getelementptr inbounds %union.anon* %6, i32 0, i32 0 ; [#uses=1] + %8 = bitcast double* %7 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %4, %union.GCObject** %8, align 4 + %9 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %10, align 4 + %11 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z4addkP9FuncStateP10lua_TValueS2_(%struct.FuncState* %11, %struct.lua_TValue* %o, %struct.lua_TValue* %o) ; [#uses=1] + ret i32 %12 +} + +; [#uses=4] +define internal i32 @_Z4addkP9FuncStateP10lua_TValueS2_(%struct.FuncState* %fs, %struct.lua_TValue* %k, %struct.lua_TValue* %v) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %L = alloca %struct.lua_State*, align 4 ; [#uses=4] + %idx = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %f = alloca %struct.Proto*, align 4 ; [#uses=11] + %oldsize = alloca i32, align 4 ; [#uses=4] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %struct.lua_TValue* %k, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %v, %struct.lua_TValue** %4, align 4 + %5 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 4 ; [#uses=1] + %7 = load %struct.lua_State** %6, align 4 ; [#uses=1] + store %struct.lua_State* %7, %struct.lua_State** %L, align 4 + %8 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %9 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 1 ; [#uses=1] + %11 = load %struct.Table** %10, align 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %13 = call %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %8, %struct.Table* %11, %struct.lua_TValue* %12) ; [#uses=1] + store %struct.lua_TValue* %13, %struct.lua_TValue** %idx, align 4 + %14 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 0 ; [#uses=1] + %16 = load %struct.Proto** %15, align 4 ; [#uses=1] + store %struct.Proto* %16, %struct.Proto** %f, align 4 + %17 = load %struct.Proto** %f, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Proto* %17, i32 0, i32 11 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + store i32 %19, i32* %oldsize, align 4 + %20 = load %struct.lua_TValue** %idx, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 1 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = icmp eq i32 %22, 3 ; [#uses=1] + br i1 %23, label %24, label %30 + +; <label>:24 ; preds = %0 + %25 = load %struct.lua_TValue** %idx, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %union.anon* %26, i32 0, i32 0 ; [#uses=1] + %28 = load double* %27, align 4 ; [#uses=1] + %29 = fptosi double %28 to i32 ; [#uses=1] + store i32 %29, i32* %1 + br label %137 + +; <label>:30 ; preds = %0 + %31 = load %struct.lua_TValue** %idx, align 4 ; [#uses=1] + store %struct.lua_TValue* %31, %struct.lua_TValue** %i_o, align 4 + %32 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.FuncState* %32, i32 0, i32 10 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = sitofp i32 %34 to double ; [#uses=1] + %36 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %union.anon* %37, i32 0, i32 0 ; [#uses=1] + store double %35, double* %38, align 4 + %39 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %40, align 4 + %41 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.FuncState* %41, i32 0, i32 10 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = add nsw i32 %43, 1 ; [#uses=1] + %45 = load %struct.Proto** %f, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Proto* %45, i32 0, i32 11 ; [#uses=1] + %47 = load i32* %46, align 4 ; [#uses=1] + %48 = icmp sgt i32 %44, %47 ; [#uses=1] + br i1 %48, label %49, label %61 + +; <label>:49 ; preds = %30 + %50 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %51 = load %struct.Proto** %f, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Proto* %51, i32 0, i32 3 ; [#uses=1] + %53 = load %struct.lua_TValue** %52, align 4 ; [#uses=1] + %54 = bitcast %struct.lua_TValue* %53 to i8* ; [#uses=1] + %55 = load %struct.Proto** %f, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 11 ; [#uses=1] + %57 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %50, i8* %54, i32* %56, i32 12, i32 262143, i8* getelementptr inbounds ([24 x i8]* @.str2634, i32 0, i32 0)) ; [#uses=1] + %58 = bitcast i8* %57 to %struct.lua_TValue* ; [#uses=1] + %59 = load %struct.Proto** %f, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.Proto* %59, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %58, %struct.lua_TValue** %60, align 4 + br label %61 + +; <label>:61 ; preds = %49, %30 + br label %62 + +; <label>:62 ; preds = %68, %61 + %63 = load i32* %oldsize, align 4 ; [#uses=1] + %64 = load %struct.Proto** %f, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.Proto* %64, i32 0, i32 11 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + %67 = icmp slt i32 %63, %66 ; [#uses=1] + br i1 %67, label %68, label %76 + +; <label>:68 ; preds = %62 + %69 = load i32* %oldsize, align 4 ; [#uses=2] + %70 = add nsw i32 %69, 1 ; [#uses=1] + store i32 %70, i32* %oldsize, align 4 + %71 = load %struct.Proto** %f, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.Proto* %71, i32 0, i32 3 ; [#uses=1] + %73 = load %struct.lua_TValue** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 %69 ; [#uses=1] + %75 = getelementptr inbounds %struct.lua_TValue* %74, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %75, align 4 + br label %62 + +; <label>:76 ; preds = %62 + %77 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %77, %struct.lua_TValue** %o2, align 4 + %78 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.FuncState* %78, i32 0, i32 10 ; [#uses=1] + %80 = load i32* %79, align 4 ; [#uses=1] + %81 = load %struct.Proto** %f, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.Proto* %81, i32 0, i32 3 ; [#uses=1] + %83 = load %struct.lua_TValue** %82, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_TValue* %83, i32 %80 ; [#uses=1] + store %struct.lua_TValue* %84, %struct.lua_TValue** %o1, align 4 + %85 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 0, i32 0 ; [#uses=1] + %87 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 0 ; [#uses=1] + %89 = bitcast %union.anon* %86 to i8* ; [#uses=1] + %90 = bitcast %union.anon* %88 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %89, i8* %90, i32 8, i32 4, i1 false) + %91 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %92 = getelementptr inbounds %struct.lua_TValue* %91, i32 0, i32 1 ; [#uses=1] + %93 = load i32* %92, align 4 ; [#uses=1] + %94 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.lua_TValue* %94, i32 0, i32 1 ; [#uses=1] + store i32 %93, i32* %95, align 4 + %96 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_TValue* %96, i32 0, i32 1 ; [#uses=1] + %98 = load i32* %97, align 4 ; [#uses=1] + %99 = icmp sge i32 %98, 4 ; [#uses=1] + br i1 %99, label %100, label %132 + +; <label>:100 ; preds = %76 + %101 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.lua_TValue* %101, i32 0, i32 0 ; [#uses=1] + %103 = getelementptr inbounds %union.anon* %102, i32 0, i32 0 ; [#uses=1] + %104 = bitcast double* %103 to %union.GCObject** ; [#uses=1] + %105 = load %union.GCObject** %104, align 4 ; [#uses=1] + %106 = getelementptr inbounds %union.GCObject* %105, i32 0, i32 0 ; [#uses=1] + %107 = bitcast %struct.lua_State* %106 to %struct.GCheader* ; [#uses=1] + %108 = getelementptr inbounds %struct.GCheader* %107, i32 0, i32 2 ; [#uses=1] + %109 = load i8* %108, align 1 ; [#uses=1] + %110 = zext i8 %109 to i32 ; [#uses=1] + %111 = and i32 %110, 3 ; [#uses=1] + %112 = icmp ne i32 %111, 0 ; [#uses=1] + br i1 %112, label %113, label %132 + +; <label>:113 ; preds = %100 + %114 = load %struct.Proto** %f, align 4 ; [#uses=1] + %115 = bitcast %struct.Proto* %114 to %union.GCObject* ; [#uses=1] + %116 = getelementptr inbounds %union.GCObject* %115, i32 0, i32 0 ; [#uses=1] + %117 = bitcast %struct.lua_State* %116 to %struct.GCheader* ; [#uses=1] + %118 = getelementptr inbounds %struct.GCheader* %117, i32 0, i32 2 ; [#uses=1] + %119 = load i8* %118, align 1 ; [#uses=1] + %120 = zext i8 %119 to i32 ; [#uses=1] + %121 = and i32 %120, 4 ; [#uses=1] + %122 = icmp ne i32 %121, 0 ; [#uses=1] + br i1 %122, label %123, label %132 + +; <label>:123 ; preds = %113 + %124 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %125 = load %struct.Proto** %f, align 4 ; [#uses=1] + %126 = bitcast %struct.Proto* %125 to %union.GCObject* ; [#uses=1] + %127 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.lua_TValue* %127, i32 0, i32 0 ; [#uses=1] + %129 = getelementptr inbounds %union.anon* %128, i32 0, i32 0 ; [#uses=1] + %130 = bitcast double* %129 to %union.GCObject** ; [#uses=1] + %131 = load %union.GCObject** %130, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %124, %union.GCObject* %126, %union.GCObject* %131) + br label %132 + +; <label>:132 ; preds = %123, %113, %100, %76 + %133 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %134 = getelementptr inbounds %struct.FuncState* %133, i32 0, i32 10 ; [#uses=2] + %135 = load i32* %134, align 4 ; [#uses=2] + %136 = add nsw i32 %135, 1 ; [#uses=1] + store i32 %136, i32* %134, align 4 + store i32 %135, i32* %1 + br label %137 + +; <label>:137 ; preds = %132, %24 + %138 = load i32* %1 ; [#uses=1] + ret i32 %138 +} + +; [#uses=3] +define hidden i32 @_Z12luaK_numberKP9FuncStated(%struct.FuncState* %fs, double %r) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca double, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store double %r, double* %2, align 8 + store %struct.lua_TValue* %o, %struct.lua_TValue** %i_o, align 4 + %3 = load double* %2, align 8 ; [#uses=1] + %4 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 0 ; [#uses=1] + %6 = getelementptr inbounds %union.anon* %5, i32 0, i32 0 ; [#uses=1] + store double %3, double* %6, align 4 + %7 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %8, align 4 + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z4addkP9FuncStateP10lua_TValueS2_(%struct.FuncState* %9, %struct.lua_TValue* %o, %struct.lua_TValue* %o) ; [#uses=1] + ret i32 %10 +} + +; [#uses=4] +define hidden void @_Z15luaK_setreturnsP9FuncStateP7expdesci(%struct.FuncState* %fs, %struct.expdesc* %e, i32 %nresults) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=9] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=9] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store i32 %nresults, i32* %3, align 4 + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.expdesc* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 13 ; [#uses=1] + br i1 %7, label %8, label %38 + +; <label>:8 ; preds = %0 + %9 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.expdesc* %9, i32 0, i32 1 ; [#uses=1] + %11 = getelementptr inbounds %2* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %3* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 0 ; [#uses=1] + %16 = load %struct.Proto** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Proto* %16, i32 0, i32 4 ; [#uses=1] + %18 = load i32** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds i32* %18, i32 %13 ; [#uses=1] + %20 = load i32* %19 ; [#uses=1] + %21 = and i32 %20, -8372225 ; [#uses=1] + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = add nsw i32 %22, 1 ; [#uses=1] + %24 = shl i32 %23, 14 ; [#uses=1] + %25 = and i32 %24, 8372224 ; [#uses=1] + %26 = or i32 %21, %25 ; [#uses=1] + %27 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.expdesc* %27, i32 0, i32 1 ; [#uses=1] + %29 = getelementptr inbounds %2* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %3* %29, i32 0, i32 0 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.FuncState* %32, i32 0, i32 0 ; [#uses=1] + %34 = load %struct.Proto** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 4 ; [#uses=1] + %36 = load i32** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds i32* %36, i32 %31 ; [#uses=1] + store i32 %26, i32* %37 + br label %105 + +; <label>:38 ; preds = %0 + %39 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.expdesc* %39, i32 0, i32 0 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = icmp eq i32 %41, 14 ; [#uses=1] + br i1 %42, label %43, label %104 + +; <label>:43 ; preds = %38 + %44 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.expdesc* %44, i32 0, i32 1 ; [#uses=1] + %46 = getelementptr inbounds %2* %45, i32 0, i32 0 ; [#uses=1] + %47 = getelementptr inbounds %3* %46, i32 0, i32 0 ; [#uses=1] + %48 = load i32* %47, align 4 ; [#uses=1] + %49 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.FuncState* %49, i32 0, i32 0 ; [#uses=1] + %51 = load %struct.Proto** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Proto* %51, i32 0, i32 4 ; [#uses=1] + %53 = load i32** %52, align 4 ; [#uses=1] + %54 = getelementptr inbounds i32* %53, i32 %48 ; [#uses=1] + %55 = load i32* %54 ; [#uses=1] + %56 = and i32 %55, 8388607 ; [#uses=1] + %57 = load i32* %3, align 4 ; [#uses=1] + %58 = add nsw i32 %57, 1 ; [#uses=1] + %59 = shl i32 %58, 23 ; [#uses=1] + %60 = and i32 %59, -8388608 ; [#uses=1] + %61 = or i32 %56, %60 ; [#uses=1] + %62 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.expdesc* %62, i32 0, i32 1 ; [#uses=1] + %64 = getelementptr inbounds %2* %63, i32 0, i32 0 ; [#uses=1] + %65 = getelementptr inbounds %3* %64, i32 0, i32 0 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + %67 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.FuncState* %67, i32 0, i32 0 ; [#uses=1] + %69 = load %struct.Proto** %68, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.Proto* %69, i32 0, i32 4 ; [#uses=1] + %71 = load i32** %70, align 4 ; [#uses=1] + %72 = getelementptr inbounds i32* %71, i32 %66 ; [#uses=1] + store i32 %61, i32* %72 + %73 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.expdesc* %73, i32 0, i32 1 ; [#uses=1] + %75 = getelementptr inbounds %2* %74, i32 0, i32 0 ; [#uses=1] + %76 = getelementptr inbounds %3* %75, i32 0, i32 0 ; [#uses=1] + %77 = load i32* %76, align 4 ; [#uses=1] + %78 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.FuncState* %78, i32 0, i32 0 ; [#uses=1] + %80 = load %struct.Proto** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.Proto* %80, i32 0, i32 4 ; [#uses=1] + %82 = load i32** %81, align 4 ; [#uses=1] + %83 = getelementptr inbounds i32* %82, i32 %77 ; [#uses=1] + %84 = load i32* %83 ; [#uses=1] + %85 = and i32 %84, -16321 ; [#uses=1] + %86 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.FuncState* %86, i32 0, i32 9 ; [#uses=1] + %88 = load i32* %87, align 4 ; [#uses=1] + %89 = shl i32 %88, 6 ; [#uses=1] + %90 = and i32 %89, 16320 ; [#uses=1] + %91 = or i32 %85, %90 ; [#uses=1] + %92 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.expdesc* %92, i32 0, i32 1 ; [#uses=1] + %94 = getelementptr inbounds %2* %93, i32 0, i32 0 ; [#uses=1] + %95 = getelementptr inbounds %3* %94, i32 0, i32 0 ; [#uses=1] + %96 = load i32* %95, align 4 ; [#uses=1] + %97 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.FuncState* %97, i32 0, i32 0 ; [#uses=1] + %99 = load %struct.Proto** %98, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.Proto* %99, i32 0, i32 4 ; [#uses=1] + %101 = load i32** %100, align 4 ; [#uses=1] + %102 = getelementptr inbounds i32* %101, i32 %96 ; [#uses=1] + store i32 %91, i32* %102 + %103 = load %struct.FuncState** %1, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %103, i32 1) + br label %104 + +; <label>:104 ; preds = %43, %38 + br label %105 + +; <label>:105 ; preds = %104, %8 + ret void +} + +; [#uses=2] +define hidden void @_Z14luaK_setoneretP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=9] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.expdesc* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 13 ; [#uses=1] + br i1 %6, label %7, label %28 + +; <label>:7 ; preds = %0 + %8 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.expdesc* %8, i32 0, i32 0 ; [#uses=1] + store i32 12, i32* %9, align 4 + %10 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.expdesc* %10, i32 0, i32 1 ; [#uses=1] + %12 = getelementptr inbounds %2* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %3* %12, i32 0, i32 0 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.FuncState* %15, i32 0, i32 0 ; [#uses=1] + %17 = load %struct.Proto** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Proto* %17, i32 0, i32 4 ; [#uses=1] + %19 = load i32** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds i32* %19, i32 %14 ; [#uses=1] + %21 = load i32* %20 ; [#uses=1] + %22 = lshr i32 %21, 6 ; [#uses=1] + %23 = and i32 %22, 255 ; [#uses=1] + %24 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.expdesc* %24, i32 0, i32 1 ; [#uses=1] + %26 = getelementptr inbounds %2* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %3* %26, i32 0, i32 0 ; [#uses=1] + store i32 %23, i32* %27, align 4 + br label %62 + +; <label>:28 ; preds = %0 + %29 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.expdesc* %29, i32 0, i32 0 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = icmp eq i32 %31, 14 ; [#uses=1] + br i1 %32, label %33, label %61 + +; <label>:33 ; preds = %28 + %34 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.expdesc* %34, i32 0, i32 1 ; [#uses=1] + %36 = getelementptr inbounds %2* %35, i32 0, i32 0 ; [#uses=1] + %37 = getelementptr inbounds %3* %36, i32 0, i32 0 ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.FuncState* %39, i32 0, i32 0 ; [#uses=1] + %41 = load %struct.Proto** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.Proto* %41, i32 0, i32 4 ; [#uses=1] + %43 = load i32** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds i32* %43, i32 %38 ; [#uses=1] + %45 = load i32* %44 ; [#uses=1] + %46 = and i32 %45, 8388607 ; [#uses=1] + %47 = or i32 %46, 16777216 ; [#uses=1] + %48 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.expdesc* %48, i32 0, i32 1 ; [#uses=1] + %50 = getelementptr inbounds %2* %49, i32 0, i32 0 ; [#uses=1] + %51 = getelementptr inbounds %3* %50, i32 0, i32 0 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.FuncState* %53, i32 0, i32 0 ; [#uses=1] + %55 = load %struct.Proto** %54, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 4 ; [#uses=1] + %57 = load i32** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds i32* %57, i32 %52 ; [#uses=1] + store i32 %47, i32* %58 + %59 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.expdesc* %59, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %60, align 4 + br label %61 + +; <label>:61 ; preds = %33, %28 + br label %62 + +; <label>:62 ; preds = %61, %7 + ret void +} + +; [#uses=10] +define hidden void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=7] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=16] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.expdesc* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + switch i32 %5, label %71 [ + i32 6, label %6 + i32 7, label %9 + i32 8, label %23 + i32 9, label %37 + i32 14, label %68 + i32 13, label %68 + ] + +; <label>:6 ; preds = %0 + %7 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.expdesc* %7, i32 0, i32 0 ; [#uses=1] + store i32 12, i32* %8, align 4 + br label %72 + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.expdesc* %11, i32 0, i32 1 ; [#uses=1] + %13 = getelementptr inbounds %2* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %3* %13, i32 0, i32 0 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %10, i32 4, i32 0, i32 %15, i32 0) ; [#uses=1] + %17 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.expdesc* %17, i32 0, i32 1 ; [#uses=1] + %19 = getelementptr inbounds %2* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %3* %19, i32 0, i32 0 ; [#uses=1] + store i32 %16, i32* %20, align 4 + %21 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.expdesc* %21, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %22, align 4 + br label %72 + +; <label>:23 ; preds = %0 + %24 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %25 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.expdesc* %25, i32 0, i32 1 ; [#uses=1] + %27 = getelementptr inbounds %2* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %3* %27, i32 0, i32 0 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %24, i32 5, i32 0, i32 %29) ; [#uses=1] + %31 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.expdesc* %31, i32 0, i32 1 ; [#uses=1] + %33 = getelementptr inbounds %2* %32, i32 0, i32 0 ; [#uses=1] + %34 = getelementptr inbounds %3* %33, i32 0, i32 0 ; [#uses=1] + store i32 %30, i32* %34, align 4 + %35 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.expdesc* %35, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %36, align 4 + br label %72 + +; <label>:37 ; preds = %0 + %38 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %39 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.expdesc* %39, i32 0, i32 1 ; [#uses=1] + %41 = getelementptr inbounds %2* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %3* %41, i32 0, i32 1 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + call void @_Z7freeregP9FuncStatei(%struct.FuncState* %38, i32 %43) + %44 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %45 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.expdesc* %45, i32 0, i32 1 ; [#uses=1] + %47 = getelementptr inbounds %2* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds %3* %47, i32 0, i32 0 ; [#uses=1] + %49 = load i32* %48, align 4 ; [#uses=1] + call void @_Z7freeregP9FuncStatei(%struct.FuncState* %44, i32 %49) + %50 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %51 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.expdesc* %51, i32 0, i32 1 ; [#uses=1] + %53 = getelementptr inbounds %2* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %3* %53, i32 0, i32 0 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + %56 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.expdesc* %56, i32 0, i32 1 ; [#uses=1] + %58 = getelementptr inbounds %2* %57, i32 0, i32 0 ; [#uses=1] + %59 = getelementptr inbounds %3* %58, i32 0, i32 1 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %50, i32 6, i32 0, i32 %55, i32 %60) ; [#uses=1] + %62 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.expdesc* %62, i32 0, i32 1 ; [#uses=1] + %64 = getelementptr inbounds %2* %63, i32 0, i32 0 ; [#uses=1] + %65 = getelementptr inbounds %3* %64, i32 0, i32 0 ; [#uses=1] + store i32 %61, i32* %65, align 4 + %66 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.expdesc* %66, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %67, align 4 + br label %72 + +; <label>:68 ; preds = %0, %0 + %69 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %70 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z14luaK_setoneretP9FuncStateP7expdesc(%struct.FuncState* %69, %struct.expdesc* %70) + br label %72 + +; <label>:71 ; preds = %0 + br label %72 + +; <label>:72 ; preds = %71, %68, %37, %23, %9, %6 + ret void +} + +; [#uses=3] +define internal void @_Z7freeregP9FuncStatei(%struct.FuncState* %fs, i32 %reg) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %reg, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = and i32 %3, 256 ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %18, label %6 + +; <label>:6 ; preds = %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 13 ; [#uses=1] + %10 = load i8* %9, align 1 ; [#uses=1] + %11 = zext i8 %10 to i32 ; [#uses=1] + %12 = icmp sge i32 %7, %11 ; [#uses=1] + br i1 %12, label %13, label %18 + +; <label>:13 ; preds = %6 + %14 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 9 ; [#uses=2] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = add nsw i32 %16, -1 ; [#uses=1] + store i32 %17, i32* %15, align 4 + br label %18 + +; <label>:18 ; preds = %13, %6, %0 + ret void +} + +; [#uses=12] +define hidden void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %3, %struct.expdesc* %4) + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %5, %struct.expdesc* %6) + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %7, i32 1) + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.FuncState* %10, i32 0, i32 9 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = sub nsw i32 %12, 1 ; [#uses=1] + call void @_Z7exp2regP9FuncStateP7expdesci(%struct.FuncState* %8, %struct.expdesc* %9, i32 %13) + ret void +} + +; [#uses=14] +define internal void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.expdesc* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 12 ; [#uses=1] + br i1 %6, label %7, label %14 + +; <label>:7 ; preds = %0 + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.expdesc* %9, i32 0, i32 1 ; [#uses=1] + %11 = getelementptr inbounds %2* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %3* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + call void @_Z7freeregP9FuncStatei(%struct.FuncState* %8, i32 %13) + br label %14 + +; <label>:14 ; preds = %7, %0 + ret void +} + +; [#uses=3] +define internal void @_Z7exp2regP9FuncStateP7expdesci(%struct.FuncState* %fs, %struct.expdesc* %e, i32 %reg) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=12] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=16] + %3 = alloca i32, align 4 ; [#uses=7] + %final = alloca i32, align 4 ; [#uses=3] + %p_f = alloca i32, align 4 ; [#uses=3] + %p_t = alloca i32, align 4 ; [#uses=3] + %fj = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store i32 %reg, i32* %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + call void @_Z13discharge2regP9FuncStateP7expdesci(%struct.FuncState* %4, %struct.expdesc* %5, i32 %6) + %7 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.expdesc* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 10 ; [#uses=1] + br i1 %10, label %11, label %20 + +; <label>:11 ; preds = %0 + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.expdesc* %13, i32 0, i32 2 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %2* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %3* %17, i32 0, i32 0 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %12, i32* %14, i32 %19) + br label %20 + +; <label>:20 ; preds = %11, %0 + %21 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.expdesc* %21, i32 0, i32 2 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + %24 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.expdesc* %24, i32 0, i32 3 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = icmp ne i32 %23, %26 ; [#uses=1] + br i1 %27, label %28, label %78 + +; <label>:28 ; preds = %20 + store i32 -1, i32* %p_f, align 4 + store i32 -1, i32* %p_t, align 4 + %29 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %30 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.expdesc* %30, i32 0, i32 2 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + %33 = call i32 @_Z10need_valueP9FuncStatei(%struct.FuncState* %29, i32 %32) ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %42, label %35 + +; <label>:35 ; preds = %28 + %36 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %37 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.expdesc* %37, i32 0, i32 3 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = call i32 @_Z10need_valueP9FuncStatei(%struct.FuncState* %36, i32 %39) ; [#uses=1] + %41 = icmp ne i32 %40, 0 ; [#uses=1] + br i1 %41, label %42, label %61 + +; <label>:42 ; preds = %35, %28 + %43 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.expdesc* %43, i32 0, i32 0 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = icmp eq i32 %45, 10 ; [#uses=1] + br i1 %46, label %47, label %48 + +; <label>:47 ; preds = %42 + br label %51 + +; <label>:48 ; preds = %42 + %49 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %50 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %49) ; [#uses=1] + br label %51 + +; <label>:51 ; preds = %48, %47 + %52 = phi i32 [ -1, %47 ], [ %50, %48 ] ; [#uses=1] + store i32 %52, i32* %fj, align 4 + %53 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %54 = load i32* %3, align 4 ; [#uses=1] + %55 = call i32 @_Z10code_labelP9FuncStateiii(%struct.FuncState* %53, i32 %54, i32 0, i32 1) ; [#uses=1] + store i32 %55, i32* %p_f, align 4 + %56 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %57 = load i32* %3, align 4 ; [#uses=1] + %58 = call i32 @_Z10code_labelP9FuncStateiii(%struct.FuncState* %56, i32 %57, i32 1, i32 0) ; [#uses=1] + store i32 %58, i32* %p_t, align 4 + %59 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %60 = load i32* %fj, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %59, i32 %60) + br label %61 + +; <label>:61 ; preds = %51, %35 + %62 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %63 = call i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %62) ; [#uses=1] + store i32 %63, i32* %final, align 4 + %64 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %65 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.expdesc* %65, i32 0, i32 3 ; [#uses=1] + %67 = load i32* %66, align 4 ; [#uses=1] + %68 = load i32* %final, align 4 ; [#uses=1] + %69 = load i32* %3, align 4 ; [#uses=1] + %70 = load i32* %p_f, align 4 ; [#uses=1] + call void @_Z12patchlistauxP9FuncStateiiii(%struct.FuncState* %64, i32 %67, i32 %68, i32 %69, i32 %70) + %71 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %72 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.expdesc* %72, i32 0, i32 2 ; [#uses=1] + %74 = load i32* %73, align 4 ; [#uses=1] + %75 = load i32* %final, align 4 ; [#uses=1] + %76 = load i32* %3, align 4 ; [#uses=1] + %77 = load i32* %p_t, align 4 ; [#uses=1] + call void @_Z12patchlistauxP9FuncStateiiii(%struct.FuncState* %71, i32 %74, i32 %75, i32 %76, i32 %77) + br label %78 + +; <label>:78 ; preds = %61, %20 + %79 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.expdesc* %79, i32 0, i32 2 ; [#uses=1] + store i32 -1, i32* %80, align 4 + %81 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.expdesc* %81, i32 0, i32 3 ; [#uses=1] + store i32 -1, i32* %82, align 4 + %83 = load i32* %3, align 4 ; [#uses=1] + %84 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.expdesc* %84, i32 0, i32 1 ; [#uses=1] + %86 = getelementptr inbounds %2* %85, i32 0, i32 0 ; [#uses=1] + %87 = getelementptr inbounds %3* %86, i32 0, i32 0 ; [#uses=1] + store i32 %83, i32* %87, align 4 + %88 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.expdesc* %88, i32 0, i32 0 ; [#uses=1] + store i32 12, i32* %89, align 4 + ret void +} + +; [#uses=10] +define hidden i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=5] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=12] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %struct.expdesc* %e, %struct.expdesc** %3, align 4 + %4 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %4, %struct.expdesc* %5) + %6 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.expdesc* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 12 ; [#uses=1] + br i1 %9, label %10, label %49 + +; <label>:10 ; preds = %0 + %11 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.expdesc* %11, i32 0, i32 2 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.expdesc* %14, i32 0, i32 3 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = icmp ne i32 %13, %16 ; [#uses=1] + br i1 %17, label %24, label %18 + +; <label>:18 ; preds = %10 + %19 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.expdesc* %19, i32 0, i32 1 ; [#uses=1] + %21 = getelementptr inbounds %2* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %3* %21, i32 0, i32 0 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + store i32 %23, i32* %1 + br label %57 + +; <label>:24 ; preds = %10 + %25 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.expdesc* %25, i32 0, i32 1 ; [#uses=1] + %27 = getelementptr inbounds %2* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %3* %27, i32 0, i32 0 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.FuncState* %30, i32 0, i32 13 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = zext i8 %32 to i32 ; [#uses=1] + %34 = icmp sge i32 %29, %33 ; [#uses=1] + br i1 %34, label %35, label %48 + +; <label>:35 ; preds = %24 + %36 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %37 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %38 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.expdesc* %38, i32 0, i32 1 ; [#uses=1] + %40 = getelementptr inbounds %2* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %3* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + call void @_Z7exp2regP9FuncStateP7expdesci(%struct.FuncState* %36, %struct.expdesc* %37, i32 %42) + %43 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.expdesc* %43, i32 0, i32 1 ; [#uses=1] + %45 = getelementptr inbounds %2* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %3* %45, i32 0, i32 0 ; [#uses=1] + %47 = load i32* %46, align 4 ; [#uses=1] + store i32 %47, i32* %1 + br label %57 + +; <label>:48 ; preds = %24 + br label %49 + +; <label>:49 ; preds = %48, %0 + %50 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %51 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %50, %struct.expdesc* %51) + %52 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.expdesc* %52, i32 0, i32 1 ; [#uses=1] + %54 = getelementptr inbounds %2* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %3* %54, i32 0, i32 0 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + store i32 %56, i32* %1 + br label %57 + +; <label>:57 ; preds = %49, %35, %18 + %58 = load i32* %1 ; [#uses=1] + ret i32 %58 +} + +; [#uses=3] +define hidden void @_Z12luaK_exp2valP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=5] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.expdesc* %3, i32 0, i32 2 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.expdesc* %6, i32 0, i32 3 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp ne i32 %5, %8 ; [#uses=1] + br i1 %9, label %10, label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %12 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %11, %struct.expdesc* %12) ; [#uses=0] + br label %17 + +; <label>:14 ; preds = %0 + %15 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %16 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %15, %struct.expdesc* %16) + br label %17 + +; <label>:17 ; preds = %14, %10 + ret void +} + +; [#uses=11] +define hidden i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=7] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=13] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %struct.expdesc* %e, %struct.expdesc** %3, align 4 + %4 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z12luaK_exp2valP9FuncStateP7expdesc(%struct.FuncState* %4, %struct.expdesc* %5) + %6 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.expdesc* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + switch i32 %8, label %75 [ + i32 5, label %9 + i32 2, label %9 + i32 3, label %9 + i32 1, label %9 + i32 4, label %60 + ] + +; <label>:9 ; preds = %0, %0, %0, %0 + %10 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.FuncState* %10, i32 0, i32 10 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp sle i32 %12, 255 ; [#uses=1] + br i1 %13, label %14, label %59 + +; <label>:14 ; preds = %9 + %15 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 0 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 1 ; [#uses=1] + br i1 %18, label %19, label %22 + +; <label>:19 ; preds = %14 + %20 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %21 = call i32 @_Z4nilKP9FuncState(%struct.FuncState* %20) ; [#uses=1] + br label %45 + +; <label>:22 ; preds = %14 + %23 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.expdesc* %23, i32 0, i32 0 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = icmp eq i32 %25, 5 ; [#uses=1] + br i1 %26, label %27, label %35 + +; <label>:27 ; preds = %22 + %28 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %29 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.expdesc* %29, i32 0, i32 1 ; [#uses=1] + %31 = getelementptr inbounds %2* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %3* %31 to double* ; [#uses=1] + %33 = load double* %32, align 4 ; [#uses=1] + %34 = call i32 @_Z12luaK_numberKP9FuncStated(%struct.FuncState* %28, double %33) ; [#uses=1] + br label %43 + +; <label>:35 ; preds = %22 + %36 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %37 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.expdesc* %37, i32 0, i32 0 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = icmp eq i32 %39, 2 ; [#uses=1] + %41 = zext i1 %40 to i32 ; [#uses=1] + %42 = call i32 @_Z5boolKP9FuncStatei(%struct.FuncState* %36, i32 %41) ; [#uses=1] + br label %43 + +; <label>:43 ; preds = %35, %27 + %44 = phi i32 [ %34, %27 ], [ %42, %35 ] ; [#uses=1] + br label %45 + +; <label>:45 ; preds = %43, %19 + %46 = phi i32 [ %21, %19 ], [ %44, %43 ] ; [#uses=1] + %47 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.expdesc* %47, i32 0, i32 1 ; [#uses=1] + %49 = getelementptr inbounds %2* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %3* %49, i32 0, i32 0 ; [#uses=1] + store i32 %46, i32* %50, align 4 + %51 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.expdesc* %51, i32 0, i32 0 ; [#uses=1] + store i32 4, i32* %52, align 4 + %53 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.expdesc* %53, i32 0, i32 1 ; [#uses=1] + %55 = getelementptr inbounds %2* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %3* %55, i32 0, i32 0 ; [#uses=1] + %57 = load i32* %56, align 4 ; [#uses=1] + %58 = or i32 %57, 256 ; [#uses=1] + store i32 %58, i32* %1 + br label %80 + +; <label>:59 ; preds = %9 + br label %76 + +; <label>:60 ; preds = %0 + %61 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.expdesc* %61, i32 0, i32 1 ; [#uses=1] + %63 = getelementptr inbounds %2* %62, i32 0, i32 0 ; [#uses=1] + %64 = getelementptr inbounds %3* %63, i32 0, i32 0 ; [#uses=1] + %65 = load i32* %64, align 4 ; [#uses=1] + %66 = icmp sle i32 %65, 255 ; [#uses=1] + br i1 %66, label %67, label %74 + +; <label>:67 ; preds = %60 + %68 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.expdesc* %68, i32 0, i32 1 ; [#uses=1] + %70 = getelementptr inbounds %2* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %3* %70, i32 0, i32 0 ; [#uses=1] + %72 = load i32* %71, align 4 ; [#uses=1] + %73 = or i32 %72, 256 ; [#uses=1] + store i32 %73, i32* %1 + br label %80 + +; <label>:74 ; preds = %60 + br label %76 + +; <label>:75 ; preds = %0 + br label %76 + +; <label>:76 ; preds = %75, %74, %59 + %77 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %78 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %79 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %77, %struct.expdesc* %78) ; [#uses=1] + store i32 %79, i32* %1 + br label %80 + +; <label>:80 ; preds = %76, %67, %45 + %81 = load i32* %1 ; [#uses=1] + ret i32 %81 +} + +; [#uses=1] +define internal i32 @_Z4nilKP9FuncState(%struct.FuncState* %fs) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %k = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %v = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + %2 = getelementptr inbounds %struct.lua_TValue* %v, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %2, align 4 + store %struct.lua_TValue* %k, %struct.lua_TValue** %i_o, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.FuncState* %3, i32 0, i32 1 ; [#uses=1] + %5 = load %struct.Table** %4, align 4 ; [#uses=1] + %6 = bitcast %struct.Table* %5 to %union.GCObject* ; [#uses=1] + %7 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %union.anon* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast double* %9 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %6, %union.GCObject** %10, align 4 + %11 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %12, align 4 + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z4addkP9FuncStateP10lua_TValueS2_(%struct.FuncState* %13, %struct.lua_TValue* %k, %struct.lua_TValue* %v) ; [#uses=1] + ret i32 %14 +} + +; [#uses=1] +define internal i32 @_Z5boolKP9FuncStatei(%struct.FuncState* %fs, i32 %b) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %o = alloca %struct.lua_TValue, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %b, i32* %2, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %i_o, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 0 ; [#uses=1] + %6 = getelementptr inbounds %union.anon* %5, i32 0, i32 0 ; [#uses=1] + %7 = bitcast double* %6 to i32* ; [#uses=1] + store i32 %3, i32* %7, align 4 + %8 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %9, align 4 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z4addkP9FuncStateP10lua_TValueS2_(%struct.FuncState* %10, %struct.lua_TValue* %o, %struct.lua_TValue* %o) ; [#uses=1] + ret i32 %11 +} + +; [#uses=4] +define hidden void @_Z13luaK_storevarP9FuncStateP7expdescS2_(%struct.FuncState* %fs, %struct.expdesc* %var, %struct.expdesc* %ex) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=10] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=7] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=7] + %e = alloca i32, align 4 ; [#uses=2] + %e1 = alloca i32, align 4 ; [#uses=2] + %e2 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %var, %struct.expdesc** %2, align 4 + store %struct.expdesc* %ex, %struct.expdesc** %3, align 4 + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.expdesc* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %58 [ + i32 6, label %7 + i32 7, label %17 + i32 8, label %29 + i32 9, label %41 + ] + +; <label>:7 ; preds = %0 + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %8, %struct.expdesc* %9) + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %12 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 1 ; [#uses=1] + %14 = getelementptr inbounds %2* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %3* %14, i32 0, i32 0 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + call void @_Z7exp2regP9FuncStateP7expdesci(%struct.FuncState* %10, %struct.expdesc* %11, i32 %16) + br label %62 + +; <label>:17 ; preds = %0 + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %20 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %18, %struct.expdesc* %19) ; [#uses=1] + store i32 %20, i32* %e, align 4 + %21 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %22 = load i32* %e, align 4 ; [#uses=1] + %23 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.expdesc* %23, i32 0, i32 1 ; [#uses=1] + %25 = getelementptr inbounds %2* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %3* %25, i32 0, i32 0 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %21, i32 8, i32 %22, i32 %27, i32 0) ; [#uses=0] + br label %59 + +; <label>:29 ; preds = %0 + %30 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %31 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %32 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %30, %struct.expdesc* %31) ; [#uses=1] + store i32 %32, i32* %e1, align 4 + %33 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %34 = load i32* %e1, align 4 ; [#uses=1] + %35 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.expdesc* %35, i32 0, i32 1 ; [#uses=1] + %37 = getelementptr inbounds %2* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %3* %37, i32 0, i32 0 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %33, i32 7, i32 %34, i32 %39) ; [#uses=0] + br label %59 + +; <label>:41 ; preds = %0 + %42 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %43 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %44 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %42, %struct.expdesc* %43) ; [#uses=1] + store i32 %44, i32* %e2, align 4 + %45 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %46 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.expdesc* %46, i32 0, i32 1 ; [#uses=1] + %48 = getelementptr inbounds %2* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %3* %48, i32 0, i32 0 ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.expdesc* %51, i32 0, i32 1 ; [#uses=1] + %53 = getelementptr inbounds %2* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %3* %53, i32 0, i32 1 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + %56 = load i32* %e2, align 4 ; [#uses=1] + %57 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %45, i32 9, i32 %50, i32 %55, i32 %56) ; [#uses=0] + br label %59 + +; <label>:58 ; preds = %0 + br label %59 + +; <label>:59 ; preds = %58, %41, %29, %17 + %60 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %61 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %60, %struct.expdesc* %61) + br label %62 + +; <label>:62 ; preds = %59, %7 + ret void +} + +; [#uses=1] +define hidden void @_Z9luaK_selfP9FuncStateP7expdescS2_(%struct.FuncState* %fs, %struct.expdesc* %e, %struct.expdesc* %key) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=6] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %func = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store %struct.expdesc* %key, %struct.expdesc** %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %4, %struct.expdesc* %5) ; [#uses=0] + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %7, %struct.expdesc* %8) + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 9 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + store i32 %11, i32* %func, align 4 + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %12, i32 2) + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = load i32* %func, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %2* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %3* %17, i32 0, i32 0 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %21 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %22 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %20, %struct.expdesc* %21) ; [#uses=1] + %23 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %13, i32 11, i32 %14, i32 %19, i32 %22) ; [#uses=0] + %24 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %25 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %24, %struct.expdesc* %25) + %26 = load i32* %func, align 4 ; [#uses=1] + %27 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.expdesc* %27, i32 0, i32 1 ; [#uses=1] + %29 = getelementptr inbounds %2* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %3* %29, i32 0, i32 0 ; [#uses=1] + store i32 %26, i32* %30, align 4 + %31 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.expdesc* %31, i32 0, i32 0 ; [#uses=1] + store i32 12, i32* %32, align 4 + ret void +} + +; [#uses=2] +define hidden void @_Z13luaK_goiftrueP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=7] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=9] + %pc = alloca i32, align 4 ; [#uses=5] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %3, %struct.expdesc* %4) + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.expdesc* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + switch i32 %7, label %20 [ + i32 4, label %8 + i32 5, label %8 + i32 2, label %8 + i32 3, label %9 + i32 10, label %12 + ] + +; <label>:8 ; preds = %0, %0, %0 + store i32 -1, i32* %pc, align 4 + br label %24 + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %10) ; [#uses=1] + store i32 %11, i32* %pc, align 4 + br label %24 + +; <label>:12 ; preds = %0 + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z10invertjumpP9FuncStateP7expdesc(%struct.FuncState* %13, %struct.expdesc* %14) + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %2* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %3* %17, i32 0, i32 0 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + store i32 %19, i32* %pc, align 4 + br label %24 + +; <label>:20 ; preds = %0 + %21 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %22 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %23 = call i32 @_Z10jumponcondP9FuncStateP7expdesci(%struct.FuncState* %21, %struct.expdesc* %22, i32 0) ; [#uses=1] + store i32 %23, i32* %pc, align 4 + br label %24 + +; <label>:24 ; preds = %20, %12, %9, %8 + %25 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %26 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.expdesc* %26, i32 0, i32 3 ; [#uses=1] + %28 = load i32* %pc, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %25, i32* %27, i32 %28) + %29 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %30 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.expdesc* %30, i32 0, i32 2 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %29, i32 %32) + %33 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.expdesc* %33, i32 0, i32 2 ; [#uses=1] + store i32 -1, i32* %34, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z10invertjumpP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=2] + %pc = alloca i32*, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.expdesc* %4, i32 0, i32 1 ; [#uses=1] + %6 = getelementptr inbounds %2* %5, i32 0, i32 0 ; [#uses=1] + %7 = getelementptr inbounds %3* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = call i32* @_Z14getjumpcontrolP9FuncStatei(%struct.FuncState* %3, i32 %8) ; [#uses=1] + store i32* %9, i32** %pc, align 4 + %10 = load i32** %pc, align 4 ; [#uses=1] + %11 = load i32* %10 ; [#uses=1] + %12 = and i32 %11, -16321 ; [#uses=1] + %13 = load i32** %pc, align 4 ; [#uses=1] + %14 = load i32* %13 ; [#uses=1] + %15 = lshr i32 %14, 6 ; [#uses=1] + %16 = and i32 %15, 255 ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + %18 = xor i1 %17, true ; [#uses=1] + %19 = zext i1 %18 to i32 ; [#uses=1] + %20 = shl i32 %19, 6 ; [#uses=1] + %21 = and i32 %20, 16320 ; [#uses=1] + %22 = or i32 %12, %21 ; [#uses=1] + %23 = load i32** %pc, align 4 ; [#uses=1] + store i32 %22, i32* %23 + ret void +} + +; [#uses=2] +define internal i32 @_Z10jumponcondP9FuncStateP7expdesci(%struct.FuncState* %fs, %struct.expdesc* %e, i32 %cond) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=7] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=3] + %ie = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %struct.expdesc* %e, %struct.expdesc** %3, align 4 + store i32 %cond, i32* %4, align 4 + %5 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.expdesc* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 11 ; [#uses=1] + br i1 %8, label %9, label %41 + +; <label>:9 ; preds = %0 + %10 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.expdesc* %10, i32 0, i32 1 ; [#uses=1] + %12 = getelementptr inbounds %2* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %3* %12, i32 0, i32 0 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.FuncState* %15, i32 0, i32 0 ; [#uses=1] + %17 = load %struct.Proto** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Proto* %17, i32 0, i32 4 ; [#uses=1] + %19 = load i32** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds i32* %19, i32 %14 ; [#uses=1] + %21 = load i32* %20 ; [#uses=1] + store i32 %21, i32* %ie, align 4 + %22 = load i32* %ie, align 4 ; [#uses=1] + %23 = lshr i32 %22, 0 ; [#uses=1] + %24 = and i32 %23, 63 ; [#uses=1] + %25 = icmp eq i32 %24, 19 ; [#uses=1] + br i1 %25, label %26, label %40 + +; <label>:26 ; preds = %9 + %27 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.FuncState* %27, i32 0, i32 6 ; [#uses=2] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = add nsw i32 %29, -1 ; [#uses=1] + store i32 %30, i32* %28, align 4 + %31 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %32 = load i32* %ie, align 4 ; [#uses=1] + %33 = lshr i32 %32, 23 ; [#uses=1] + %34 = and i32 %33, 511 ; [#uses=1] + %35 = load i32* %4, align 4 ; [#uses=1] + %36 = icmp ne i32 %35, 0 ; [#uses=1] + %37 = xor i1 %36, true ; [#uses=1] + %38 = zext i1 %37 to i32 ; [#uses=1] + %39 = call i32 @_Z8condjumpP9FuncState6OpCodeiii(%struct.FuncState* %31, i32 26, i32 %34, i32 0, i32 %38) ; [#uses=1] + store i32 %39, i32* %1 + br label %54 + +; <label>:40 ; preds = %9 + br label %41 + +; <label>:41 ; preds = %40, %0 + %42 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %43 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z16discharge2anyregP9FuncStateP7expdesc(%struct.FuncState* %42, %struct.expdesc* %43) + %44 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %45 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %44, %struct.expdesc* %45) + %46 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %47 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.expdesc* %47, i32 0, i32 1 ; [#uses=1] + %49 = getelementptr inbounds %2* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %3* %49, i32 0, i32 0 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + %52 = load i32* %4, align 4 ; [#uses=1] + %53 = call i32 @_Z8condjumpP9FuncState6OpCodeiii(%struct.FuncState* %46, i32 27, i32 255, i32 %51, i32 %52) ; [#uses=1] + store i32 %53, i32* %1 + br label %54 + +; <label>:54 ; preds = %41, %26 + %55 = load i32* %1 ; [#uses=1] + ret i32 %55 +} + +; [#uses=2] +define hidden void @_Z12luaK_indexedP9FuncStateP7expdescS2_(%struct.FuncState* %fs, %struct.expdesc* %t, %struct.expdesc* %k) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %t, %struct.expdesc** %2, align 4 + store %struct.expdesc* %k, %struct.expdesc** %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %6 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %4, %struct.expdesc* %5) ; [#uses=1] + %7 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.expdesc* %7, i32 0, i32 1 ; [#uses=1] + %9 = getelementptr inbounds %2* %8, i32 0, i32 0 ; [#uses=1] + %10 = getelementptr inbounds %3* %9, i32 0, i32 1 ; [#uses=1] + store i32 %6, i32* %10, align 4 + %11 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.expdesc* %11, i32 0, i32 0 ; [#uses=1] + store i32 9, i32* %12, align 4 + ret void +} + +; [#uses=1] +define hidden void @_Z11luaK_prefixP9FuncState5UnOprP7expdesc(%struct.FuncState* %fs, i32 %op, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=7] + %e2 = alloca %struct.expdesc, align 4 ; [#uses=6] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store %struct.expdesc* %e, %struct.expdesc** %3, align 4 + %4 = getelementptr inbounds %struct.expdesc* %e2, i32 0, i32 3 ; [#uses=1] + store i32 -1, i32* %4, align 4 + %5 = getelementptr inbounds %struct.expdesc* %e2, i32 0, i32 2 ; [#uses=1] + store i32 -1, i32* %5, align 4 + %6 = getelementptr inbounds %struct.expdesc* %e2, i32 0, i32 0 ; [#uses=1] + store i32 5, i32* %6, align 4 + %7 = getelementptr inbounds %struct.expdesc* %e2, i32 0, i32 1 ; [#uses=1] + %8 = getelementptr inbounds %2* %7, i32 0, i32 0 ; [#uses=1] + %9 = bitcast %3* %8 to double* ; [#uses=1] + store double 0.000000e+00, double* %9, align 4 + %10 = load i32* %2, align 4 ; [#uses=1] + switch i32 %10, label %31 [ + i32 0, label %11 + i32 1, label %22 + i32 2, label %25 + ] + +; <label>:11 ; preds = %0 + %12 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %13 = call i32 @_Z9isnumeralP7expdesc(%struct.expdesc* %12) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %19, label %15 + +; <label>:15 ; preds = %11 + %16 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %17 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %18 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %16, %struct.expdesc* %17) ; [#uses=0] + br label %19 + +; <label>:19 ; preds = %15, %11 + %20 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %21 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %20, i32 18, %struct.expdesc* %21, %struct.expdesc* %e2) + br label %32 + +; <label>:22 ; preds = %0 + %23 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %24 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7codenotP9FuncStateP7expdesc(%struct.FuncState* %23, %struct.expdesc* %24) + br label %32 + +; <label>:25 ; preds = %0 + %26 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %27 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %28 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %26, %struct.expdesc* %27) ; [#uses=0] + %29 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %30 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %29, i32 20, %struct.expdesc* %30, %struct.expdesc* %e2) + br label %32 + +; <label>:31 ; preds = %0 + br label %32 + +; <label>:32 ; preds = %31, %25, %22, %19 + ret void +} + +; [#uses=4] +define internal i32 @_Z9isnumeralP7expdesc(%struct.expdesc* %e) nounwind { +; <label>:0 + %1 = alloca %struct.expdesc*, align 4 ; [#uses=4] + store %struct.expdesc* %e, %struct.expdesc** %1, align 4 + %2 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.expdesc* %2, i32 0, i32 0 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 5 ; [#uses=1] + br i1 %5, label %6, label %16 + +; <label>:6 ; preds = %0 + %7 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.expdesc* %7, i32 0, i32 2 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, -1 ; [#uses=1] + br i1 %10, label %11, label %16 + +; <label>:11 ; preds = %6 + %12 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 3 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = icmp eq i32 %14, -1 ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %11, %6, %0 + %17 = phi i1 [ false, %6 ], [ false, %0 ], [ %15, %11 ] ; [#uses=1] + %18 = zext i1 %17 to i32 ; [#uses=1] + ret i32 %18 +} + +; [#uses=9] +define internal void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %fs, i32 %op, %struct.expdesc* %e1, %struct.expdesc* %e2) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=5] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=7] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=5] + %o2 = alloca i32, align 4 ; [#uses=3] + %o1 = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store %struct.expdesc* %e1, %struct.expdesc** %3, align 4 + store %struct.expdesc* %e2, %struct.expdesc** %4, align 4 + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %7 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %8 = call i32 @_Z12constfolding6OpCodeP7expdescS1_(i32 %5, %struct.expdesc* %6, %struct.expdesc* %7) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + br label %52 + +; <label>:11 ; preds = %0 + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = icmp ne i32 %12, 18 ; [#uses=1] + br i1 %13, label %14, label %21 + +; <label>:14 ; preds = %11 + %15 = load i32* %2, align 4 ; [#uses=1] + %16 = icmp ne i32 %15, 20 ; [#uses=1] + br i1 %16, label %17, label %21 + +; <label>:17 ; preds = %14 + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %20 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %18, %struct.expdesc* %19) ; [#uses=1] + br label %22 + +; <label>:21 ; preds = %14, %11 + br label %22 + +; <label>:22 ; preds = %21, %17 + %23 = phi i32 [ %20, %17 ], [ 0, %21 ] ; [#uses=1] + store i32 %23, i32* %o2, align 4 + %24 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %25 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %26 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %24, %struct.expdesc* %25) ; [#uses=1] + store i32 %26, i32* %o1, align 4 + %27 = load i32* %o1, align 4 ; [#uses=1] + %28 = load i32* %o2, align 4 ; [#uses=1] + %29 = icmp sgt i32 %27, %28 ; [#uses=1] + br i1 %29, label %30, label %35 + +; <label>:30 ; preds = %22 + %31 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %32 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %31, %struct.expdesc* %32) + %33 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %34 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %33, %struct.expdesc* %34) + br label %40 + +; <label>:35 ; preds = %22 + %36 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %37 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %36, %struct.expdesc* %37) + %38 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %39 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %38, %struct.expdesc* %39) + br label %40 + +; <label>:40 ; preds = %35, %30 + %41 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %42 = load i32* %2, align 4 ; [#uses=1] + %43 = load i32* %o1, align 4 ; [#uses=1] + %44 = load i32* %o2, align 4 ; [#uses=1] + %45 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %41, i32 %42, i32 0, i32 %43, i32 %44) ; [#uses=1] + %46 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.expdesc* %46, i32 0, i32 1 ; [#uses=1] + %48 = getelementptr inbounds %2* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %3* %48, i32 0, i32 0 ; [#uses=1] + store i32 %45, i32* %49, align 4 + %50 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.expdesc* %50, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %51, align 4 + br label %52 + +; <label>:52 ; preds = %40, %10 + ret void +} + +; [#uses=1] +define internal void @_Z7codenotP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=17] + %temp = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %3, %struct.expdesc* %4) + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.expdesc* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + switch i32 %7, label %35 [ + i32 1, label %8 + i32 3, label %8 + i32 4, label %11 + i32 5, label %11 + i32 2, label %11 + i32 10, label %14 + i32 11, label %17 + i32 12, label %17 + ] + +; <label>:8 ; preds = %0, %0 + %9 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.expdesc* %9, i32 0, i32 0 ; [#uses=1] + store i32 2, i32* %10, align 4 + br label %36 + +; <label>:11 ; preds = %0, %0, %0 + %12 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 0 ; [#uses=1] + store i32 3, i32* %13, align 4 + br label %36 + +; <label>:14 ; preds = %0 + %15 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %16 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z10invertjumpP9FuncStateP7expdesc(%struct.FuncState* %15, %struct.expdesc* %16) + br label %36 + +; <label>:17 ; preds = %0, %0 + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z16discharge2anyregP9FuncStateP7expdesc(%struct.FuncState* %18, %struct.expdesc* %19) + %20 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %21 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %20, %struct.expdesc* %21) + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.expdesc* %23, i32 0, i32 1 ; [#uses=1] + %25 = getelementptr inbounds %2* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %3* %25, i32 0, i32 0 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %22, i32 19, i32 0, i32 %27, i32 0) ; [#uses=1] + %29 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.expdesc* %29, i32 0, i32 1 ; [#uses=1] + %31 = getelementptr inbounds %2* %30, i32 0, i32 0 ; [#uses=1] + %32 = getelementptr inbounds %3* %31, i32 0, i32 0 ; [#uses=1] + store i32 %28, i32* %32, align 4 + %33 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.expdesc* %33, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %34, align 4 + br label %36 + +; <label>:35 ; preds = %0 + br label %36 + +; <label>:36 ; preds = %35, %17, %14, %11, %8 + %37 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.expdesc* %37, i32 0, i32 3 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + store i32 %39, i32* %temp, align 4 + %40 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.expdesc* %40, i32 0, i32 2 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.expdesc* %43, i32 0, i32 3 ; [#uses=1] + store i32 %42, i32* %44, align 4 + %45 = load i32* %temp, align 4 ; [#uses=1] + %46 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.expdesc* %46, i32 0, i32 2 ; [#uses=1] + store i32 %45, i32* %47, align 4 + %48 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %49 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.expdesc* %49, i32 0, i32 3 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + call void @_Z12removevaluesP9FuncStatei(%struct.FuncState* %48, i32 %51) + %52 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %53 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.expdesc* %53, i32 0, i32 2 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + call void @_Z12removevaluesP9FuncStatei(%struct.FuncState* %52, i32 %55) + ret void +} + +; [#uses=1] +define hidden void @_Z10luaK_infixP9FuncState6BinOprP7expdesc(%struct.FuncState* %fs, i32 %op, %struct.expdesc* %v) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=7] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store %struct.expdesc* %v, %struct.expdesc** %3, align 4 + %4 = load i32* %2, align 4 ; [#uses=1] + switch i32 %4, label %23 [ + i32 13, label %5 + i32 14, label %8 + i32 6, label %11 + i32 0, label %14 + i32 1, label %14 + i32 2, label %14 + i32 3, label %14 + i32 4, label %14 + i32 5, label %14 + ] + +; <label>:5 ; preds = %0 + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z13luaK_goiftrueP9FuncStateP7expdesc(%struct.FuncState* %6, %struct.expdesc* %7) + br label %27 + +; <label>:8 ; preds = %0 + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z14luaK_goiffalseP9FuncStateP7expdesc(%struct.FuncState* %9, %struct.expdesc* %10) + br label %27 + +; <label>:11 ; preds = %0 + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %12, %struct.expdesc* %13) + br label %27 + +; <label>:14 ; preds = %0, %0, %0, %0, %0, %0 + %15 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %16 = call i32 @_Z9isnumeralP7expdesc(%struct.expdesc* %15) ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + br i1 %17, label %22, label %18 + +; <label>:18 ; preds = %14 + %19 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %20 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %21 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %19, %struct.expdesc* %20) ; [#uses=0] + br label %22 + +; <label>:22 ; preds = %18, %14 + br label %27 + +; <label>:23 ; preds = %0 + %24 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %25 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %26 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %24, %struct.expdesc* %25) ; [#uses=0] + br label %27 + +; <label>:27 ; preds = %23, %22, %11, %8, %5 + ret void +} + +; [#uses=1] +define internal void @_Z14luaK_goiffalseP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=8] + %pc = alloca i32, align 4 ; [#uses=5] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %3, %struct.expdesc* %4) + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.expdesc* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + switch i32 %7, label %18 [ + i32 1, label %8 + i32 3, label %8 + i32 2, label %9 + i32 10, label %12 + ] + +; <label>:8 ; preds = %0, %0 + store i32 -1, i32* %pc, align 4 + br label %22 + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %10) ; [#uses=1] + store i32 %11, i32* %pc, align 4 + br label %22 + +; <label>:12 ; preds = %0 + %13 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.expdesc* %13, i32 0, i32 1 ; [#uses=1] + %15 = getelementptr inbounds %2* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %3* %15, i32 0, i32 0 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + store i32 %17, i32* %pc, align 4 + br label %22 + +; <label>:18 ; preds = %0 + %19 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %20 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %21 = call i32 @_Z10jumponcondP9FuncStateP7expdesci(%struct.FuncState* %19, %struct.expdesc* %20, i32 1) ; [#uses=1] + store i32 %21, i32* %pc, align 4 + br label %22 + +; <label>:22 ; preds = %18, %12, %9, %8 + %23 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %24 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.expdesc* %24, i32 0, i32 2 ; [#uses=1] + %26 = load i32* %pc, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %23, i32* %25, i32 %26) + %27 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %28 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.expdesc* %28, i32 0, i32 3 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %27, i32 %30) + %31 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.expdesc* %31, i32 0, i32 3 ; [#uses=1] + store i32 -1, i32* %32, align 4 + ret void +} + +; [#uses=1] +define hidden void @_Z11luaK_posfixP9FuncState6BinOprP7expdescS3_(%struct.FuncState* %fs, i32 %op, %struct.expdesc* %e1, %struct.expdesc* %e2) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=24] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=22] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=27] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store %struct.expdesc* %e1, %struct.expdesc** %3, align 4 + store %struct.expdesc* %e2, %struct.expdesc** %4, align 4 + %5 = load i32* %2, align 4 ; [#uses=1] + switch i32 %5, label %156 [ + i32 13, label %6 + i32 14, label %19 + i32 6, label %32 + i32 0, label %108 + i32 1, label %112 + i32 2, label %116 + i32 3, label %120 + i32 4, label %124 + i32 5, label %128 + i32 8, label %132 + i32 7, label %136 + i32 9, label %140 + i32 10, label %144 + i32 11, label %148 + i32 12, label %152 + ] + +; <label>:6 ; preds = %0 + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %7, %struct.expdesc* %8) + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.expdesc* %10, i32 0, i32 3 ; [#uses=1] + %12 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 3 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %9, i32* %11, i32 %14) + %15 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %16 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %17 = bitcast %struct.expdesc* %15 to i8* ; [#uses=1] + %18 = bitcast %struct.expdesc* %16 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %17, i8* %18, i32 20, i32 4, i1 false) + br label %157 + +; <label>:19 ; preds = %0 + %20 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %21 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %20, %struct.expdesc* %21) + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.expdesc* %23, i32 0, i32 2 ; [#uses=1] + %25 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.expdesc* %25, i32 0, i32 2 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %22, i32* %24, i32 %27) + %28 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %29 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %30 = bitcast %struct.expdesc* %28 to i8* ; [#uses=1] + %31 = bitcast %struct.expdesc* %29 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %30, i8* %31, i32 20, i32 4, i1 false) + br label %157 + +; <label>:32 ; preds = %0 + %33 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %34 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z12luaK_exp2valP9FuncStateP7expdesc(%struct.FuncState* %33, %struct.expdesc* %34) + %35 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.expdesc* %35, i32 0, i32 0 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp eq i32 %37, 11 ; [#uses=1] + br i1 %38, label %39, label %101 + +; <label>:39 ; preds = %32 + %40 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.expdesc* %40, i32 0, i32 1 ; [#uses=1] + %42 = getelementptr inbounds %2* %41, i32 0, i32 0 ; [#uses=1] + %43 = getelementptr inbounds %3* %42, i32 0, i32 0 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.FuncState* %45, i32 0, i32 0 ; [#uses=1] + %47 = load %struct.Proto** %46, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.Proto* %47, i32 0, i32 4 ; [#uses=1] + %49 = load i32** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds i32* %49, i32 %44 ; [#uses=1] + %51 = load i32* %50 ; [#uses=1] + %52 = lshr i32 %51, 0 ; [#uses=1] + %53 = and i32 %52, 63 ; [#uses=1] + %54 = icmp eq i32 %53, 21 ; [#uses=1] + br i1 %54, label %55, label %101 + +; <label>:55 ; preds = %39 + %56 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %57 = load %struct.expdesc** %3, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %56, %struct.expdesc* %57) + %58 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.expdesc* %58, i32 0, i32 1 ; [#uses=1] + %60 = getelementptr inbounds %2* %59, i32 0, i32 0 ; [#uses=1] + %61 = getelementptr inbounds %3* %60, i32 0, i32 0 ; [#uses=1] + %62 = load i32* %61, align 4 ; [#uses=1] + %63 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.FuncState* %63, i32 0, i32 0 ; [#uses=1] + %65 = load %struct.Proto** %64, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.Proto* %65, i32 0, i32 4 ; [#uses=1] + %67 = load i32** %66, align 4 ; [#uses=1] + %68 = getelementptr inbounds i32* %67, i32 %62 ; [#uses=1] + %69 = load i32* %68 ; [#uses=1] + %70 = and i32 %69, 8388607 ; [#uses=1] + %71 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.expdesc* %71, i32 0, i32 1 ; [#uses=1] + %73 = getelementptr inbounds %2* %72, i32 0, i32 0 ; [#uses=1] + %74 = getelementptr inbounds %3* %73, i32 0, i32 0 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + %76 = shl i32 %75, 23 ; [#uses=1] + %77 = and i32 %76, -8388608 ; [#uses=1] + %78 = or i32 %70, %77 ; [#uses=1] + %79 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.expdesc* %79, i32 0, i32 1 ; [#uses=1] + %81 = getelementptr inbounds %2* %80, i32 0, i32 0 ; [#uses=1] + %82 = getelementptr inbounds %3* %81, i32 0, i32 0 ; [#uses=1] + %83 = load i32* %82, align 4 ; [#uses=1] + %84 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.FuncState* %84, i32 0, i32 0 ; [#uses=1] + %86 = load %struct.Proto** %85, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Proto* %86, i32 0, i32 4 ; [#uses=1] + %88 = load i32** %87, align 4 ; [#uses=1] + %89 = getelementptr inbounds i32* %88, i32 %83 ; [#uses=1] + store i32 %78, i32* %89 + %90 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.expdesc* %90, i32 0, i32 0 ; [#uses=1] + store i32 11, i32* %91, align 4 + %92 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.expdesc* %92, i32 0, i32 1 ; [#uses=1] + %94 = getelementptr inbounds %2* %93, i32 0, i32 0 ; [#uses=1] + %95 = getelementptr inbounds %3* %94, i32 0, i32 0 ; [#uses=1] + %96 = load i32* %95, align 4 ; [#uses=1] + %97 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.expdesc* %97, i32 0, i32 1 ; [#uses=1] + %99 = getelementptr inbounds %2* %98, i32 0, i32 0 ; [#uses=1] + %100 = getelementptr inbounds %3* %99, i32 0, i32 0 ; [#uses=1] + store i32 %96, i32* %100, align 4 + br label %107 + +; <label>:101 ; preds = %39, %32 + %102 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %103 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %102, %struct.expdesc* %103) + %104 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %105 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %106 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %104, i32 21, %struct.expdesc* %105, %struct.expdesc* %106) + br label %107 + +; <label>:107 ; preds = %101, %55 + br label %157 + +; <label>:108 ; preds = %0 + %109 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %110 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %111 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %109, i32 12, %struct.expdesc* %110, %struct.expdesc* %111) + br label %157 + +; <label>:112 ; preds = %0 + %113 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %114 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %115 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %113, i32 13, %struct.expdesc* %114, %struct.expdesc* %115) + br label %157 + +; <label>:116 ; preds = %0 + %117 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %118 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %119 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %117, i32 14, %struct.expdesc* %118, %struct.expdesc* %119) + br label %157 + +; <label>:120 ; preds = %0 + %121 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %122 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %123 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %121, i32 15, %struct.expdesc* %122, %struct.expdesc* %123) + br label %157 + +; <label>:124 ; preds = %0 + %125 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %126 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %127 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %125, i32 16, %struct.expdesc* %126, %struct.expdesc* %127) + br label %157 + +; <label>:128 ; preds = %0 + %129 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %130 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %131 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z9codearithP9FuncState6OpCodeP7expdescS3_(%struct.FuncState* %129, i32 17, %struct.expdesc* %130, %struct.expdesc* %131) + br label %157 + +; <label>:132 ; preds = %0 + %133 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %134 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %135 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %133, i32 23, i32 1, %struct.expdesc* %134, %struct.expdesc* %135) + br label %157 + +; <label>:136 ; preds = %0 + %137 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %138 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %139 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %137, i32 23, i32 0, %struct.expdesc* %138, %struct.expdesc* %139) + br label %157 + +; <label>:140 ; preds = %0 + %141 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %142 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %143 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %141, i32 24, i32 1, %struct.expdesc* %142, %struct.expdesc* %143) + br label %157 + +; <label>:144 ; preds = %0 + %145 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %146 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %147 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %145, i32 25, i32 1, %struct.expdesc* %146, %struct.expdesc* %147) + br label %157 + +; <label>:148 ; preds = %0 + %149 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %150 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %151 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %149, i32 24, i32 0, %struct.expdesc* %150, %struct.expdesc* %151) + br label %157 + +; <label>:152 ; preds = %0 + %153 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %154 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %155 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %153, i32 25, i32 0, %struct.expdesc* %154, %struct.expdesc* %155) + br label %157 + +; <label>:156 ; preds = %0 + br label %157 + +; <label>:157 ; preds = %156, %152, %148, %144, %140, %136, %132, %128, %124, %120, %116, %112, %108, %107, %19, %6 + ret void +} + +; [#uses=6] +define internal void @_Z8codecompP9FuncState6OpCodeiP7expdescS3_(%struct.FuncState* %fs, i32 %op, i32 %cond, %struct.expdesc* %e1, %struct.expdesc* %e2) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=4] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=5] + %5 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %o1 = alloca i32, align 4 ; [#uses=4] + %o2 = alloca i32, align 4 ; [#uses=4] + %temp = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store i32 %cond, i32* %3, align 4 + store %struct.expdesc* %e1, %struct.expdesc** %4, align 4 + store %struct.expdesc* %e2, %struct.expdesc** %5, align 4 + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %8 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %6, %struct.expdesc* %7) ; [#uses=1] + store i32 %8, i32* %o1, align 4 + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = load %struct.expdesc** %5, align 4 ; [#uses=1] + %11 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %9, %struct.expdesc* %10) ; [#uses=1] + store i32 %11, i32* %o2, align 4 + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %5, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %12, %struct.expdesc* %13) + %14 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z7freeexpP9FuncStateP7expdesc(%struct.FuncState* %14, %struct.expdesc* %15) + %16 = load i32* %3, align 4 ; [#uses=1] + %17 = icmp eq i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %25 + +; <label>:18 ; preds = %0 + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = icmp ne i32 %19, 23 ; [#uses=1] + br i1 %20, label %21, label %25 + +; <label>:21 ; preds = %18 + %22 = load i32* %o1, align 4 ; [#uses=1] + store i32 %22, i32* %temp, align 4 + %23 = load i32* %o2, align 4 ; [#uses=1] + store i32 %23, i32* %o1, align 4 + %24 = load i32* %temp, align 4 ; [#uses=1] + store i32 %24, i32* %o2, align 4 + store i32 1, i32* %3, align 4 + br label %25 + +; <label>:25 ; preds = %21, %18, %0 + %26 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %27 = load i32* %2, align 4 ; [#uses=1] + %28 = load i32* %3, align 4 ; [#uses=1] + %29 = load i32* %o1, align 4 ; [#uses=1] + %30 = load i32* %o2, align 4 ; [#uses=1] + %31 = call i32 @_Z8condjumpP9FuncState6OpCodeiii(%struct.FuncState* %26, i32 %27, i32 %28, i32 %29, i32 %30) ; [#uses=1] + %32 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.expdesc* %32, i32 0, i32 1 ; [#uses=1] + %34 = getelementptr inbounds %2* %33, i32 0, i32 0 ; [#uses=1] + %35 = getelementptr inbounds %3* %34, i32 0, i32 0 ; [#uses=1] + store i32 %31, i32* %35, align 4 + %36 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.expdesc* %36, i32 0, i32 0 ; [#uses=1] + store i32 10, i32* %37, align 4 + ret void +} + +; [#uses=3] +define hidden void @_Z12luaK_fixlineP9FuncStatei(%struct.FuncState* %fs, i32 %line) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.FuncState* %4, i32 0, i32 6 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = sub nsw i32 %6, 1 ; [#uses=1] + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 0 ; [#uses=1] + %10 = load %struct.Proto** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Proto* %10, i32 0, i32 6 ; [#uses=1] + %12 = load i32** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds i32* %12, i32 %7 ; [#uses=1] + store i32 %3, i32* %13 + ret void +} + +; [#uses=3] +define internal i32 @_Z9luaK_codeP9FuncStateji(%struct.FuncState* %fs, i32 %i, i32 %line) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=10] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %f = alloca %struct.Proto*, align 4 ; [#uses=11] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %i, i32* %2, align 4 + store i32 %line, i32* %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.FuncState* %4, i32 0, i32 0 ; [#uses=1] + %6 = load %struct.Proto** %5, align 4 ; [#uses=1] + store %struct.Proto* %6, %struct.Proto** %f, align 4 + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + call void @_Z12dischargejpcP9FuncState(%struct.FuncState* %7) + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 6 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = add nsw i32 %10, 1 ; [#uses=1] + %12 = load %struct.Proto** %f, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Proto* %12, i32 0, i32 12 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = icmp sgt i32 %11, %14 ; [#uses=1] + br i1 %15, label %16, label %30 + +; <label>:16 ; preds = %0 + %17 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.FuncState* %17, i32 0, i32 4 ; [#uses=1] + %19 = load %struct.lua_State** %18, align 4 ; [#uses=1] + %20 = load %struct.Proto** %f, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 4 ; [#uses=1] + %22 = load i32** %21, align 4 ; [#uses=1] + %23 = bitcast i32* %22 to i8* ; [#uses=1] + %24 = load %struct.Proto** %f, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Proto* %24, i32 0, i32 12 ; [#uses=1] + %26 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %19, i8* %23, i32* %25, i32 4, i32 2147483645, i8* getelementptr inbounds ([19 x i8]* @.str1533, i32 0, i32 0)) ; [#uses=1] + %27 = bitcast i8* %26 to i32* ; [#uses=1] + %28 = load %struct.Proto** %f, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Proto* %28, i32 0, i32 4 ; [#uses=1] + store i32* %27, i32** %29, align 4 + br label %30 + +; <label>:30 ; preds = %16, %0 + %31 = load i32* %2, align 4 ; [#uses=1] + %32 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.FuncState* %32, i32 0, i32 6 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = load %struct.Proto** %f, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Proto* %35, i32 0, i32 4 ; [#uses=1] + %37 = load i32** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds i32* %37, i32 %34 ; [#uses=1] + store i32 %31, i32* %38 + %39 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.FuncState* %39, i32 0, i32 6 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = add nsw i32 %41, 1 ; [#uses=1] + %43 = load %struct.Proto** %f, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.Proto* %43, i32 0, i32 13 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = icmp sgt i32 %42, %45 ; [#uses=1] + br i1 %46, label %47, label %61 + +; <label>:47 ; preds = %30 + %48 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.FuncState* %48, i32 0, i32 4 ; [#uses=1] + %50 = load %struct.lua_State** %49, align 4 ; [#uses=1] + %51 = load %struct.Proto** %f, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Proto* %51, i32 0, i32 6 ; [#uses=1] + %53 = load i32** %52, align 4 ; [#uses=1] + %54 = bitcast i32* %53 to i8* ; [#uses=1] + %55 = load %struct.Proto** %f, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 13 ; [#uses=1] + %57 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %50, i8* %54, i32* %56, i32 4, i32 2147483645, i8* getelementptr inbounds ([19 x i8]* @.str1533, i32 0, i32 0)) ; [#uses=1] + %58 = bitcast i8* %57 to i32* ; [#uses=1] + %59 = load %struct.Proto** %f, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.Proto* %59, i32 0, i32 6 ; [#uses=1] + store i32* %58, i32** %60, align 4 + br label %61 + +; <label>:61 ; preds = %47, %30 + %62 = load i32* %3, align 4 ; [#uses=1] + %63 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.FuncState* %63, i32 0, i32 6 ; [#uses=1] + %65 = load i32* %64, align 4 ; [#uses=1] + %66 = load %struct.Proto** %f, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Proto* %66, i32 0, i32 6 ; [#uses=1] + %68 = load i32** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds i32* %68, i32 %65 ; [#uses=1] + store i32 %62, i32* %69 + %70 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.FuncState* %70, i32 0, i32 6 ; [#uses=2] + %72 = load i32* %71, align 4 ; [#uses=2] + %73 = add nsw i32 %72, 1 ; [#uses=1] + store i32 %73, i32* %71, align 4 + ret i32 %72 +} + +; [#uses=3] +define hidden void @_Z12luaK_setlistP9FuncStateiii(%struct.FuncState* %fs, i32 %base, i32 %nelems, i32 %tostore) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=3] + %c = alloca i32, align 4 ; [#uses=4] + %b = alloca i32, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %base, i32* %2, align 4 + store i32 %nelems, i32* %3, align 4 + store i32 %tostore, i32* %4, align 4 + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = sub nsw i32 %5, 1 ; [#uses=1] + %7 = sdiv i32 %6, 50 ; [#uses=1] + %8 = add nsw i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %c, align 4 + %9 = load i32* %4, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, -1 ; [#uses=1] + %11 = load i32* %4, align 4 ; [#uses=1] + %12 = select i1 %10, i32 0, i32 %11 ; [#uses=1] + store i32 %12, i32* %b, align 4 + %13 = load i32* %c, align 4 ; [#uses=1] + %14 = icmp sle i32 %13, 511 ; [#uses=1] + br i1 %14, label %15, label %21 + +; <label>:15 ; preds = %0 + %16 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = load i32* %b, align 4 ; [#uses=1] + %19 = load i32* %c, align 4 ; [#uses=1] + %20 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %16, i32 34, i32 %17, i32 %18, i32 %19) ; [#uses=0] + br label %34 + +; <label>:21 ; preds = %0 + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = load i32* %2, align 4 ; [#uses=1] + %24 = load i32* %b, align 4 ; [#uses=1] + %25 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %22, i32 34, i32 %23, i32 %24, i32 0) ; [#uses=0] + %26 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %27 = load i32* %c, align 4 ; [#uses=1] + %28 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.FuncState* %28, i32 0, i32 3 ; [#uses=1] + %30 = load %struct.LexState** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.LexState* %30, i32 0, i32 2 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + %33 = call i32 @_Z9luaK_codeP9FuncStateji(%struct.FuncState* %26, i32 %27, i32 %32) ; [#uses=0] + br label %34 + +; <label>:34 ; preds = %21, %15 + %35 = load i32* %2, align 4 ; [#uses=1] + %36 = add nsw i32 %35, 1 ; [#uses=1] + %37 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.FuncState* %37, i32 0, i32 9 ; [#uses=1] + store i32 %36, i32* %38, align 4 + ret void +} + +; [#uses=1] +define internal void @_Z12dischargejpcP9FuncState(%struct.FuncState* %fs) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + %2 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.FuncState* %3, i32 0, i32 8 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 6 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 6 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + call void @_Z12patchlistauxP9FuncStateiiii(%struct.FuncState* %2, i32 %5, i32 %8, i32 255, i32 %11) + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.FuncState* %12, i32 0, i32 8 ; [#uses=1] + store i32 -1, i32* %13, align 4 + ret void +} + +; [#uses=3] +define internal i32 @_Z8condjumpP9FuncState6OpCodeiii(%struct.FuncState* %fs, i32 %op, i32 %A, i32 %B, i32 %C) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + %5 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %op, i32* %2, align 4 + store i32 %A, i32* %3, align 4 + store i32 %B, i32* %4, align 4 + store i32 %C, i32* %5, align 4 + %6 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = load i32* %4, align 4 ; [#uses=1] + %10 = load i32* %5, align 4 ; [#uses=1] + %11 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %6, i32 %7, i32 %8, i32 %9, i32 %10) ; [#uses=0] + %12 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %12) ; [#uses=1] + ret i32 %13 +} + +; [#uses=2] +define internal void @_Z16discharge2anyregP9FuncStateP7expdesc(%struct.FuncState* %fs, %struct.expdesc* %e) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.expdesc* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp ne i32 %5, 12 ; [#uses=1] + br i1 %6, label %7, label %15 + +; <label>:7 ; preds = %0 + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %8, i32 1) + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %11 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.FuncState* %11, i32 0, i32 9 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = sub nsw i32 %13, 1 ; [#uses=1] + call void @_Z13discharge2regP9FuncStateP7expdesci(%struct.FuncState* %9, %struct.expdesc* %10, i32 %14) + br label %15 + +; <label>:15 ; preds = %7, %0 + ret void +} + +; [#uses=2] +define internal void @_Z12removevaluesP9FuncStatei(%struct.FuncState* %fs, i32 %list) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=5] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %list, i32* %2, align 4 + br label %3 + +; <label>:3 ; preds = %10, %0 + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = icmp ne i32 %4, -1 ; [#uses=1] + br i1 %5, label %6, label %14 + +; <label>:6 ; preds = %3 + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = call i32 @_Z12patchtestregP9FuncStateii(%struct.FuncState* %7, i32 %8, i32 255) ; [#uses=0] + br label %10 + +; <label>:10 ; preds = %6 + %11 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = call i32 @_Z7getjumpP9FuncStatei(%struct.FuncState* %11, i32 %12) ; [#uses=1] + store i32 %13, i32* %2, align 4 + br label %3 + +; <label>:14 ; preds = %3 + ret void +} + +; [#uses=2] +define internal i32 @_Z12patchtestregP9FuncStateii(%struct.FuncState* %fs, i32 %node, i32 %reg) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=4] + %i = alloca i32*, align 4 ; [#uses=8] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store i32 %node, i32* %3, align 4 + store i32 %reg, i32* %4, align 4 + %5 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call i32* @_Z14getjumpcontrolP9FuncStatei(%struct.FuncState* %5, i32 %6) ; [#uses=1] + store i32* %7, i32** %i, align 4 + %8 = load i32** %i, align 4 ; [#uses=1] + %9 = load i32* %8 ; [#uses=1] + %10 = lshr i32 %9, 0 ; [#uses=1] + %11 = and i32 %10, 63 ; [#uses=1] + %12 = icmp ne i32 %11, 27 ; [#uses=1] + br i1 %12, label %13, label %14 + +; <label>:13 ; preds = %0 + store i32 0, i32* %1 + br label %48 + +; <label>:14 ; preds = %0 + %15 = load i32* %4, align 4 ; [#uses=1] + %16 = icmp ne i32 %15, 255 ; [#uses=1] + br i1 %16, label %17, label %33 + +; <label>:17 ; preds = %14 + %18 = load i32* %4, align 4 ; [#uses=1] + %19 = load i32** %i, align 4 ; [#uses=1] + %20 = load i32* %19 ; [#uses=1] + %21 = lshr i32 %20, 23 ; [#uses=1] + %22 = and i32 %21, 511 ; [#uses=1] + %23 = icmp ne i32 %18, %22 ; [#uses=1] + br i1 %23, label %24, label %33 + +; <label>:24 ; preds = %17 + %25 = load i32** %i, align 4 ; [#uses=1] + %26 = load i32* %25 ; [#uses=1] + %27 = and i32 %26, -16321 ; [#uses=1] + %28 = load i32* %4, align 4 ; [#uses=1] + %29 = shl i32 %28, 6 ; [#uses=1] + %30 = and i32 %29, 16320 ; [#uses=1] + %31 = or i32 %27, %30 ; [#uses=1] + %32 = load i32** %i, align 4 ; [#uses=1] + store i32 %31, i32* %32 + br label %47 + +; <label>:33 ; preds = %17, %14 + %34 = load i32** %i, align 4 ; [#uses=1] + %35 = load i32* %34 ; [#uses=1] + %36 = lshr i32 %35, 23 ; [#uses=1] + %37 = and i32 %36, 511 ; [#uses=1] + %38 = shl i32 %37, 6 ; [#uses=1] + %39 = or i32 26, %38 ; [#uses=1] + %40 = load i32** %i, align 4 ; [#uses=1] + %41 = load i32* %40 ; [#uses=1] + %42 = lshr i32 %41, 14 ; [#uses=1] + %43 = and i32 %42, 511 ; [#uses=1] + %44 = shl i32 %43, 14 ; [#uses=1] + %45 = or i32 %39, %44 ; [#uses=1] + %46 = load i32** %i, align 4 ; [#uses=1] + store i32 %45, i32* %46 + br label %47 + +; <label>:47 ; preds = %33, %24 + store i32 1, i32* %1 + br label %48 + +; <label>:48 ; preds = %47, %13 + %49 = load i32* %1 ; [#uses=1] + ret i32 %49 +} + +; [#uses=3] +define internal i32* @_Z14getjumpcontrolP9FuncStatei(%struct.FuncState* %fs, i32 %pc) nounwind { + %1 = alloca i32*, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %pi = alloca i32*, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store i32 %pc, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.Proto** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Proto* %7, i32 0, i32 4 ; [#uses=1] + %9 = load i32** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds i32* %9, i32 %4 ; [#uses=1] + store i32* %10, i32** %pi, align 4 + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = icmp sge i32 %11, 1 ; [#uses=1] + br i1 %12, label %13, label %27 + +; <label>:13 ; preds = %0 + %14 = load i32** %pi, align 4 ; [#uses=1] + %15 = getelementptr inbounds i32* %14, i32 -1 ; [#uses=1] + %16 = load i32* %15 ; [#uses=1] + %17 = lshr i32 %16, 0 ; [#uses=1] + %18 = and i32 %17, 63 ; [#uses=1] + %19 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %18 ; [#uses=1] + %20 = load i8* %19 ; [#uses=1] + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = and i32 %21, 128 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %27 + +; <label>:24 ; preds = %13 + %25 = load i32** %pi, align 4 ; [#uses=1] + %26 = getelementptr inbounds i32* %25, i32 -1 ; [#uses=1] + store i32* %26, i32** %1 + br label %29 + +; <label>:27 ; preds = %13, %0 + %28 = load i32** %pi, align 4 ; [#uses=1] + store i32* %28, i32** %1 + br label %29 + +; <label>:29 ; preds = %27, %24 + %30 = load i32** %1 ; [#uses=1] + ret i32* %30 +} + +; [#uses=2] +define internal void @_Z13discharge2regP9FuncStateP7expdesci(%struct.FuncState* %fs, %struct.expdesc* %e, i32 %reg) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=9] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=11] + %3 = alloca i32, align 4 ; [#uses=9] + %pc = alloca i32*, align 4 ; [#uses=3] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store i32 %reg, i32* %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %4, %struct.expdesc* %5) + %6 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.expdesc* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + switch i32 %8, label %79 [ + i32 1, label %9 + i32 3, label %12 + i32 2, label %12 + i32 4, label %21 + i32 5, label %30 + i32 11, label %41 + i32 12, label %61 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load i32* %3, align 4 ; [#uses=1] + call void @_Z8luaK_nilP9FuncStateii(%struct.FuncState* %10, i32 %11, i32 1) + br label %80 + +; <label>:12 ; preds = %0, %0 + %13 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 0 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 2 ; [#uses=1] + %19 = zext i1 %18 to i32 ; [#uses=1] + %20 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %13, i32 2, i32 %14, i32 %19, i32 0) ; [#uses=0] + br label %80 + +; <label>:21 ; preds = %0 + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.expdesc* %24, i32 0, i32 1 ; [#uses=1] + %26 = getelementptr inbounds %2* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %3* %26, i32 0, i32 0 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %22, i32 1, i32 %23, i32 %28) ; [#uses=0] + br label %80 + +; <label>:30 ; preds = %0 + %31 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %32 = load i32* %3, align 4 ; [#uses=1] + %33 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %34 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.expdesc* %34, i32 0, i32 1 ; [#uses=1] + %36 = getelementptr inbounds %2* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %3* %36 to double* ; [#uses=1] + %38 = load double* %37, align 4 ; [#uses=1] + %39 = call i32 @_Z12luaK_numberKP9FuncStated(%struct.FuncState* %33, double %38) ; [#uses=1] + %40 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %31, i32 1, i32 %32, i32 %39) ; [#uses=0] + br label %80 + +; <label>:41 ; preds = %0 + %42 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.expdesc* %42, i32 0, i32 1 ; [#uses=1] + %44 = getelementptr inbounds %2* %43, i32 0, i32 0 ; [#uses=1] + %45 = getelementptr inbounds %3* %44, i32 0, i32 0 ; [#uses=1] + %46 = load i32* %45, align 4 ; [#uses=1] + %47 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.FuncState* %47, i32 0, i32 0 ; [#uses=1] + %49 = load %struct.Proto** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Proto* %49, i32 0, i32 4 ; [#uses=1] + %51 = load i32** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds i32* %51, i32 %46 ; [#uses=1] + store i32* %52, i32** %pc, align 4 + %53 = load i32** %pc, align 4 ; [#uses=1] + %54 = load i32* %53 ; [#uses=1] + %55 = and i32 %54, -16321 ; [#uses=1] + %56 = load i32* %3, align 4 ; [#uses=1] + %57 = shl i32 %56, 6 ; [#uses=1] + %58 = and i32 %57, 16320 ; [#uses=1] + %59 = or i32 %55, %58 ; [#uses=1] + %60 = load i32** %pc, align 4 ; [#uses=1] + store i32 %59, i32* %60 + br label %80 + +; <label>:61 ; preds = %0 + %62 = load i32* %3, align 4 ; [#uses=1] + %63 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.expdesc* %63, i32 0, i32 1 ; [#uses=1] + %65 = getelementptr inbounds %2* %64, i32 0, i32 0 ; [#uses=1] + %66 = getelementptr inbounds %3* %65, i32 0, i32 0 ; [#uses=1] + %67 = load i32* %66, align 4 ; [#uses=1] + %68 = icmp ne i32 %62, %67 ; [#uses=1] + br i1 %68, label %69, label %78 + +; <label>:69 ; preds = %61 + %70 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %71 = load i32* %3, align 4 ; [#uses=1] + %72 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.expdesc* %72, i32 0, i32 1 ; [#uses=1] + %74 = getelementptr inbounds %2* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %3* %74, i32 0, i32 0 ; [#uses=1] + %76 = load i32* %75, align 4 ; [#uses=1] + %77 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %70, i32 0, i32 %71, i32 %76, i32 0) ; [#uses=0] + br label %78 + +; <label>:78 ; preds = %69, %61 + br label %80 + +; <label>:79 ; preds = %0 + br label %88 + +; <label>:80 ; preds = %78, %41, %30, %21, %12, %9 + %81 = load i32* %3, align 4 ; [#uses=1] + %82 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.expdesc* %82, i32 0, i32 1 ; [#uses=1] + %84 = getelementptr inbounds %2* %83, i32 0, i32 0 ; [#uses=1] + %85 = getelementptr inbounds %3* %84, i32 0, i32 0 ; [#uses=1] + store i32 %81, i32* %85, align 4 + %86 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.expdesc* %86, i32 0, i32 0 ; [#uses=1] + store i32 12, i32* %87, align 4 + br label %88 + +; <label>:88 ; preds = %80, %79 + ret void +} + +; [#uses=1] +define internal i32 @_Z12constfolding6OpCodeP7expdescS1_(i32 %op, %struct.expdesc* %e1, %struct.expdesc* %e2) { + %1 = alloca i32, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %v1 = alloca double, align 8 ; [#uses=9] + %v2 = alloca double, align 8 ; [#uses=10] + %r = alloca double, align 8 ; [#uses=11] + store i32 %op, i32* %2, align 4 + store %struct.expdesc* %e1, %struct.expdesc** %3, align 4 + store %struct.expdesc* %e2, %struct.expdesc** %4, align 4 + %5 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %6 = call i32 @_Z9isnumeralP7expdesc(%struct.expdesc* %5) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %12 + +; <label>:8 ; preds = %0 + %9 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %10 = call i32 @_Z9isnumeralP7expdesc(%struct.expdesc* %9) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %13, label %12 + +; <label>:12 ; preds = %8, %0 + store i32 0, i32* %1 + br label %78 + +; <label>:13 ; preds = %8 + %14 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.expdesc* %14, i32 0, i32 1 ; [#uses=1] + %16 = getelementptr inbounds %2* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %3* %16 to double* ; [#uses=1] + %18 = load double* %17, align 4 ; [#uses=1] + store double %18, double* %v1, align 8 + %19 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.expdesc* %19, i32 0, i32 1 ; [#uses=1] + %21 = getelementptr inbounds %2* %20, i32 0, i32 0 ; [#uses=1] + %22 = bitcast %3* %21 to double* ; [#uses=1] + %23 = load double* %22, align 4 ; [#uses=1] + store double %23, double* %v2, align 8 + %24 = load i32* %2, align 4 ; [#uses=1] + switch i32 %24, label %66 [ + i32 12, label %25 + i32 13, label %29 + i32 14, label %33 + i32 15, label %37 + i32 16, label %45 + i32 17, label %58 + i32 18, label %62 + i32 20, label %65 + ] + +; <label>:25 ; preds = %13 + %26 = load double* %v1, align 8 ; [#uses=1] + %27 = load double* %v2, align 8 ; [#uses=1] + %28 = fadd double %26, %27 ; [#uses=1] + store double %28, double* %r, align 8 + br label %67 + +; <label>:29 ; preds = %13 + %30 = load double* %v1, align 8 ; [#uses=1] + %31 = load double* %v2, align 8 ; [#uses=1] + %32 = fsub double %30, %31 ; [#uses=1] + store double %32, double* %r, align 8 + br label %67 + +; <label>:33 ; preds = %13 + %34 = load double* %v1, align 8 ; [#uses=1] + %35 = load double* %v2, align 8 ; [#uses=1] + %36 = fmul double %34, %35 ; [#uses=1] + store double %36, double* %r, align 8 + br label %67 + +; <label>:37 ; preds = %13 + %38 = load double* %v2, align 8 ; [#uses=1] + %39 = fcmp oeq double %38, 0.000000e+00 ; [#uses=1] + br i1 %39, label %40, label %41 + +; <label>:40 ; preds = %37 + store i32 0, i32* %1 + br label %78 + +; <label>:41 ; preds = %37 + %42 = load double* %v1, align 8 ; [#uses=1] + %43 = load double* %v2, align 8 ; [#uses=1] + %44 = fdiv double %42, %43 ; [#uses=1] + store double %44, double* %r, align 8 + br label %67 + +; <label>:45 ; preds = %13 + %46 = load double* %v2, align 8 ; [#uses=1] + %47 = fcmp oeq double %46, 0.000000e+00 ; [#uses=1] + br i1 %47, label %48, label %49 + +; <label>:48 ; preds = %45 + store i32 0, i32* %1 + br label %78 + +; <label>:49 ; preds = %45 + %50 = load double* %v1, align 8 ; [#uses=1] + %51 = load double* %v1, align 8 ; [#uses=1] + %52 = load double* %v2, align 8 ; [#uses=1] + %53 = fdiv double %51, %52 ; [#uses=1] + %54 = call double @floor(double %53) nounwind readnone ; [#uses=1] + %55 = load double* %v2, align 8 ; [#uses=1] + %56 = fmul double %54, %55 ; [#uses=1] + %57 = fsub double %50, %56 ; [#uses=1] + store double %57, double* %r, align 8 + br label %67 + +; <label>:58 ; preds = %13 + %59 = load double* %v1, align 8 ; [#uses=1] + %60 = load double* %v2, align 8 ; [#uses=1] + %61 = call double @llvm.pow.f64(double %59, double %60) ; [#uses=1] + store double %61, double* %r, align 8 + br label %67 + +; <label>:62 ; preds = %13 + %63 = load double* %v1, align 8 ; [#uses=1] + %64 = fsub double -0.000000e+00, %63 ; [#uses=1] + store double %64, double* %r, align 8 + br label %67 + +; <label>:65 ; preds = %13 + store i32 0, i32* %1 + br label %78 + +; <label>:66 ; preds = %13 + store double 0.000000e+00, double* %r, align 8 + br label %67 + +; <label>:67 ; preds = %66, %62, %58, %49, %41, %33, %29, %25 + %68 = load double* %r, align 8 ; [#uses=1] + %69 = load double* %r, align 8 ; [#uses=1] + %70 = fcmp oeq double %68, %69 ; [#uses=1] + br i1 %70, label %72, label %71 + +; <label>:71 ; preds = %67 + store i32 0, i32* %1 + br label %78 + +; <label>:72 ; preds = %67 + %73 = load double* %r, align 8 ; [#uses=1] + %74 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.expdesc* %74, i32 0, i32 1 ; [#uses=1] + %76 = getelementptr inbounds %2* %75, i32 0, i32 0 ; [#uses=1] + %77 = bitcast %3* %76 to double* ; [#uses=1] + store double %73, double* %77, align 4 + store i32 1, i32* %1 + br label %78 + +; <label>:78 ; preds = %72, %71, %65, %48, %40, %12 + %79 = load i32* %1 ; [#uses=1] + ret i32 %79 +} + +; [#uses=6] +declare double @floor(double) nounwind readnone + +; [#uses=4] +declare double @llvm.pow.f64(double, double) nounwind readonly + +; [#uses=2] +define internal i32 @_Z10need_valueP9FuncStatei(%struct.FuncState* %fs, i32 %list) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store i32 %list, i32* %3, align 4 + br label %4 + +; <label>:4 ; preds = %18, %0 + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = icmp ne i32 %5, -1 ; [#uses=1] + br i1 %6, label %7, label %22 + +; <label>:7 ; preds = %4 + %8 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = call i32* @_Z14getjumpcontrolP9FuncStatei(%struct.FuncState* %8, i32 %9) ; [#uses=1] + %11 = load i32* %10 ; [#uses=1] + store i32 %11, i32* %i, align 4 + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = lshr i32 %12, 0 ; [#uses=1] + %14 = and i32 %13, 63 ; [#uses=1] + %15 = icmp ne i32 %14, 27 ; [#uses=1] + br i1 %15, label %16, label %17 + +; <label>:16 ; preds = %7 + store i32 1, i32* %1 + br label %23 + +; <label>:17 ; preds = %7 + br label %18 + +; <label>:18 ; preds = %17 + %19 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %20 = load i32* %3, align 4 ; [#uses=1] + %21 = call i32 @_Z7getjumpP9FuncStatei(%struct.FuncState* %19, i32 %20) ; [#uses=1] + store i32 %21, i32* %3, align 4 + br label %4 + +; <label>:22 ; preds = %4 + store i32 0, i32* %1 + br label %23 + +; <label>:23 ; preds = %22, %16 + %24 = load i32* %1 ; [#uses=1] + ret i32 %24 +} + +; [#uses=2] +define internal i32 @_Z10code_labelP9FuncStateiii(%struct.FuncState* %fs, i32 %A, i32 %b, i32 %jump) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %A, i32* %2, align 4 + store i32 %b, i32* %3, align 4 + store i32 %jump, i32* %4, align 4 + %5 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %5) ; [#uses=0] + %7 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = load i32* %4, align 4 ; [#uses=1] + %11 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %7, i32 2, i32 %8, i32 %9, i32 %10) ; [#uses=1] + ret i32 %11 +} + +; [#uses=1] +declare i32 @abs(i32) nounwind readnone + +; [#uses=3] +define i32 @_Z11lua_sethookP9lua_StatePFvS0_P9lua_DebugEii(%struct.lua_State* %L, void (%struct.lua_State*, %struct.lua_Debug*)* %func, i32 %mask, i32 %count) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca void (%struct.lua_State*, %struct.lua_Debug*)*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=4] + %4 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store void (%struct.lua_State*, %struct.lua_Debug*)* %func, void (%struct.lua_State*, %struct.lua_Debug*)** %2, align 4 + store i32 %mask, i32* %3, align 4 + store i32 %count, i32* %4, align 4 + %5 = load void (%struct.lua_State*, %struct.lua_Debug*)** %2, align 4 ; [#uses=1] + %6 = icmp eq void (%struct.lua_State*, %struct.lua_Debug*)* %5, null ; [#uses=1] + br i1 %6, label %10, label %7 + +; <label>:7 ; preds = %0 + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %7, %0 + store i32 0, i32* %3, align 4 + store void (%struct.lua_State*, %struct.lua_Debug*)* null, void (%struct.lua_State*, %struct.lua_Debug*)** %2, align 4 + br label %11 + +; <label>:11 ; preds = %10, %7 + %12 = load void (%struct.lua_State*, %struct.lua_Debug*)** %2, align 4 ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 21 ; [#uses=1] + store void (%struct.lua_State*, %struct.lua_Debug*)* %12, void (%struct.lua_State*, %struct.lua_Debug*)** %14, align 4 + %15 = load i32* %4, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 19 ; [#uses=1] + store i32 %15, i32* %17, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 19 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 20 ; [#uses=1] + store i32 %20, i32* %22, align 4 + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = trunc i32 %23 to i8 ; [#uses=1] + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 17 ; [#uses=1] + store i8 %24, i8* %26, align 1 + ret i32 1 +} + +; [#uses=1] +define void (%struct.lua_State*, %struct.lua_Debug*)* @_Z11lua_gethookP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 21 ; [#uses=1] + %4 = load void (%struct.lua_State*, %struct.lua_Debug*)** %3, align 4 ; [#uses=1] + ret void (%struct.lua_State*, %struct.lua_Debug*)* %4 +} + +; [#uses=1] +define i32 @_Z15lua_gethookmaskP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 17 ; [#uses=1] + %4 = load i8* %3, align 1 ; [#uses=1] + %5 = zext i8 %4 to i32 ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define i32 @_Z16lua_gethookcountP9lua_State(%struct.lua_State* %L) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 19 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + ret i32 %4 +} + +; [#uses=11] +define i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %L, i32 %level, %struct.lua_Debug* %ar) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=8] + %3 = alloca %struct.lua_Debug*, align 4 ; [#uses=3] + %status = alloca i32, align 4 ; [#uses=4] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %level, i32* %2, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 7 ; [#uses=1] + %6 = load %struct.CallInfo** %5, align 4 ; [#uses=1] + store %struct.CallInfo* %6, %struct.CallInfo** %ci, align 4 + br label %7 + +; <label>:7 ; preds = %41, %0 + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = icmp sgt i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %16 + +; <label>:10 ; preds = %7 + %11 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 12 ; [#uses=1] + %14 = load %struct.CallInfo** %13, align 4 ; [#uses=1] + %15 = icmp ugt %struct.CallInfo* %11, %14 ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %10, %7 + %17 = phi i1 [ false, %7 ], [ %15, %10 ] ; [#uses=1] + br i1 %17, label %18, label %44 + +; <label>:18 ; preds = %16 + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = add nsw i32 %19, -1 ; [#uses=1] + store i32 %20, i32* %2, align 4 + %21 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.CallInfo* %21, i32 0, i32 1 ; [#uses=1] + %23 = load %struct.lua_TValue** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast double* %25 to %union.GCObject** ; [#uses=1] + %27 = load %union.GCObject** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %union.GCObject* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast %struct.lua_State* %28 to %union.Closure* ; [#uses=1] + %30 = getelementptr inbounds %union.Closure* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %struct.CClosure* %30, i32 0, i32 3 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = icmp ne i8 %32, 0 ; [#uses=1] + br i1 %33, label %40, label %34 + +; <label>:34 ; preds = %18 + %35 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.CallInfo* %35, i32 0, i32 5 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = load i32* %2, align 4 ; [#uses=1] + %39 = sub nsw i32 %38, %37 ; [#uses=1] + store i32 %39, i32* %2, align 4 + br label %40 + +; <label>:40 ; preds = %34, %18 + br label %41 + +; <label>:41 ; preds = %40 + %42 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.CallInfo* %42, i32 -1 ; [#uses=1] + store %struct.CallInfo* %43, %struct.CallInfo** %ci, align 4 + br label %7 + +; <label>:44 ; preds = %16 + %45 = load i32* %2, align 4 ; [#uses=1] + %46 = icmp eq i32 %45, 0 ; [#uses=1] + br i1 %46, label %47, label %64 + +; <label>:47 ; preds = %44 + %48 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 12 ; [#uses=1] + %51 = load %struct.CallInfo** %50, align 4 ; [#uses=1] + %52 = icmp ugt %struct.CallInfo* %48, %51 ; [#uses=1] + br i1 %52, label %53, label %64 + +; <label>:53 ; preds = %47 + store i32 1, i32* %status, align 4 + %54 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 12 ; [#uses=1] + %57 = load %struct.CallInfo** %56, align 4 ; [#uses=1] + %58 = ptrtoint %struct.CallInfo* %54 to i32 ; [#uses=1] + %59 = ptrtoint %struct.CallInfo* %57 to i32 ; [#uses=1] + %60 = sub i32 %58, %59 ; [#uses=1] + %61 = sdiv exact i32 %60, 24 ; [#uses=1] + %62 = load %struct.lua_Debug** %3, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_Debug* %62, i32 0, i32 10 ; [#uses=1] + store i32 %61, i32* %63, align 4 + br label %72 + +; <label>:64 ; preds = %47, %44 + %65 = load i32* %2, align 4 ; [#uses=1] + %66 = icmp slt i32 %65, 0 ; [#uses=1] + br i1 %66, label %67, label %70 + +; <label>:67 ; preds = %64 + store i32 1, i32* %status, align 4 + %68 = load %struct.lua_Debug** %3, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_Debug* %68, i32 0, i32 10 ; [#uses=1] + store i32 0, i32* %69, align 4 + br label %71 + +; <label>:70 ; preds = %64 + store i32 0, i32* %status, align 4 + br label %71 + +; <label>:71 ; preds = %70, %67 + br label %72 + +; <label>:72 ; preds = %71, %53 + %73 = load i32* %status, align 4 ; [#uses=1] + ret i32 %73 +} + +; [#uses=1] +define i8* @_Z12lua_getlocalP9lua_StatePK9lua_Debugi(%struct.lua_State* %L, %struct.lua_Debug* %ar, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_Debug*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=3] + %name = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 12 ; [#uses=1] + %6 = load %struct.CallInfo** %5, align 4 ; [#uses=1] + %7 = load %struct.lua_Debug** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_Debug* %7, i32 0, i32 10 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallInfo* %6, i32 %9 ; [#uses=1] + store %struct.CallInfo* %10, %struct.CallInfo** %ci, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = call i8* @_Z9findlocalP9lua_StateP8CallInfoi(%struct.lua_State* %11, %struct.CallInfo* %12, i32 %13) ; [#uses=1] + store i8* %14, i8** %name, align 4 + %15 = load i8** %name, align 4 ; [#uses=1] + %16 = icmp ne i8* %15, null ; [#uses=1] + br i1 %16, label %17, label %25 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.CallInfo* %19, i32 0, i32 0 ; [#uses=1] + %21 = load %struct.lua_TValue** %20, align 4 ; [#uses=1] + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = sub nsw i32 %22, 1 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %21, i32 %23 ; [#uses=1] + call void @_Z15luaA_pushobjectP9lua_StatePK10lua_TValue(%struct.lua_State* %18, %struct.lua_TValue* %24) + br label %25 + +; <label>:25 ; preds = %17, %0 + %26 = load i8** %name, align 4 ; [#uses=1] + ret i8* %26 +} + +; [#uses=2] +define internal i8* @_Z9findlocalP9lua_StateP8CallInfoi(%struct.lua_State* %L, %struct.CallInfo* %ci, i32 %n) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.CallInfo*, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=4] + %name = alloca i8*, align 4 ; [#uses=2] + %fp = alloca %struct.Proto*, align 4 ; [#uses=3] + %limit = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %3, align 4 + store i32 %n, i32* %4, align 4 + %5 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %6 = call %struct.Proto* @_Z11getluaprotoP8CallInfo(%struct.CallInfo* %5) ; [#uses=1] + store %struct.Proto* %6, %struct.Proto** %fp, align 4 + %7 = load %struct.Proto** %fp, align 4 ; [#uses=1] + %8 = icmp ne %struct.Proto* %7, null ; [#uses=1] + br i1 %8, label %9, label %19 + +; <label>:9 ; preds = %0 + %10 = load %struct.Proto** %fp, align 4 ; [#uses=1] + %11 = load i32* %4, align 4 ; [#uses=1] + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %14 = call i32 @_Z9currentpcP9lua_StateP8CallInfo(%struct.lua_State* %12, %struct.CallInfo* %13) ; [#uses=1] + %15 = call i8* @_Z17luaF_getlocalnamePK5Protoii(%struct.Proto* %10, i32 %11, i32 %14) ; [#uses=2] + store i8* %15, i8** %name, align 4 + %16 = icmp ne i8* %15, null ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %9 + %18 = load i8** %name, align 4 ; [#uses=1] + store i8* %18, i8** %1 + br label %51 + +; <label>:19 ; preds = %9, %0 + %20 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 7 ; [#uses=1] + %23 = load %struct.CallInfo** %22, align 4 ; [#uses=1] + %24 = icmp eq %struct.CallInfo* %20, %23 ; [#uses=1] + br i1 %24, label %25, label %29 + +; <label>:25 ; preds = %19 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_State* %26, i32 0, i32 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %27, align 4 ; [#uses=1] + br label %34 + +; <label>:29 ; preds = %19 + %30 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.CallInfo* %30, i32 1 ; [#uses=1] + %32 = getelementptr inbounds %struct.CallInfo* %31, i32 0, i32 1 ; [#uses=1] + %33 = load %struct.lua_TValue** %32, align 4 ; [#uses=1] + br label %34 + +; <label>:34 ; preds = %29, %25 + %35 = phi %struct.lua_TValue* [ %28, %25 ], [ %33, %29 ] ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %limit, align 4 + %36 = load %struct.lua_TValue** %limit, align 4 ; [#uses=1] + %37 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.CallInfo* %37, i32 0, i32 0 ; [#uses=1] + %39 = load %struct.lua_TValue** %38, align 4 ; [#uses=1] + %40 = ptrtoint %struct.lua_TValue* %36 to i32 ; [#uses=1] + %41 = ptrtoint %struct.lua_TValue* %39 to i32 ; [#uses=1] + %42 = sub i32 %40, %41 ; [#uses=1] + %43 = sdiv exact i32 %42, 12 ; [#uses=1] + %44 = load i32* %4, align 4 ; [#uses=1] + %45 = icmp sge i32 %43, %44 ; [#uses=1] + br i1 %45, label %46, label %50 + +; <label>:46 ; preds = %34 + %47 = load i32* %4, align 4 ; [#uses=1] + %48 = icmp sgt i32 %47, 0 ; [#uses=1] + br i1 %48, label %49, label %50 + +; <label>:49 ; preds = %46 + store i8* getelementptr inbounds ([13 x i8]* @.str2049, i32 0, i32 0), i8** %1 + br label %51 + +; <label>:50 ; preds = %46, %34 + store i8* null, i8** %1 + br label %51 + +; <label>:51 ; preds = %50, %49, %17 + %52 = load i8** %1 ; [#uses=1] + ret i8* %52 +} + +; [#uses=1] +define i8* @_Z12lua_setlocalP9lua_StatePK9lua_Debugi(%struct.lua_State* %L, %struct.lua_Debug* %ar, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca %struct.lua_Debug*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=3] + %name = alloca i8*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 12 ; [#uses=1] + %6 = load %struct.CallInfo** %5, align 4 ; [#uses=1] + %7 = load %struct.lua_Debug** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_Debug* %7, i32 0, i32 10 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallInfo* %6, i32 %9 ; [#uses=1] + store %struct.CallInfo* %10, %struct.CallInfo** %ci, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = call i8* @_Z9findlocalP9lua_StateP8CallInfoi(%struct.lua_State* %11, %struct.CallInfo* %12, i32 %13) ; [#uses=1] + store i8* %14, i8** %name, align 4 + %15 = load i8** %name, align 4 ; [#uses=1] + %16 = icmp ne i8* %15, null ; [#uses=1] + br i1 %16, label %17, label %39 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %21, %struct.lua_TValue** %o2, align 4 + %22 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.CallInfo* %22, i32 0, i32 0 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = load i32* %3, align 4 ; [#uses=1] + %26 = sub nsw i32 %25, 1 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %24, i32 %26 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %o1, align 4 + %28 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 0 ; [#uses=1] + %30 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %union.anon* %29 to i8* ; [#uses=1] + %33 = bitcast %union.anon* %31 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %32, i8* %33, i32 8, i32 4, i1 false) + %34 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 1 ; [#uses=1] + store i32 %36, i32* %38, align 4 + br label %39 + +; <label>:39 ; preds = %17, %0 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 4 ; [#uses=2] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %43, %struct.lua_TValue** %41, align 4 + %44 = load i8** %name, align 4 ; [#uses=1] + ret i8* %44 +} + +; [#uses=6] +define i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %L, i8* %what, %struct.lua_Debug* %ar) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %2 = alloca i8*, align 4 ; [#uses=7] + %3 = alloca %struct.lua_Debug*, align 4 ; [#uses=4] + %status = alloca i32, align 4 ; [#uses=2] + %f = alloca %union.Closure*, align 4 ; [#uses=7] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=4] + %func = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %what, i8** %2, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %3, align 4 + store %union.Closure* null, %union.Closure** %f, align 4 + store %struct.CallInfo* null, %struct.CallInfo** %ci, align 4 + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = load i8* %4 ; [#uses=1] + %6 = sext i8 %5 to i32 ; [#uses=1] + %7 = icmp eq i32 %6, 62 ; [#uses=1] + br i1 %7, label %8, label %26 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %func, align 4 + %13 = load i8** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds i8* %13, i32 1 ; [#uses=1] + store i8* %14, i8** %2, align 4 + %15 = load %struct.lua_TValue** %func, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.Closure* ; [#uses=1] + store %union.Closure* %21, %union.Closure** %f, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=2] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %23, align 4 + br label %49 + +; <label>:26 ; preds = %0 + %27 = load %struct.lua_Debug** %3, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_Debug* %27, i32 0, i32 10 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = icmp ne i32 %29, 0 ; [#uses=1] + br i1 %30, label %31, label %48 + +; <label>:31 ; preds = %26 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 12 ; [#uses=1] + %34 = load %struct.CallInfo** %33, align 4 ; [#uses=1] + %35 = load %struct.lua_Debug** %3, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_Debug* %35, i32 0, i32 10 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.CallInfo* %34, i32 %37 ; [#uses=1] + store %struct.CallInfo* %38, %struct.CallInfo** %ci, align 4 + %39 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.CallInfo* %39, i32 0, i32 1 ; [#uses=1] + %41 = load %struct.lua_TValue** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %41, i32 0, i32 0 ; [#uses=1] + %43 = getelementptr inbounds %union.anon* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast double* %43 to %union.GCObject** ; [#uses=1] + %45 = load %union.GCObject** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %union.GCObject* %45, i32 0, i32 0 ; [#uses=1] + %47 = bitcast %struct.lua_State* %46 to %union.Closure* ; [#uses=1] + store %union.Closure* %47, %union.Closure** %f, align 4 + br label %48 + +; <label>:48 ; preds = %31, %26 + br label %49 + +; <label>:49 ; preds = %48, %8 + %50 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %51 = load i8** %2, align 4 ; [#uses=1] + %52 = load %struct.lua_Debug** %3, align 4 ; [#uses=1] + %53 = load %union.Closure** %f, align 4 ; [#uses=1] + %54 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %55 = call i32 @_Z10auxgetinfoP9lua_StatePKcP9lua_DebugP7ClosureP8CallInfo(%struct.lua_State* %50, i8* %51, %struct.lua_Debug* %52, %union.Closure* %53, %struct.CallInfo* %54) ; [#uses=1] + store i32 %55, i32* %status, align 4 + %56 = load i8** %2, align 4 ; [#uses=1] + %57 = call i8* @strchr(i8* %56, i32 102) ; [#uses=1] + %58 = icmp ne i8* %57, null ; [#uses=1] + br i1 %58, label %59, label %100 + +; <label>:59 ; preds = %49 + %60 = load %union.Closure** %f, align 4 ; [#uses=1] + %61 = icmp eq %union.Closure* %60, null ; [#uses=1] + br i1 %61, label %62, label %67 + +; <label>:62 ; preds = %59 + %63 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_State* %63, i32 0, i32 4 ; [#uses=1] + %65 = load %struct.lua_TValue** %64, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %66, align 4 + br label %79 + +; <label>:67 ; preds = %59 + %68 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_State* %68, i32 0, i32 4 ; [#uses=1] + %70 = load %struct.lua_TValue** %69, align 4 ; [#uses=1] + store %struct.lua_TValue* %70, %struct.lua_TValue** %i_o, align 4 + %71 = load %union.Closure** %f, align 4 ; [#uses=1] + %72 = bitcast %union.Closure* %71 to %union.GCObject* ; [#uses=1] + %73 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %union.anon* %74, i32 0, i32 0 ; [#uses=1] + %76 = bitcast double* %75 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %72, %union.GCObject** %76, align 4 + %77 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.lua_TValue* %77, i32 0, i32 1 ; [#uses=1] + store i32 6, i32* %78, align 4 + br label %79 + +; <label>:79 ; preds = %67, %62 + %80 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_State* %80, i32 0, i32 9 ; [#uses=1] + %82 = load %struct.lua_TValue** %81, align 4 ; [#uses=1] + %83 = bitcast %struct.lua_TValue* %82 to i8* ; [#uses=1] + %84 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_State* %84, i32 0, i32 4 ; [#uses=1] + %86 = load %struct.lua_TValue** %85, align 4 ; [#uses=1] + %87 = bitcast %struct.lua_TValue* %86 to i8* ; [#uses=1] + %88 = ptrtoint i8* %83 to i32 ; [#uses=1] + %89 = ptrtoint i8* %87 to i32 ; [#uses=1] + %90 = sub i32 %88, %89 ; [#uses=1] + %91 = icmp sle i32 %90, 12 ; [#uses=1] + br i1 %91, label %92, label %94 + +; <label>:92 ; preds = %79 + %93 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %93, i32 1) + br label %95 + +; <label>:94 ; preds = %79 + br label %95 + +; <label>:95 ; preds = %94, %92 + %96 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_State* %96, i32 0, i32 4 ; [#uses=2] + %98 = load %struct.lua_TValue** %97, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_TValue* %98, i32 1 ; [#uses=1] + store %struct.lua_TValue* %99, %struct.lua_TValue** %97, align 4 + br label %100 + +; <label>:100 ; preds = %95, %49 + %101 = load i8** %2, align 4 ; [#uses=1] + %102 = call i8* @strchr(i8* %101, i32 76) ; [#uses=1] + %103 = icmp ne i8* %102, null ; [#uses=1] + br i1 %103, label %104, label %107 + +; <label>:104 ; preds = %100 + %105 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %106 = load %union.Closure** %f, align 4 ; [#uses=1] + call void @_Z17collectvalidlinesP9lua_StateP7Closure(%struct.lua_State* %105, %union.Closure* %106) + br label %107 + +; <label>:107 ; preds = %104, %100 + %108 = load i32* %status, align 4 ; [#uses=1] + ret i32 %108 +} + +; [#uses=1] +define internal i32 @_Z10auxgetinfoP9lua_StatePKcP9lua_DebugP7ClosureP8CallInfo(%struct.lua_State* %L, i8* %what, %struct.lua_Debug* %ar, %union.Closure* %f, %struct.CallInfo* %ci) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=5] + %4 = alloca %struct.lua_Debug*, align 4 ; [#uses=10] + %5 = alloca %union.Closure*, align 4 ; [#uses=4] + %6 = alloca %struct.CallInfo*, align 4 ; [#uses=5] + %status = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %what, i8** %3, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %4, align 4 + store %union.Closure* %f, %union.Closure** %5, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %6, align 4 + store i32 1, i32* %status, align 4 + %7 = load %union.Closure** %5, align 4 ; [#uses=1] + %8 = icmp eq %union.Closure* %7, null ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + call void @_Z13info_tailcallP9lua_Debug(%struct.lua_Debug* %10) + %11 = load i32* %status, align 4 ; [#uses=1] + store i32 %11, i32* %1 + br label %76 + +; <label>:12 ; preds = %0 + br label %13 + +; <label>:13 ; preds = %71, %12 + %14 = load i8** %3, align 4 ; [#uses=1] + %15 = load i8* %14 ; [#uses=1] + %16 = icmp ne i8 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %74 + +; <label>:17 ; preds = %13 + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = load i8* %18 ; [#uses=1] + %20 = sext i8 %19 to i32 ; [#uses=1] + switch i32 %20, label %69 [ + i32 83, label %21 + i32 108, label %24 + i32 117, label %36 + i32 110, label %44 + i32 76, label %68 + i32 102, label %68 + ] + +; <label>:21 ; preds = %17 + %22 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %23 = load %union.Closure** %5, align 4 ; [#uses=1] + call void @_Z8funcinfoP9lua_DebugP7Closure(%struct.lua_Debug* %22, %union.Closure* %23) + br label %70 + +; <label>:24 ; preds = %17 + %25 = load %struct.CallInfo** %6, align 4 ; [#uses=1] + %26 = icmp ne %struct.CallInfo* %25, null ; [#uses=1] + br i1 %26, label %27, label %31 + +; <label>:27 ; preds = %24 + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %29 = load %struct.CallInfo** %6, align 4 ; [#uses=1] + %30 = call i32 @_Z11currentlineP9lua_StateP8CallInfo(%struct.lua_State* %28, %struct.CallInfo* %29) ; [#uses=1] + br label %32 + +; <label>:31 ; preds = %24 + br label %32 + +; <label>:32 ; preds = %31, %27 + %33 = phi i32 [ %30, %27 ], [ -1, %31 ] ; [#uses=1] + %34 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_Debug* %34, i32 0, i32 5 ; [#uses=1] + store i32 %33, i32* %35, align 4 + br label %70 + +; <label>:36 ; preds = %17 + %37 = load %union.Closure** %5, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.Closure* %37, i32 0, i32 0 ; [#uses=1] + %39 = getelementptr inbounds %struct.CClosure* %38, i32 0, i32 4 ; [#uses=1] + %40 = load i8* %39, align 1 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_Debug* %42, i32 0, i32 6 ; [#uses=1] + store i32 %41, i32* %43, align 4 + br label %70 + +; <label>:44 ; preds = %17 + %45 = load %struct.CallInfo** %6, align 4 ; [#uses=1] + %46 = icmp ne %struct.CallInfo* %45, null ; [#uses=1] + br i1 %46, label %47, label %53 + +; <label>:47 ; preds = %44 + %48 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %49 = load %struct.CallInfo** %6, align 4 ; [#uses=1] + %50 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_Debug* %50, i32 0, i32 1 ; [#uses=1] + %52 = call i8* @_Z11getfuncnameP9lua_StateP8CallInfoPPKc(%struct.lua_State* %48, %struct.CallInfo* %49, i8** %51) ; [#uses=1] + br label %54 + +; <label>:53 ; preds = %44 + br label %54 + +; <label>:54 ; preds = %53, %47 + %55 = phi i8* [ %52, %47 ], [ null, %53 ] ; [#uses=1] + %56 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_Debug* %56, i32 0, i32 2 ; [#uses=1] + store i8* %55, i8** %57, align 4 + %58 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_Debug* %58, i32 0, i32 2 ; [#uses=1] + %60 = load i8** %59, align 4 ; [#uses=1] + %61 = icmp eq i8* %60, null ; [#uses=1] + br i1 %61, label %62, label %67 + +; <label>:62 ; preds = %54 + %63 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_Debug* %63, i32 0, i32 2 ; [#uses=1] + store i8* getelementptr inbounds ([1 x i8]* @.str1344, i32 0, i32 0), i8** %64, align 4 + %65 = load %struct.lua_Debug** %4, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_Debug* %65, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %66, align 4 + br label %67 + +; <label>:67 ; preds = %62, %54 + br label %70 + +; <label>:68 ; preds = %17, %17 + br label %70 + +; <label>:69 ; preds = %17 + store i32 0, i32* %status, align 4 + br label %70 + +; <label>:70 ; preds = %69, %68, %67, %36, %32, %21 + br label %71 + +; <label>:71 ; preds = %70 + %72 = load i8** %3, align 4 ; [#uses=1] + %73 = getelementptr inbounds i8* %72, i32 1 ; [#uses=1] + store i8* %73, i8** %3, align 4 + br label %13 + +; <label>:74 ; preds = %13 + %75 = load i32* %status, align 4 ; [#uses=1] + store i32 %75, i32* %1 + br label %76 + +; <label>:76 ; preds = %74, %9 + %77 = load i32* %1 ; [#uses=1] + ret i32 %77 +} + +; [#uses=21] +declare i8* @strchr(i8*, i32) nounwind readonly + +; [#uses=1] +define internal void @_Z17collectvalidlinesP9lua_StateP7Closure(%struct.lua_State* %L, %union.Closure* %f) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca %union.Closure*, align 4 ; [#uses=5] + %t = alloca %struct.Table*, align 4 ; [#uses=3] + %lineinfo = alloca i32*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.Closure* %f, %union.Closure** %2, align 4 + %3 = load %union.Closure** %2, align 4 ; [#uses=1] + %4 = icmp eq %union.Closure* %3, null ; [#uses=1] + br i1 %4, label %11, label %5 + +; <label>:5 ; preds = %0 + %6 = load %union.Closure** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %union.Closure* %6, i32 0, i32 0 ; [#uses=1] + %8 = getelementptr inbounds %struct.CClosure* %7, i32 0, i32 3 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = icmp ne i8 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %16 + +; <label>:11 ; preds = %5, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %15, align 4 + br label %65 + +; <label>:16 ; preds = %5 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %17, i32 0, i32 0) ; [#uses=1] + store %struct.Table* %18, %struct.Table** %t, align 4 + %19 = load %union.Closure** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.CClosure* %20 to %struct.LClosure* ; [#uses=1] + %22 = getelementptr inbounds %struct.LClosure* %21, i32 0, i32 7 ; [#uses=1] + %23 = load %struct.Proto** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 6 ; [#uses=1] + %25 = load i32** %24, align 4 ; [#uses=1] + store i32* %25, i32** %lineinfo, align 4 + store i32 0, i32* %i, align 4 + br label %26 + +; <label>:26 ; preds = %50, %16 + %27 = load i32* %i, align 4 ; [#uses=1] + %28 = load %union.Closure** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %union.Closure* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast %struct.CClosure* %29 to %struct.LClosure* ; [#uses=1] + %31 = getelementptr inbounds %struct.LClosure* %30, i32 0, i32 7 ; [#uses=1] + %32 = load %struct.Proto** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.Proto* %32, i32 0, i32 13 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = icmp slt i32 %27, %34 ; [#uses=1] + br i1 %35, label %36, label %53 + +; <label>:36 ; preds = %26 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = load %struct.Table** %t, align 4 ; [#uses=1] + %39 = load i32* %i, align 4 ; [#uses=1] + %40 = load i32** %lineinfo, align 4 ; [#uses=1] + %41 = getelementptr inbounds i32* %40, i32 %39 ; [#uses=1] + %42 = load i32* %41 ; [#uses=1] + %43 = call %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %37, %struct.Table* %38, i32 %42) ; [#uses=1] + store %struct.lua_TValue* %43, %struct.lua_TValue** %i_o, align 4 + %44 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %union.anon* %45, i32 0, i32 0 ; [#uses=1] + %47 = bitcast double* %46 to i32* ; [#uses=1] + store i32 1, i32* %47, align 4 + %48 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %49, align 4 + br label %50 + +; <label>:50 ; preds = %36 + %51 = load i32* %i, align 4 ; [#uses=1] + %52 = add nsw i32 %51, 1 ; [#uses=1] + store i32 %52, i32* %i, align 4 + br label %26 + +; <label>:53 ; preds = %26 + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + store %struct.lua_TValue* %56, %struct.lua_TValue** %i_o1, align 4 + %57 = load %struct.Table** %t, align 4 ; [#uses=1] + %58 = bitcast %struct.Table* %57 to %union.GCObject* ; [#uses=1] + %59 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_TValue* %59, i32 0, i32 0 ; [#uses=1] + %61 = getelementptr inbounds %union.anon* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast double* %61 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %58, %union.GCObject** %62, align 4 + %63 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_TValue* %63, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %64, align 4 + br label %65 + +; <label>:65 ; preds = %53, %11 + %66 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_State* %66, i32 0, i32 9 ; [#uses=1] + %68 = load %struct.lua_TValue** %67, align 4 ; [#uses=1] + %69 = bitcast %struct.lua_TValue* %68 to i8* ; [#uses=1] + %70 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.lua_State* %70, i32 0, i32 4 ; [#uses=1] + %72 = load %struct.lua_TValue** %71, align 4 ; [#uses=1] + %73 = bitcast %struct.lua_TValue* %72 to i8* ; [#uses=1] + %74 = ptrtoint i8* %69 to i32 ; [#uses=1] + %75 = ptrtoint i8* %73 to i32 ; [#uses=1] + %76 = sub i32 %74, %75 ; [#uses=1] + %77 = icmp sle i32 %76, 12 ; [#uses=1] + br i1 %77, label %78, label %80 + +; <label>:78 ; preds = %65 + %79 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %79, i32 1) + br label %81 + +; <label>:80 ; preds = %65 + br label %81 + +; <label>:81 ; preds = %80, %78 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.lua_State* %82, i32 0, i32 4 ; [#uses=2] + %84 = load %struct.lua_TValue** %83, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_TValue* %84, i32 1 ; [#uses=1] + store %struct.lua_TValue* %85, %struct.lua_TValue** %83, align 4 + ret void +} + +; [#uses=2] +define hidden i32 @_Z16luaG_checkopenopj(i32 %i) nounwind { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=3] + store i32 %i, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = lshr i32 %3, 0 ; [#uses=1] + %5 = and i32 %4, 63 ; [#uses=1] + switch i32 %5, label %13 [ + i32 28, label %6 + i32 29, label %6 + i32 30, label %6 + i32 34, label %6 + ] + +; <label>:6 ; preds = %0, %0, %0, %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = lshr i32 %7, 23 ; [#uses=1] + %9 = and i32 %8, 511 ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + br i1 %10, label %12, label %11 + +; <label>:11 ; preds = %6 + store i32 0, i32* %1 + br label %14 + +; <label>:12 ; preds = %6 + store i32 1, i32* %1 + br label %14 + +; <label>:13 ; preds = %0 + store i32 0, i32* %1 + br label %14 + +; <label>:14 ; preds = %13, %12, %11 + %15 = load i32* %1 ; [#uses=1] + ret i32 %15 +} + +; [#uses=1] +define hidden i32 @_Z14luaG_checkcodePK5Proto(%struct.Proto* %pt) { + %1 = alloca %struct.Proto*, align 4 ; [#uses=3] + store %struct.Proto* %pt, %struct.Proto** %1, align 4 + %2 = load %struct.Proto** %1, align 4 ; [#uses=1] + %3 = load %struct.Proto** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Proto* %3, i32 0, i32 12 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = call i32 @_Z8symbexecPK5Protoii(%struct.Proto* %2, i32 %5, i32 255) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + %8 = zext i1 %7 to i32 ; [#uses=1] + ret i32 %8 +} + +; [#uses=2] +define internal i32 @_Z8symbexecPK5Protoii(%struct.Proto* %pt, i32 %lastpc, i32 %reg) { + %1 = alloca i32, align 4 ; [#uses=33] + %2 = alloca %struct.Proto*, align 4 ; [#uses=35] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=9] + %pc = alloca i32, align 4 ; [#uses=29] + %last = alloca i32, align 4 ; [#uses=7] + %i = alloca i32, align 4 ; [#uses=7] + %op = alloca i32, align 4 ; [#uses=10] + %a = alloca i32, align 4 ; [#uses=15] + %b = alloca i32, align 4 ; [#uses=27] + %c = alloca i32, align 4 ; [#uses=13] + %dest = alloca i32, align 4 ; [#uses=6] + %j = alloca i32, align 4 ; [#uses=6] + %d = alloca i32, align 4 ; [#uses=3] + %dest1 = alloca i32, align 4 ; [#uses=3] + %nup = alloca i32, align 4 ; [#uses=4] + %j2 = alloca i32, align 4 ; [#uses=5] + %op1 = alloca i32, align 4 ; [#uses=3] + store %struct.Proto* %pt, %struct.Proto** %2, align 4 + store i32 %lastpc, i32* %3, align 4 + store i32 %reg, i32* %4, align 4 + %5 = load %struct.Proto** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.Proto* %5, i32 0, i32 12 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = sub nsw i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %last, align 4 + %9 = load %struct.Proto** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z8precheckPK5Proto(%struct.Proto* %9) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %13, label %12 + +; <label>:12 ; preds = %0 + store i32 0, i32* %1 + br label %569 + +; <label>:13 ; preds = %0 + store i32 0, i32* %pc, align 4 + br label %14 + +; <label>:14 ; preds = %559, %13 + %15 = load i32* %pc, align 4 ; [#uses=1] + %16 = load i32* %3, align 4 ; [#uses=1] + %17 = icmp slt i32 %15, %16 ; [#uses=1] + br i1 %17, label %18, label %562 + +; <label>:18 ; preds = %14 + %19 = load i32* %pc, align 4 ; [#uses=1] + %20 = load %struct.Proto** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 4 ; [#uses=1] + %22 = load i32** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds i32* %22, i32 %19 ; [#uses=1] + %24 = load i32* %23 ; [#uses=1] + store i32 %24, i32* %i, align 4 + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = lshr i32 %25, 0 ; [#uses=1] + %27 = and i32 %26, 63 ; [#uses=1] + store i32 %27, i32* %op, align 4 + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = lshr i32 %28, 6 ; [#uses=1] + %30 = and i32 %29, 255 ; [#uses=1] + store i32 %30, i32* %a, align 4 + store i32 0, i32* %b, align 4 + store i32 0, i32* %c, align 4 + %31 = load i32* %op, align 4 ; [#uses=1] + %32 = icmp slt i32 %31, 38 ; [#uses=1] + br i1 %32, label %34, label %33 + +; <label>:33 ; preds = %18 + store i32 0, i32* %1 + br label %569 + +; <label>:34 ; preds = %18 + %35 = load i32* %a, align 4 ; [#uses=1] + %36 = load %struct.Proto** %2, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Proto* %36, i32 0, i32 22 ; [#uses=1] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = icmp slt i32 %35, %39 ; [#uses=1] + br i1 %40, label %42, label %41 + +; <label>:41 ; preds = %34 + store i32 0, i32* %1 + br label %569 + +; <label>:42 ; preds = %34 + %43 = load i32* %op, align 4 ; [#uses=1] + %44 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %43 ; [#uses=1] + %45 = load i8* %44 ; [#uses=1] + %46 = zext i8 %45 to i32 ; [#uses=1] + %47 = and i32 %46, 3 ; [#uses=1] + switch i32 %47, label %165 [ + i32 0, label %48 + i32 1, label %79 + i32 2, label %99 + ] + +; <label>:48 ; preds = %42 + %49 = load i32* %i, align 4 ; [#uses=1] + %50 = lshr i32 %49, 23 ; [#uses=1] + %51 = and i32 %50, 511 ; [#uses=1] + store i32 %51, i32* %b, align 4 + %52 = load i32* %i, align 4 ; [#uses=1] + %53 = lshr i32 %52, 14 ; [#uses=1] + %54 = and i32 %53, 511 ; [#uses=1] + store i32 %54, i32* %c, align 4 + %55 = load %struct.Proto** %2, align 4 ; [#uses=1] + %56 = load i32* %b, align 4 ; [#uses=1] + %57 = load i32* %op, align 4 ; [#uses=1] + %58 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %57 ; [#uses=1] + %59 = load i8* %58 ; [#uses=1] + %60 = zext i8 %59 to i32 ; [#uses=1] + %61 = ashr i32 %60, 4 ; [#uses=1] + %62 = and i32 %61, 3 ; [#uses=1] + %63 = call i32 @_Z12checkArgModePK5Protoi9OpArgMask(%struct.Proto* %55, i32 %56, i32 %62) ; [#uses=1] + %64 = icmp ne i32 %63, 0 ; [#uses=1] + br i1 %64, label %66, label %65 + +; <label>:65 ; preds = %48 + store i32 0, i32* %1 + br label %569 + +; <label>:66 ; preds = %48 + %67 = load %struct.Proto** %2, align 4 ; [#uses=1] + %68 = load i32* %c, align 4 ; [#uses=1] + %69 = load i32* %op, align 4 ; [#uses=1] + %70 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %69 ; [#uses=1] + %71 = load i8* %70 ; [#uses=1] + %72 = zext i8 %71 to i32 ; [#uses=1] + %73 = ashr i32 %72, 2 ; [#uses=1] + %74 = and i32 %73, 3 ; [#uses=1] + %75 = call i32 @_Z12checkArgModePK5Protoi9OpArgMask(%struct.Proto* %67, i32 %68, i32 %74) ; [#uses=1] + %76 = icmp ne i32 %75, 0 ; [#uses=1] + br i1 %76, label %78, label %77 + +; <label>:77 ; preds = %66 + store i32 0, i32* %1 + br label %569 + +; <label>:78 ; preds = %66 + br label %165 + +; <label>:79 ; preds = %42 + %80 = load i32* %i, align 4 ; [#uses=1] + %81 = lshr i32 %80, 14 ; [#uses=1] + %82 = and i32 %81, 262143 ; [#uses=1] + store i32 %82, i32* %b, align 4 + %83 = load i32* %op, align 4 ; [#uses=1] + %84 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %83 ; [#uses=1] + %85 = load i8* %84 ; [#uses=1] + %86 = zext i8 %85 to i32 ; [#uses=1] + %87 = ashr i32 %86, 4 ; [#uses=1] + %88 = and i32 %87, 3 ; [#uses=1] + %89 = icmp eq i32 %88, 3 ; [#uses=1] + br i1 %89, label %90, label %98 + +; <label>:90 ; preds = %79 + %91 = load i32* %b, align 4 ; [#uses=1] + %92 = load %struct.Proto** %2, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.Proto* %92, i32 0, i32 11 ; [#uses=1] + %94 = load i32* %93, align 4 ; [#uses=1] + %95 = icmp slt i32 %91, %94 ; [#uses=1] + br i1 %95, label %97, label %96 + +; <label>:96 ; preds = %90 + store i32 0, i32* %1 + br label %569 + +; <label>:97 ; preds = %90 + br label %98 + +; <label>:98 ; preds = %97, %79 + br label %165 + +; <label>:99 ; preds = %42 + %100 = load i32* %i, align 4 ; [#uses=1] + %101 = lshr i32 %100, 14 ; [#uses=1] + %102 = and i32 %101, 262143 ; [#uses=1] + %103 = sub nsw i32 %102, 131071 ; [#uses=1] + store i32 %103, i32* %b, align 4 + %104 = load i32* %op, align 4 ; [#uses=1] + %105 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %104 ; [#uses=1] + %106 = load i8* %105 ; [#uses=1] + %107 = zext i8 %106 to i32 ; [#uses=1] + %108 = ashr i32 %107, 4 ; [#uses=1] + %109 = and i32 %108, 3 ; [#uses=1] + %110 = icmp eq i32 %109, 2 ; [#uses=1] + br i1 %110, label %111, label %164 + +; <label>:111 ; preds = %99 + %112 = load i32* %pc, align 4 ; [#uses=1] + %113 = add nsw i32 %112, 1 ; [#uses=1] + %114 = load i32* %b, align 4 ; [#uses=1] + %115 = add nsw i32 %113, %114 ; [#uses=1] + store i32 %115, i32* %dest, align 4 + %116 = load i32* %dest, align 4 ; [#uses=1] + %117 = icmp sle i32 0, %116 ; [#uses=1] + br i1 %117, label %118, label %124 + +; <label>:118 ; preds = %111 + %119 = load i32* %dest, align 4 ; [#uses=1] + %120 = load %struct.Proto** %2, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.Proto* %120, i32 0, i32 12 ; [#uses=1] + %122 = load i32* %121, align 4 ; [#uses=1] + %123 = icmp slt i32 %119, %122 ; [#uses=1] + br i1 %123, label %125, label %124 + +; <label>:124 ; preds = %118, %111 + store i32 0, i32* %1 + br label %569 + +; <label>:125 ; preds = %118 + %126 = load i32* %dest, align 4 ; [#uses=1] + %127 = icmp sgt i32 %126, 0 ; [#uses=1] + br i1 %127, label %128, label %163 + +; <label>:128 ; preds = %125 + store i32 0, i32* %j, align 4 + br label %129 + +; <label>:129 ; preds = %154, %128 + %130 = load i32* %j, align 4 ; [#uses=1] + %131 = load i32* %dest, align 4 ; [#uses=1] + %132 = icmp slt i32 %130, %131 ; [#uses=1] + br i1 %132, label %133, label %157 + +; <label>:133 ; preds = %129 + %134 = load i32* %dest, align 4 ; [#uses=1] + %135 = sub nsw i32 %134, 1 ; [#uses=1] + %136 = load i32* %j, align 4 ; [#uses=1] + %137 = sub nsw i32 %135, %136 ; [#uses=1] + %138 = load %struct.Proto** %2, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.Proto* %138, i32 0, i32 4 ; [#uses=1] + %140 = load i32** %139, align 4 ; [#uses=1] + %141 = getelementptr inbounds i32* %140, i32 %137 ; [#uses=1] + %142 = load i32* %141 ; [#uses=1] + store i32 %142, i32* %d, align 4 + %143 = load i32* %d, align 4 ; [#uses=1] + %144 = lshr i32 %143, 0 ; [#uses=1] + %145 = and i32 %144, 63 ; [#uses=1] + %146 = icmp eq i32 %145, 34 ; [#uses=1] + br i1 %146, label %147, label %152 + +; <label>:147 ; preds = %133 + %148 = load i32* %d, align 4 ; [#uses=1] + %149 = lshr i32 %148, 14 ; [#uses=1] + %150 = and i32 %149, 511 ; [#uses=1] + %151 = icmp eq i32 %150, 0 ; [#uses=1] + br i1 %151, label %153, label %152 + +; <label>:152 ; preds = %147, %133 + br label %157 + +; <label>:153 ; preds = %147 + br label %154 + +; <label>:154 ; preds = %153 + %155 = load i32* %j, align 4 ; [#uses=1] + %156 = add nsw i32 %155, 1 ; [#uses=1] + store i32 %156, i32* %j, align 4 + br label %129 + +; <label>:157 ; preds = %152, %129 + %158 = load i32* %j, align 4 ; [#uses=1] + %159 = and i32 %158, 1 ; [#uses=1] + %160 = icmp eq i32 %159, 0 ; [#uses=1] + br i1 %160, label %162, label %161 + +; <label>:161 ; preds = %157 + store i32 0, i32* %1 + br label %569 + +; <label>:162 ; preds = %157 + br label %163 + +; <label>:163 ; preds = %162, %125 + br label %164 + +; <label>:164 ; preds = %163, %99 + br label %165 + +; <label>:165 ; preds = %164, %98, %78, %42 + %166 = load i32* %op, align 4 ; [#uses=1] + %167 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %166 ; [#uses=1] + %168 = load i8* %167 ; [#uses=1] + %169 = zext i8 %168 to i32 ; [#uses=1] + %170 = and i32 %169, 64 ; [#uses=1] + %171 = icmp ne i32 %170, 0 ; [#uses=1] + br i1 %171, label %172, label %179 + +; <label>:172 ; preds = %165 + %173 = load i32* %a, align 4 ; [#uses=1] + %174 = load i32* %4, align 4 ; [#uses=1] + %175 = icmp eq i32 %173, %174 ; [#uses=1] + br i1 %175, label %176, label %178 + +; <label>:176 ; preds = %172 + %177 = load i32* %pc, align 4 ; [#uses=1] + store i32 %177, i32* %last, align 4 + br label %178 + +; <label>:178 ; preds = %176, %172 + br label %179 + +; <label>:179 ; preds = %178, %165 + %180 = load i32* %op, align 4 ; [#uses=1] + %181 = getelementptr inbounds [38 x i8]* @luaP_opmodes, i32 0, i32 %180 ; [#uses=1] + %182 = load i8* %181 ; [#uses=1] + %183 = zext i8 %182 to i32 ; [#uses=1] + %184 = and i32 %183, 128 ; [#uses=1] + %185 = icmp ne i32 %184, 0 ; [#uses=1] + br i1 %185, label %186, label %207 + +; <label>:186 ; preds = %179 + %187 = load i32* %pc, align 4 ; [#uses=1] + %188 = add nsw i32 %187, 2 ; [#uses=1] + %189 = load %struct.Proto** %2, align 4 ; [#uses=1] + %190 = getelementptr inbounds %struct.Proto* %189, i32 0, i32 12 ; [#uses=1] + %191 = load i32* %190, align 4 ; [#uses=1] + %192 = icmp slt i32 %188, %191 ; [#uses=1] + br i1 %192, label %194, label %193 + +; <label>:193 ; preds = %186 + store i32 0, i32* %1 + br label %569 + +; <label>:194 ; preds = %186 + %195 = load i32* %pc, align 4 ; [#uses=1] + %196 = add nsw i32 %195, 1 ; [#uses=1] + %197 = load %struct.Proto** %2, align 4 ; [#uses=1] + %198 = getelementptr inbounds %struct.Proto* %197, i32 0, i32 4 ; [#uses=1] + %199 = load i32** %198, align 4 ; [#uses=1] + %200 = getelementptr inbounds i32* %199, i32 %196 ; [#uses=1] + %201 = load i32* %200 ; [#uses=1] + %202 = lshr i32 %201, 0 ; [#uses=1] + %203 = and i32 %202, 63 ; [#uses=1] + %204 = icmp eq i32 %203, 22 ; [#uses=1] + br i1 %204, label %206, label %205 + +; <label>:205 ; preds = %194 + store i32 0, i32* %1 + br label %569 + +; <label>:206 ; preds = %194 + br label %207 + +; <label>:207 ; preds = %206, %179 + %208 = load i32* %op, align 4 ; [#uses=1] + switch i32 %208, label %557 [ + i32 2, label %209 + i32 3, label %245 + i32 4, label %256 + i32 8, label %256 + i32 5, label %265 + i32 7, label %265 + i32 11, label %276 + i32 21, label %293 + i32 33, label %299 + i32 31, label %322 + i32 32, label %322 + i32 22, label %332 + i32 28, label %352 + i32 29, label %352 + i32 30, label %407 + i32 34, label %425 + i32 36, label %454 + i32 37, label %513 + ] + +; <label>:209 ; preds = %207 + %210 = load i32* %c, align 4 ; [#uses=1] + %211 = icmp eq i32 %210, 1 ; [#uses=1] + br i1 %211, label %212, label %244 + +; <label>:212 ; preds = %209 + %213 = load i32* %pc, align 4 ; [#uses=1] + %214 = add nsw i32 %213, 2 ; [#uses=1] + %215 = load %struct.Proto** %2, align 4 ; [#uses=1] + %216 = getelementptr inbounds %struct.Proto* %215, i32 0, i32 12 ; [#uses=1] + %217 = load i32* %216, align 4 ; [#uses=1] + %218 = icmp slt i32 %214, %217 ; [#uses=1] + br i1 %218, label %220, label %219 + +; <label>:219 ; preds = %212 + store i32 0, i32* %1 + br label %569 + +; <label>:220 ; preds = %212 + %221 = load i32* %pc, align 4 ; [#uses=1] + %222 = add nsw i32 %221, 1 ; [#uses=1] + %223 = load %struct.Proto** %2, align 4 ; [#uses=1] + %224 = getelementptr inbounds %struct.Proto* %223, i32 0, i32 4 ; [#uses=1] + %225 = load i32** %224, align 4 ; [#uses=1] + %226 = getelementptr inbounds i32* %225, i32 %222 ; [#uses=1] + %227 = load i32* %226 ; [#uses=1] + %228 = lshr i32 %227, 0 ; [#uses=1] + %229 = and i32 %228, 63 ; [#uses=1] + %230 = icmp ne i32 %229, 34 ; [#uses=1] + br i1 %230, label %243, label %231 + +; <label>:231 ; preds = %220 + %232 = load i32* %pc, align 4 ; [#uses=1] + %233 = add nsw i32 %232, 1 ; [#uses=1] + %234 = load %struct.Proto** %2, align 4 ; [#uses=1] + %235 = getelementptr inbounds %struct.Proto* %234, i32 0, i32 4 ; [#uses=1] + %236 = load i32** %235, align 4 ; [#uses=1] + %237 = getelementptr inbounds i32* %236, i32 %233 ; [#uses=1] + %238 = load i32* %237 ; [#uses=1] + %239 = lshr i32 %238, 14 ; [#uses=1] + %240 = and i32 %239, 511 ; [#uses=1] + %241 = icmp ne i32 %240, 0 ; [#uses=1] + br i1 %241, label %243, label %242 + +; <label>:242 ; preds = %231 + store i32 0, i32* %1 + br label %569 + +; <label>:243 ; preds = %231, %220 + br label %244 + +; <label>:244 ; preds = %243, %209 + br label %558 + +; <label>:245 ; preds = %207 + %246 = load i32* %a, align 4 ; [#uses=1] + %247 = load i32* %4, align 4 ; [#uses=1] + %248 = icmp sle i32 %246, %247 ; [#uses=1] + br i1 %248, label %249, label %255 + +; <label>:249 ; preds = %245 + %250 = load i32* %4, align 4 ; [#uses=1] + %251 = load i32* %b, align 4 ; [#uses=1] + %252 = icmp sle i32 %250, %251 ; [#uses=1] + br i1 %252, label %253, label %255 + +; <label>:253 ; preds = %249 + %254 = load i32* %pc, align 4 ; [#uses=1] + store i32 %254, i32* %last, align 4 + br label %255 + +; <label>:255 ; preds = %253, %249, %245 + br label %558 + +; <label>:256 ; preds = %207, %207 + %257 = load i32* %b, align 4 ; [#uses=1] + %258 = load %struct.Proto** %2, align 4 ; [#uses=1] + %259 = getelementptr inbounds %struct.Proto* %258, i32 0, i32 19 ; [#uses=1] + %260 = load i8* %259, align 1 ; [#uses=1] + %261 = zext i8 %260 to i32 ; [#uses=1] + %262 = icmp slt i32 %257, %261 ; [#uses=1] + br i1 %262, label %264, label %263 + +; <label>:263 ; preds = %256 + store i32 0, i32* %1 + br label %569 + +; <label>:264 ; preds = %256 + br label %558 + +; <label>:265 ; preds = %207, %207 + %266 = load i32* %b, align 4 ; [#uses=1] + %267 = load %struct.Proto** %2, align 4 ; [#uses=1] + %268 = getelementptr inbounds %struct.Proto* %267, i32 0, i32 3 ; [#uses=1] + %269 = load %struct.lua_TValue** %268, align 4 ; [#uses=1] + %270 = getelementptr inbounds %struct.lua_TValue* %269, i32 %266 ; [#uses=1] + %271 = getelementptr inbounds %struct.lua_TValue* %270, i32 0, i32 1 ; [#uses=1] + %272 = load i32* %271, align 4 ; [#uses=1] + %273 = icmp eq i32 %272, 4 ; [#uses=1] + br i1 %273, label %275, label %274 + +; <label>:274 ; preds = %265 + store i32 0, i32* %1 + br label %569 + +; <label>:275 ; preds = %265 + br label %558 + +; <label>:276 ; preds = %207 + %277 = load i32* %a, align 4 ; [#uses=1] + %278 = add nsw i32 %277, 1 ; [#uses=1] + %279 = load %struct.Proto** %2, align 4 ; [#uses=1] + %280 = getelementptr inbounds %struct.Proto* %279, i32 0, i32 22 ; [#uses=1] + %281 = load i8* %280, align 1 ; [#uses=1] + %282 = zext i8 %281 to i32 ; [#uses=1] + %283 = icmp slt i32 %278, %282 ; [#uses=1] + br i1 %283, label %285, label %284 + +; <label>:284 ; preds = %276 + store i32 0, i32* %1 + br label %569 + +; <label>:285 ; preds = %276 + %286 = load i32* %4, align 4 ; [#uses=1] + %287 = load i32* %a, align 4 ; [#uses=1] + %288 = add nsw i32 %287, 1 ; [#uses=1] + %289 = icmp eq i32 %286, %288 ; [#uses=1] + br i1 %289, label %290, label %292 + +; <label>:290 ; preds = %285 + %291 = load i32* %pc, align 4 ; [#uses=1] + store i32 %291, i32* %last, align 4 + br label %292 + +; <label>:292 ; preds = %290, %285 + br label %558 + +; <label>:293 ; preds = %207 + %294 = load i32* %b, align 4 ; [#uses=1] + %295 = load i32* %c, align 4 ; [#uses=1] + %296 = icmp slt i32 %294, %295 ; [#uses=1] + br i1 %296, label %298, label %297 + +; <label>:297 ; preds = %293 + store i32 0, i32* %1 + br label %569 + +; <label>:298 ; preds = %293 + br label %558 + +; <label>:299 ; preds = %207 + %300 = load i32* %c, align 4 ; [#uses=1] + %301 = icmp sge i32 %300, 1 ; [#uses=1] + br i1 %301, label %303, label %302 + +; <label>:302 ; preds = %299 + store i32 0, i32* %1 + br label %569 + +; <label>:303 ; preds = %299 + %304 = load i32* %a, align 4 ; [#uses=1] + %305 = add nsw i32 %304, 2 ; [#uses=1] + %306 = load i32* %c, align 4 ; [#uses=1] + %307 = add nsw i32 %305, %306 ; [#uses=1] + %308 = load %struct.Proto** %2, align 4 ; [#uses=1] + %309 = getelementptr inbounds %struct.Proto* %308, i32 0, i32 22 ; [#uses=1] + %310 = load i8* %309, align 1 ; [#uses=1] + %311 = zext i8 %310 to i32 ; [#uses=1] + %312 = icmp slt i32 %307, %311 ; [#uses=1] + br i1 %312, label %314, label %313 + +; <label>:313 ; preds = %303 + store i32 0, i32* %1 + br label %569 + +; <label>:314 ; preds = %303 + %315 = load i32* %4, align 4 ; [#uses=1] + %316 = load i32* %a, align 4 ; [#uses=1] + %317 = add nsw i32 %316, 2 ; [#uses=1] + %318 = icmp sge i32 %315, %317 ; [#uses=1] + br i1 %318, label %319, label %321 + +; <label>:319 ; preds = %314 + %320 = load i32* %pc, align 4 ; [#uses=1] + store i32 %320, i32* %last, align 4 + br label %321 + +; <label>:321 ; preds = %319, %314 + br label %558 + +; <label>:322 ; preds = %207, %207 + %323 = load i32* %a, align 4 ; [#uses=1] + %324 = add nsw i32 %323, 3 ; [#uses=1] + %325 = load %struct.Proto** %2, align 4 ; [#uses=1] + %326 = getelementptr inbounds %struct.Proto* %325, i32 0, i32 22 ; [#uses=1] + %327 = load i8* %326, align 1 ; [#uses=1] + %328 = zext i8 %327 to i32 ; [#uses=1] + %329 = icmp slt i32 %324, %328 ; [#uses=1] + br i1 %329, label %331, label %330 + +; <label>:330 ; preds = %322 + store i32 0, i32* %1 + br label %569 + +; <label>:331 ; preds = %322 + br label %332 + +; <label>:332 ; preds = %331, %207 + %333 = load i32* %pc, align 4 ; [#uses=1] + %334 = add nsw i32 %333, 1 ; [#uses=1] + %335 = load i32* %b, align 4 ; [#uses=1] + %336 = add nsw i32 %334, %335 ; [#uses=1] + store i32 %336, i32* %dest1, align 4 + %337 = load i32* %4, align 4 ; [#uses=1] + %338 = icmp ne i32 %337, 255 ; [#uses=1] + br i1 %338, label %339, label %351 + +; <label>:339 ; preds = %332 + %340 = load i32* %pc, align 4 ; [#uses=1] + %341 = load i32* %dest1, align 4 ; [#uses=1] + %342 = icmp slt i32 %340, %341 ; [#uses=1] + br i1 %342, label %343, label %351 + +; <label>:343 ; preds = %339 + %344 = load i32* %dest1, align 4 ; [#uses=1] + %345 = load i32* %3, align 4 ; [#uses=1] + %346 = icmp sle i32 %344, %345 ; [#uses=1] + br i1 %346, label %347, label %351 + +; <label>:347 ; preds = %343 + %348 = load i32* %b, align 4 ; [#uses=1] + %349 = load i32* %pc, align 4 ; [#uses=1] + %350 = add nsw i32 %349, %348 ; [#uses=1] + store i32 %350, i32* %pc, align 4 + br label %351 + +; <label>:351 ; preds = %347, %343, %339, %332 + br label %558 + +; <label>:352 ; preds = %207, %207 + %353 = load i32* %b, align 4 ; [#uses=1] + %354 = icmp ne i32 %353, 0 ; [#uses=1] + br i1 %354, label %355, label %367 + +; <label>:355 ; preds = %352 + %356 = load i32* %a, align 4 ; [#uses=1] + %357 = load i32* %b, align 4 ; [#uses=1] + %358 = add nsw i32 %356, %357 ; [#uses=1] + %359 = sub nsw i32 %358, 1 ; [#uses=1] + %360 = load %struct.Proto** %2, align 4 ; [#uses=1] + %361 = getelementptr inbounds %struct.Proto* %360, i32 0, i32 22 ; [#uses=1] + %362 = load i8* %361, align 1 ; [#uses=1] + %363 = zext i8 %362 to i32 ; [#uses=1] + %364 = icmp slt i32 %359, %363 ; [#uses=1] + br i1 %364, label %366, label %365 + +; <label>:365 ; preds = %355 + store i32 0, i32* %1 + br label %569 + +; <label>:366 ; preds = %355 + br label %367 + +; <label>:367 ; preds = %366, %352 + %368 = load i32* %c, align 4 ; [#uses=1] + %369 = add nsw i32 %368, -1 ; [#uses=1] + store i32 %369, i32* %c, align 4 + %370 = load i32* %c, align 4 ; [#uses=1] + %371 = icmp eq i32 %370, -1 ; [#uses=1] + br i1 %371, label %372, label %384 + +; <label>:372 ; preds = %367 + %373 = load i32* %pc, align 4 ; [#uses=1] + %374 = add nsw i32 %373, 1 ; [#uses=1] + %375 = load %struct.Proto** %2, align 4 ; [#uses=1] + %376 = getelementptr inbounds %struct.Proto* %375, i32 0, i32 4 ; [#uses=1] + %377 = load i32** %376, align 4 ; [#uses=1] + %378 = getelementptr inbounds i32* %377, i32 %374 ; [#uses=1] + %379 = load i32* %378 ; [#uses=1] + %380 = call i32 @_Z16luaG_checkopenopj(i32 %379) ; [#uses=1] + %381 = icmp ne i32 %380, 0 ; [#uses=1] + br i1 %381, label %383, label %382 + +; <label>:382 ; preds = %372 + store i32 0, i32* %1 + br label %569 + +; <label>:383 ; preds = %372 + br label %400 + +; <label>:384 ; preds = %367 + %385 = load i32* %c, align 4 ; [#uses=1] + %386 = icmp ne i32 %385, 0 ; [#uses=1] + br i1 %386, label %387, label %399 + +; <label>:387 ; preds = %384 + %388 = load i32* %a, align 4 ; [#uses=1] + %389 = load i32* %c, align 4 ; [#uses=1] + %390 = add nsw i32 %388, %389 ; [#uses=1] + %391 = sub nsw i32 %390, 1 ; [#uses=1] + %392 = load %struct.Proto** %2, align 4 ; [#uses=1] + %393 = getelementptr inbounds %struct.Proto* %392, i32 0, i32 22 ; [#uses=1] + %394 = load i8* %393, align 1 ; [#uses=1] + %395 = zext i8 %394 to i32 ; [#uses=1] + %396 = icmp slt i32 %391, %395 ; [#uses=1] + br i1 %396, label %398, label %397 + +; <label>:397 ; preds = %387 + store i32 0, i32* %1 + br label %569 + +; <label>:398 ; preds = %387 + br label %399 + +; <label>:399 ; preds = %398, %384 + br label %400 + +; <label>:400 ; preds = %399, %383 + %401 = load i32* %4, align 4 ; [#uses=1] + %402 = load i32* %a, align 4 ; [#uses=1] + %403 = icmp sge i32 %401, %402 ; [#uses=1] + br i1 %403, label %404, label %406 + +; <label>:404 ; preds = %400 + %405 = load i32* %pc, align 4 ; [#uses=1] + store i32 %405, i32* %last, align 4 + br label %406 + +; <label>:406 ; preds = %404, %400 + br label %558 + +; <label>:407 ; preds = %207 + %408 = load i32* %b, align 4 ; [#uses=1] + %409 = add nsw i32 %408, -1 ; [#uses=1] + store i32 %409, i32* %b, align 4 + %410 = load i32* %b, align 4 ; [#uses=1] + %411 = icmp sgt i32 %410, 0 ; [#uses=1] + br i1 %411, label %412, label %424 + +; <label>:412 ; preds = %407 + %413 = load i32* %a, align 4 ; [#uses=1] + %414 = load i32* %b, align 4 ; [#uses=1] + %415 = add nsw i32 %413, %414 ; [#uses=1] + %416 = sub nsw i32 %415, 1 ; [#uses=1] + %417 = load %struct.Proto** %2, align 4 ; [#uses=1] + %418 = getelementptr inbounds %struct.Proto* %417, i32 0, i32 22 ; [#uses=1] + %419 = load i8* %418, align 1 ; [#uses=1] + %420 = zext i8 %419 to i32 ; [#uses=1] + %421 = icmp slt i32 %416, %420 ; [#uses=1] + br i1 %421, label %423, label %422 + +; <label>:422 ; preds = %412 + store i32 0, i32* %1 + br label %569 + +; <label>:423 ; preds = %412 + br label %424 + +; <label>:424 ; preds = %423, %407 + br label %558 + +; <label>:425 ; preds = %207 + %426 = load i32* %b, align 4 ; [#uses=1] + %427 = icmp sgt i32 %426, 0 ; [#uses=1] + br i1 %427, label %428, label %439 + +; <label>:428 ; preds = %425 + %429 = load i32* %a, align 4 ; [#uses=1] + %430 = load i32* %b, align 4 ; [#uses=1] + %431 = add nsw i32 %429, %430 ; [#uses=1] + %432 = load %struct.Proto** %2, align 4 ; [#uses=1] + %433 = getelementptr inbounds %struct.Proto* %432, i32 0, i32 22 ; [#uses=1] + %434 = load i8* %433, align 1 ; [#uses=1] + %435 = zext i8 %434 to i32 ; [#uses=1] + %436 = icmp slt i32 %431, %435 ; [#uses=1] + br i1 %436, label %438, label %437 + +; <label>:437 ; preds = %428 + store i32 0, i32* %1 + br label %569 + +; <label>:438 ; preds = %428 + br label %439 + +; <label>:439 ; preds = %438, %425 + %440 = load i32* %c, align 4 ; [#uses=1] + %441 = icmp eq i32 %440, 0 ; [#uses=1] + br i1 %441, label %442, label %453 + +; <label>:442 ; preds = %439 + %443 = load i32* %pc, align 4 ; [#uses=1] + %444 = add nsw i32 %443, 1 ; [#uses=1] + store i32 %444, i32* %pc, align 4 + %445 = load i32* %pc, align 4 ; [#uses=1] + %446 = load %struct.Proto** %2, align 4 ; [#uses=1] + %447 = getelementptr inbounds %struct.Proto* %446, i32 0, i32 12 ; [#uses=1] + %448 = load i32* %447, align 4 ; [#uses=1] + %449 = sub nsw i32 %448, 1 ; [#uses=1] + %450 = icmp slt i32 %445, %449 ; [#uses=1] + br i1 %450, label %452, label %451 + +; <label>:451 ; preds = %442 + store i32 0, i32* %1 + br label %569 + +; <label>:452 ; preds = %442 + br label %453 + +; <label>:453 ; preds = %452, %439 + br label %558 + +; <label>:454 ; preds = %207 + %455 = load i32* %b, align 4 ; [#uses=1] + %456 = load %struct.Proto** %2, align 4 ; [#uses=1] + %457 = getelementptr inbounds %struct.Proto* %456, i32 0, i32 14 ; [#uses=1] + %458 = load i32* %457, align 4 ; [#uses=1] + %459 = icmp slt i32 %455, %458 ; [#uses=1] + br i1 %459, label %461, label %460 + +; <label>:460 ; preds = %454 + store i32 0, i32* %1 + br label %569 + +; <label>:461 ; preds = %454 + %462 = load i32* %b, align 4 ; [#uses=1] + %463 = load %struct.Proto** %2, align 4 ; [#uses=1] + %464 = getelementptr inbounds %struct.Proto* %463, i32 0, i32 5 ; [#uses=1] + %465 = load %struct.Proto*** %464, align 4 ; [#uses=1] + %466 = getelementptr inbounds %struct.Proto** %465, i32 %462 ; [#uses=1] + %467 = load %struct.Proto** %466 ; [#uses=1] + %468 = getelementptr inbounds %struct.Proto* %467, i32 0, i32 19 ; [#uses=1] + %469 = load i8* %468, align 1 ; [#uses=1] + %470 = zext i8 %469 to i32 ; [#uses=1] + store i32 %470, i32* %nup, align 4 + %471 = load i32* %pc, align 4 ; [#uses=1] + %472 = load i32* %nup, align 4 ; [#uses=1] + %473 = add nsw i32 %471, %472 ; [#uses=1] + %474 = load %struct.Proto** %2, align 4 ; [#uses=1] + %475 = getelementptr inbounds %struct.Proto* %474, i32 0, i32 12 ; [#uses=1] + %476 = load i32* %475, align 4 ; [#uses=1] + %477 = icmp slt i32 %473, %476 ; [#uses=1] + br i1 %477, label %479, label %478 + +; <label>:478 ; preds = %461 + store i32 0, i32* %1 + br label %569 + +; <label>:479 ; preds = %461 + store i32 1, i32* %j2, align 4 + br label %480 + +; <label>:480 ; preds = %502, %479 + %481 = load i32* %j2, align 4 ; [#uses=1] + %482 = load i32* %nup, align 4 ; [#uses=1] + %483 = icmp sle i32 %481, %482 ; [#uses=1] + br i1 %483, label %484, label %505 + +; <label>:484 ; preds = %480 + %485 = load i32* %pc, align 4 ; [#uses=1] + %486 = load i32* %j2, align 4 ; [#uses=1] + %487 = add nsw i32 %485, %486 ; [#uses=1] + %488 = load %struct.Proto** %2, align 4 ; [#uses=1] + %489 = getelementptr inbounds %struct.Proto* %488, i32 0, i32 4 ; [#uses=1] + %490 = load i32** %489, align 4 ; [#uses=1] + %491 = getelementptr inbounds i32* %490, i32 %487 ; [#uses=1] + %492 = load i32* %491 ; [#uses=1] + %493 = lshr i32 %492, 0 ; [#uses=1] + %494 = and i32 %493, 63 ; [#uses=1] + store i32 %494, i32* %op1, align 4 + %495 = load i32* %op1, align 4 ; [#uses=1] + %496 = icmp eq i32 %495, 4 ; [#uses=1] + br i1 %496, label %501, label %497 + +; <label>:497 ; preds = %484 + %498 = load i32* %op1, align 4 ; [#uses=1] + %499 = icmp eq i32 %498, 0 ; [#uses=1] + br i1 %499, label %501, label %500 + +; <label>:500 ; preds = %497 + store i32 0, i32* %1 + br label %569 + +; <label>:501 ; preds = %497, %484 + br label %502 + +; <label>:502 ; preds = %501 + %503 = load i32* %j2, align 4 ; [#uses=1] + %504 = add nsw i32 %503, 1 ; [#uses=1] + store i32 %504, i32* %j2, align 4 + br label %480 + +; <label>:505 ; preds = %480 + %506 = load i32* %4, align 4 ; [#uses=1] + %507 = icmp ne i32 %506, 255 ; [#uses=1] + br i1 %507, label %508, label %512 + +; <label>:508 ; preds = %505 + %509 = load i32* %nup, align 4 ; [#uses=1] + %510 = load i32* %pc, align 4 ; [#uses=1] + %511 = add nsw i32 %510, %509 ; [#uses=1] + store i32 %511, i32* %pc, align 4 + br label %512 + +; <label>:512 ; preds = %508, %505 + br label %558 + +; <label>:513 ; preds = %207 + %514 = load %struct.Proto** %2, align 4 ; [#uses=1] + %515 = getelementptr inbounds %struct.Proto* %514, i32 0, i32 21 ; [#uses=1] + %516 = load i8* %515, align 1 ; [#uses=1] + %517 = zext i8 %516 to i32 ; [#uses=1] + %518 = and i32 %517, 2 ; [#uses=1] + %519 = icmp ne i32 %518, 0 ; [#uses=1] + br i1 %519, label %520, label %527 + +; <label>:520 ; preds = %513 + %521 = load %struct.Proto** %2, align 4 ; [#uses=1] + %522 = getelementptr inbounds %struct.Proto* %521, i32 0, i32 21 ; [#uses=1] + %523 = load i8* %522, align 1 ; [#uses=1] + %524 = zext i8 %523 to i32 ; [#uses=1] + %525 = and i32 %524, 4 ; [#uses=1] + %526 = icmp ne i32 %525, 0 ; [#uses=1] + br i1 %526, label %527, label %528 + +; <label>:527 ; preds = %520, %513 + store i32 0, i32* %1 + br label %569 + +; <label>:528 ; preds = %520 + %529 = load i32* %b, align 4 ; [#uses=1] + %530 = add nsw i32 %529, -1 ; [#uses=1] + store i32 %530, i32* %b, align 4 + %531 = load i32* %b, align 4 ; [#uses=1] + %532 = icmp eq i32 %531, -1 ; [#uses=1] + br i1 %532, label %533, label %545 + +; <label>:533 ; preds = %528 + %534 = load i32* %pc, align 4 ; [#uses=1] + %535 = add nsw i32 %534, 1 ; [#uses=1] + %536 = load %struct.Proto** %2, align 4 ; [#uses=1] + %537 = getelementptr inbounds %struct.Proto* %536, i32 0, i32 4 ; [#uses=1] + %538 = load i32** %537, align 4 ; [#uses=1] + %539 = getelementptr inbounds i32* %538, i32 %535 ; [#uses=1] + %540 = load i32* %539 ; [#uses=1] + %541 = call i32 @_Z16luaG_checkopenopj(i32 %540) ; [#uses=1] + %542 = icmp ne i32 %541, 0 ; [#uses=1] + br i1 %542, label %544, label %543 + +; <label>:543 ; preds = %533 + store i32 0, i32* %1 + br label %569 + +; <label>:544 ; preds = %533 + br label %545 + +; <label>:545 ; preds = %544, %528 + %546 = load i32* %a, align 4 ; [#uses=1] + %547 = load i32* %b, align 4 ; [#uses=1] + %548 = add nsw i32 %546, %547 ; [#uses=1] + %549 = sub nsw i32 %548, 1 ; [#uses=1] + %550 = load %struct.Proto** %2, align 4 ; [#uses=1] + %551 = getelementptr inbounds %struct.Proto* %550, i32 0, i32 22 ; [#uses=1] + %552 = load i8* %551, align 1 ; [#uses=1] + %553 = zext i8 %552 to i32 ; [#uses=1] + %554 = icmp slt i32 %549, %553 ; [#uses=1] + br i1 %554, label %556, label %555 + +; <label>:555 ; preds = %545 + store i32 0, i32* %1 + br label %569 + +; <label>:556 ; preds = %545 + br label %558 + +; <label>:557 ; preds = %207 + br label %558 + +; <label>:558 ; preds = %557, %556, %512, %453, %424, %406, %351, %321, %298, %292, %275, %264, %255, %244 + br label %559 + +; <label>:559 ; preds = %558 + %560 = load i32* %pc, align 4 ; [#uses=1] + %561 = add nsw i32 %560, 1 ; [#uses=1] + store i32 %561, i32* %pc, align 4 + br label %14 + +; <label>:562 ; preds = %14 + %563 = load i32* %last, align 4 ; [#uses=1] + %564 = load %struct.Proto** %2, align 4 ; [#uses=1] + %565 = getelementptr inbounds %struct.Proto* %564, i32 0, i32 4 ; [#uses=1] + %566 = load i32** %565, align 4 ; [#uses=1] + %567 = getelementptr inbounds i32* %566, i32 %563 ; [#uses=1] + %568 = load i32* %567 ; [#uses=1] + store i32 %568, i32* %1 + br label %569 + +; <label>:569 ; preds = %562, %555, %543, %527, %500, %478, %460, %451, %437, %422, %397, %382, %365, %330, %313, %302, %297, %284, %274, %263, %242, %219, %205, %193, %161, %124, %96, %77, %65, %41, %33, %12 + %570 = load i32* %1 ; [#uses=1] + ret i32 %570 +} + +; [#uses=6] +define hidden void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %L, %struct.lua_TValue* %o, i8* %op) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %3 = alloca i8*, align 4 ; [#uses=3] + %name = alloca i8*, align 4 ; [#uses=3] + %t = alloca i8*, align 4 ; [#uses=3] + %kind = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %2, align 4 + store i8* %op, i8** %3, align 4 + store i8* null, i8** %name, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds [0 x i8*]* bitcast ([11 x i8*]* @luaT_typenames to [0 x i8*]*), i32 0, i32 %6 ; [#uses=1] + %8 = load i8** %7 ; [#uses=1] + store i8* %8, i8** %t, align 4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 7 ; [#uses=1] + %11 = load %struct.CallInfo** %10, align 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z9isinstackP8CallInfoPK10lua_TValue(%struct.CallInfo* %11, %struct.lua_TValue* %12) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %29 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 7 ; [#uses=1] + %19 = load %struct.CallInfo** %18, align 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 5 ; [#uses=1] + %23 = load %struct.lua_TValue** %22, align 4 ; [#uses=1] + %24 = ptrtoint %struct.lua_TValue* %20 to i32 ; [#uses=1] + %25 = ptrtoint %struct.lua_TValue* %23 to i32 ; [#uses=1] + %26 = sub i32 %24, %25 ; [#uses=1] + %27 = sdiv exact i32 %26, 12 ; [#uses=1] + %28 = call i8* @_Z10getobjnameP9lua_StateP8CallInfoiPPKc(%struct.lua_State* %16, %struct.CallInfo* %19, i32 %27, i8** %name) ; [#uses=1] + br label %30 + +; <label>:29 ; preds = %0 + br label %30 + +; <label>:30 ; preds = %29, %15 + %31 = phi i8* [ %28, %15 ], [ null, %29 ] ; [#uses=1] + store i8* %31, i8** %kind, align 4 + %32 = load i8** %kind, align 4 ; [#uses=1] + %33 = icmp ne i8* %32, null ; [#uses=1] + br i1 %33, label %34, label %40 + +; <label>:34 ; preds = %30 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = load i8** %3, align 4 ; [#uses=1] + %37 = load i8** %kind, align 4 ; [#uses=1] + %38 = load i8** %name, align 4 ; [#uses=1] + %39 = load i8** %t, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %35, i8* getelementptr inbounds ([35 x i8]* @.str835, i32 0, i32 0), i8* %36, i8* %37, i8* %38, i8* %39) + br label %44 + +; <label>:40 ; preds = %30 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = load i8** %3, align 4 ; [#uses=1] + %43 = load i8** %t, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %41, i8* getelementptr inbounds ([25 x i8]* @.str1936, i32 0, i32 0), i8* %42, i8* %43) + br label %44 + +; <label>:44 ; preds = %40, %34 + ret void +} + +; [#uses=1] +define internal i32 @_Z9isinstackP8CallInfoPK10lua_TValue(%struct.CallInfo* %ci, %struct.lua_TValue* %o) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.CallInfo*, align 4 ; [#uses=3] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + store %struct.CallInfo* %ci, %struct.CallInfo** %2, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %3, align 4 + %4 = load %struct.CallInfo** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.CallInfo* %4, i32 0, i32 0 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %p, align 4 + br label %7 + +; <label>:7 ; preds = %19, %0 + %8 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %9 = load %struct.CallInfo** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallInfo* %9, i32 0, i32 2 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = icmp ult %struct.lua_TValue* %8, %11 ; [#uses=1] + br i1 %12, label %13, label %22 + +; <label>:13 ; preds = %7 + %14 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %16 = icmp eq %struct.lua_TValue* %14, %15 ; [#uses=1] + br i1 %16, label %17, label %18 + +; <label>:17 ; preds = %13 + store i32 1, i32* %1 + br label %23 + +; <label>:18 ; preds = %13 + br label %19 + +; <label>:19 ; preds = %18 + %20 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 1 ; [#uses=1] + store %struct.lua_TValue* %21, %struct.lua_TValue** %p, align 4 + br label %7 + +; <label>:22 ; preds = %7 + store i32 0, i32* %1 + br label %23 + +; <label>:23 ; preds = %22, %17 + %24 = load i32* %1 ; [#uses=1] + ret i32 %24 +} + +; [#uses=3] +define internal i8* @_Z10getobjnameP9lua_StateP8CallInfoiPPKc(%struct.lua_State* %L, %struct.CallInfo* %ci, i32 %stackpos, i8** %name) { + %1 = alloca i8*, align 4 ; [#uses=8] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca %struct.CallInfo*, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=3] + %5 = alloca i8**, align 4 ; [#uses=8] + %p = alloca %struct.Proto*, align 4 ; [#uses=8] + %pc = alloca i32, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=8] + %g = alloca i32, align 4 ; [#uses=2] + %a = alloca i32, align 4 ; [#uses=2] + %b = alloca i32, align 4 ; [#uses=3] + %k = alloca i32, align 4 ; [#uses=2] + %u = alloca i32, align 4 ; [#uses=2] + %k1 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %3, align 4 + store i32 %stackpos, i32* %4, align 4 + store i8** %name, i8*** %5, align 4 + %6 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.CallInfo* %6, i32 0, i32 1 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp eq i32 %10, 6 ; [#uses=1] + br i1 %11, label %12, label %135 + +; <label>:12 ; preds = %0 + %13 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.CallInfo* %13, i32 0, i32 1 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.Closure* ; [#uses=1] + %22 = getelementptr inbounds %union.Closure* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %struct.CClosure* %22, i32 0, i32 3 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = icmp ne i8 %24, 0 ; [#uses=1] + br i1 %25, label %135, label %26 + +; <label>:26 ; preds = %12 + %27 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.CallInfo* %27, i32 0, i32 1 ; [#uses=1] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast double* %31 to %union.GCObject** ; [#uses=1] + %33 = load %union.GCObject** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %union.GCObject* %33, i32 0, i32 0 ; [#uses=1] + %35 = bitcast %struct.lua_State* %34 to %union.Closure* ; [#uses=1] + %36 = getelementptr inbounds %union.Closure* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %struct.CClosure* %36 to %struct.LClosure* ; [#uses=1] + %38 = getelementptr inbounds %struct.LClosure* %37, i32 0, i32 7 ; [#uses=1] + %39 = load %struct.Proto** %38, align 4 ; [#uses=1] + store %struct.Proto* %39, %struct.Proto** %p, align 4 + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %42 = call i32 @_Z9currentpcP9lua_StateP8CallInfo(%struct.lua_State* %40, %struct.CallInfo* %41) ; [#uses=1] + store i32 %42, i32* %pc, align 4 + %43 = load %struct.Proto** %p, align 4 ; [#uses=1] + %44 = load i32* %4, align 4 ; [#uses=1] + %45 = add nsw i32 %44, 1 ; [#uses=1] + %46 = load i32* %pc, align 4 ; [#uses=1] + %47 = call i8* @_Z17luaF_getlocalnamePK5Protoii(%struct.Proto* %43, i32 %45, i32 %46) ; [#uses=1] + %48 = load i8*** %5, align 4 ; [#uses=1] + store i8* %47, i8** %48 + %49 = load i8*** %5, align 4 ; [#uses=1] + %50 = load i8** %49 ; [#uses=1] + %51 = icmp ne i8* %50, null ; [#uses=1] + br i1 %51, label %52, label %53 + +; <label>:52 ; preds = %26 + store i8* getelementptr inbounds ([6 x i8]* @.str739, i32 0, i32 0), i8** %1 + br label %136 + +; <label>:53 ; preds = %26 + %54 = load %struct.Proto** %p, align 4 ; [#uses=1] + %55 = load i32* %pc, align 4 ; [#uses=1] + %56 = load i32* %4, align 4 ; [#uses=1] + %57 = call i32 @_Z8symbexecPK5Protoii(%struct.Proto* %54, i32 %55, i32 %56) ; [#uses=1] + store i32 %57, i32* %i, align 4 + %58 = load i32* %i, align 4 ; [#uses=1] + %59 = lshr i32 %58, 0 ; [#uses=1] + %60 = and i32 %59, 63 ; [#uses=1] + switch i32 %60, label %133 [ + i32 5, label %61 + i32 0, label %79 + i32 6, label %96 + i32 4, label %104 + i32 11, label %125 + ] + +; <label>:61 ; preds = %53 + %62 = load i32* %i, align 4 ; [#uses=1] + %63 = lshr i32 %62, 14 ; [#uses=1] + %64 = and i32 %63, 262143 ; [#uses=1] + store i32 %64, i32* %g, align 4 + %65 = load i32* %g, align 4 ; [#uses=1] + %66 = load %struct.Proto** %p, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Proto* %66, i32 0, i32 3 ; [#uses=1] + %68 = load %struct.lua_TValue** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_TValue* %68, i32 %65 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %union.anon* %70, i32 0, i32 0 ; [#uses=1] + %72 = bitcast double* %71 to %union.GCObject** ; [#uses=1] + %73 = load %union.GCObject** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds %union.GCObject* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast %struct.lua_State* %74 to %union.TString* ; [#uses=1] + %76 = getelementptr inbounds %union.TString* %75, i32 1 ; [#uses=1] + %77 = bitcast %union.TString* %76 to i8* ; [#uses=1] + %78 = load i8*** %5, align 4 ; [#uses=1] + store i8* %77, i8** %78 + store i8* getelementptr inbounds ([7 x i8]* @.str813, i32 0, i32 0), i8** %1 + br label %136 + +; <label>:79 ; preds = %53 + %80 = load i32* %i, align 4 ; [#uses=1] + %81 = lshr i32 %80, 6 ; [#uses=1] + %82 = and i32 %81, 255 ; [#uses=1] + store i32 %82, i32* %a, align 4 + %83 = load i32* %i, align 4 ; [#uses=1] + %84 = lshr i32 %83, 23 ; [#uses=1] + %85 = and i32 %84, 511 ; [#uses=1] + store i32 %85, i32* %b, align 4 + %86 = load i32* %b, align 4 ; [#uses=1] + %87 = load i32* %a, align 4 ; [#uses=1] + %88 = icmp slt i32 %86, %87 ; [#uses=1] + br i1 %88, label %89, label %95 + +; <label>:89 ; preds = %79 + %90 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %91 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %92 = load i32* %b, align 4 ; [#uses=1] + %93 = load i8*** %5, align 4 ; [#uses=1] + %94 = call i8* @_Z10getobjnameP9lua_StateP8CallInfoiPPKc(%struct.lua_State* %90, %struct.CallInfo* %91, i32 %92, i8** %93) ; [#uses=1] + store i8* %94, i8** %1 + br label %136 + +; <label>:95 ; preds = %79 + br label %134 + +; <label>:96 ; preds = %53 + %97 = load i32* %i, align 4 ; [#uses=1] + %98 = lshr i32 %97, 14 ; [#uses=1] + %99 = and i32 %98, 511 ; [#uses=1] + store i32 %99, i32* %k, align 4 + %100 = load %struct.Proto** %p, align 4 ; [#uses=1] + %101 = load i32* %k, align 4 ; [#uses=1] + %102 = call i8* @_Z5knameP5Protoi(%struct.Proto* %100, i32 %101) ; [#uses=1] + %103 = load i8*** %5, align 4 ; [#uses=1] + store i8* %102, i8** %103 + store i8* getelementptr inbounds ([6 x i8]* @.str940, i32 0, i32 0), i8** %1 + br label %136 + +; <label>:104 ; preds = %53 + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = lshr i32 %105, 23 ; [#uses=1] + %107 = and i32 %106, 511 ; [#uses=1] + store i32 %107, i32* %u, align 4 + %108 = load %struct.Proto** %p, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.Proto* %108, i32 0, i32 8 ; [#uses=1] + %110 = load %union.TString*** %109, align 4 ; [#uses=1] + %111 = icmp ne %union.TString** %110, null ; [#uses=1] + br i1 %111, label %112, label %121 + +; <label>:112 ; preds = %104 + %113 = load i32* %u, align 4 ; [#uses=1] + %114 = load %struct.Proto** %p, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.Proto* %114, i32 0, i32 8 ; [#uses=1] + %116 = load %union.TString*** %115, align 4 ; [#uses=1] + %117 = getelementptr inbounds %union.TString** %116, i32 %113 ; [#uses=1] + %118 = load %union.TString** %117 ; [#uses=1] + %119 = getelementptr inbounds %union.TString* %118, i32 1 ; [#uses=1] + %120 = bitcast %union.TString* %119 to i8* ; [#uses=1] + br label %122 + +; <label>:121 ; preds = %104 + br label %122 + +; <label>:122 ; preds = %121, %112 + %123 = phi i8* [ %120, %112 ], [ getelementptr inbounds ([2 x i8]* @.str1041, i32 0, i32 0), %121 ] ; [#uses=1] + %124 = load i8*** %5, align 4 ; [#uses=1] + store i8* %123, i8** %124 + store i8* getelementptr inbounds ([8 x i8]* @.str1142, i32 0, i32 0), i8** %1 + br label %136 + +; <label>:125 ; preds = %53 + %126 = load i32* %i, align 4 ; [#uses=1] + %127 = lshr i32 %126, 14 ; [#uses=1] + %128 = and i32 %127, 511 ; [#uses=1] + store i32 %128, i32* %k1, align 4 + %129 = load %struct.Proto** %p, align 4 ; [#uses=1] + %130 = load i32* %k1, align 4 ; [#uses=1] + %131 = call i8* @_Z5knameP5Protoi(%struct.Proto* %129, i32 %130) ; [#uses=1] + %132 = load i8*** %5, align 4 ; [#uses=1] + store i8* %131, i8** %132 + store i8* getelementptr inbounds ([7 x i8]* @.str1243, i32 0, i32 0), i8** %1 + br label %136 + +; <label>:133 ; preds = %53 + br label %134 + +; <label>:134 ; preds = %133, %95 + br label %135 + +; <label>:135 ; preds = %134, %12, %0 + store i8* null, i8** %1 + br label %136 + +; <label>:136 ; preds = %135, %125, %122, %96, %89, %61, %52 + %137 = load i8** %1 ; [#uses=1] + ret i8* %137 +} + +; [#uses=20] +define hidden void @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %L, i8* %fmt, ...) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %argp = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + %3 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_start(i8* %3) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = load i8** %argp, align 4 ; [#uses=1] + %8 = call i8* @_Z17luaO_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %5, i8* %6, i8* %7) ; [#uses=1] + call void @_Z7addinfoP9lua_StatePKc(%struct.lua_State* %4, i8* %8) + %9 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_end(i8* %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaG_errormsgP9lua_State(%struct.lua_State* %10) + ret void +} + +; [#uses=1] +define hidden void @_Z16luaG_concaterrorP9lua_StateP10lua_TValueS2_(%struct.lua_State* %L, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 4 ; [#uses=1] + br i1 %7, label %13, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 3 ; [#uses=1] + br i1 %12, label %13, label %15 + +; <label>:13 ; preds = %8, %0 + %14 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %14, %struct.lua_TValue** %2, align 4 + br label %15 + +; <label>:15 ; preds = %13, %8 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %16, %struct.lua_TValue* %17, i8* getelementptr inbounds ([12 x i8]* @.str210, i32 0, i32 0)) + ret void +} + +; [#uses=1] +define hidden void @_Z15luaG_aritherrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %L, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %temp = alloca %struct.lua_TValue, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %4, %struct.lua_TValue* %temp) ; [#uses=1] + %6 = icmp eq %struct.lua_TValue* %5, null ; [#uses=1] + br i1 %6, label %7, label %9 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %8, %struct.lua_TValue** %3, align 4 + br label %9 + +; <label>:9 ; preds = %7, %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %10, %struct.lua_TValue* %11, i8* getelementptr inbounds ([22 x i8]* @.str311, i32 0, i32 0)) + ret void +} + +; [#uses=4] +define hidden i32 @_Z15luaG_ordererrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %L, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %t1 = alloca i8*, align 4 ; [#uses=4] + %t2 = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds [0 x i8*]* bitcast ([11 x i8*]* @luaT_typenames to [0 x i8*]*), i32 0, i32 %6 ; [#uses=1] + %8 = load i8** %7 ; [#uses=1] + store i8* %8, i8** %t1, align 4 + %9 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds [0 x i8*]* bitcast ([11 x i8*]* @luaT_typenames to [0 x i8*]*), i32 0, i32 %11 ; [#uses=1] + %13 = load i8** %12 ; [#uses=1] + store i8* %13, i8** %t2, align 4 + %14 = load i8** %t1, align 4 ; [#uses=1] + %15 = getelementptr inbounds i8* %14, i32 2 ; [#uses=1] + %16 = load i8* %15 ; [#uses=1] + %17 = sext i8 %16 to i32 ; [#uses=1] + %18 = load i8** %t2, align 4 ; [#uses=1] + %19 = getelementptr inbounds i8* %18, i32 2 ; [#uses=1] + %20 = load i8* %19 ; [#uses=1] + %21 = sext i8 %20 to i32 ; [#uses=1] + %22 = icmp eq i32 %17, %21 ; [#uses=1] + br i1 %22, label %23, label %26 + +; <label>:23 ; preds = %0 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load i8** %t1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %24, i8* getelementptr inbounds ([33 x i8]* @.str412, i32 0, i32 0), i8* %25) + br label %30 + +; <label>:26 ; preds = %0 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = load i8** %t1, align 4 ; [#uses=1] + %29 = load i8** %t2, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %27, i8* getelementptr inbounds ([30 x i8]* @.str537, i32 0, i32 0), i8* %28, i8* %29) + br label %30 + +; <label>:30 ; preds = %26, %23 + ret i32 0 +} + +; [#uses=2] +define hidden void @_Z13luaG_errormsgP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=15] + %errfunc = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 27 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %82 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 10 ; [#uses=1] + %9 = load %struct.lua_TValue** %8, align 4 ; [#uses=1] + %10 = bitcast %struct.lua_TValue* %9 to i8* ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 27 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds i8* %10, i32 %13 ; [#uses=1] + %15 = bitcast i8* %14 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %errfunc, align 4 + %16 = load %struct.lua_TValue** %errfunc, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 1 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 6 ; [#uses=1] + br i1 %19, label %22, label %20 + +; <label>:20 ; preds = %6 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %21, i32 5) + br label %22 + +; <label>:22 ; preds = %20, %6 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 4 ; [#uses=1] + %25 = load %struct.lua_TValue** %24, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %26, %struct.lua_TValue** %o2, align 4 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 4 ; [#uses=1] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + store %struct.lua_TValue* %29, %struct.lua_TValue** %o1, align 4 + %30 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 0 ; [#uses=1] + %32 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast %union.anon* %31 to i8* ; [#uses=1] + %35 = bitcast %union.anon* %33 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %34, i8* %35, i32 8, i32 4, i1 false) + %36 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 1 ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 1 ; [#uses=1] + store i32 %38, i32* %40, align 4 + %41 = load %struct.lua_TValue** %errfunc, align 4 ; [#uses=1] + store %struct.lua_TValue* %41, %struct.lua_TValue** %o21, align 4 + %42 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_State* %42, i32 0, i32 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %45, %struct.lua_TValue** %o12, align 4 + %46 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_TValue* %46, i32 0, i32 0 ; [#uses=1] + %48 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast %union.anon* %47 to i8* ; [#uses=1] + %51 = bitcast %union.anon* %49 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %50, i8* %51, i32 8, i32 4, i1 false) + %52 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 0, i32 1 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_TValue* %55, i32 0, i32 1 ; [#uses=1] + store i32 %54, i32* %56, align 4 + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_State* %57, i32 0, i32 9 ; [#uses=1] + %59 = load %struct.lua_TValue** %58, align 4 ; [#uses=1] + %60 = bitcast %struct.lua_TValue* %59 to i8* ; [#uses=1] + %61 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.lua_State* %61, i32 0, i32 4 ; [#uses=1] + %63 = load %struct.lua_TValue** %62, align 4 ; [#uses=1] + %64 = bitcast %struct.lua_TValue* %63 to i8* ; [#uses=1] + %65 = ptrtoint i8* %60 to i32 ; [#uses=1] + %66 = ptrtoint i8* %64 to i32 ; [#uses=1] + %67 = sub i32 %65, %66 ; [#uses=1] + %68 = icmp sle i32 %67, 12 ; [#uses=1] + br i1 %68, label %69, label %71 + +; <label>:69 ; preds = %22 + %70 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %70, i32 1) + br label %72 + +; <label>:71 ; preds = %22 + br label %72 + +; <label>:72 ; preds = %71, %69 + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_State* %73, i32 0, i32 4 ; [#uses=2] + %75 = load %struct.lua_TValue** %74, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_TValue* %75, i32 1 ; [#uses=1] + store %struct.lua_TValue* %76, %struct.lua_TValue** %74, align 4 + %77 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %78 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_State* %78, i32 0, i32 4 ; [#uses=1] + %80 = load %struct.lua_TValue** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 -2 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %77, %struct.lua_TValue* %81, i32 1) + br label %82 + +; <label>:82 ; preds = %72, %0 + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %83, i32 2) + ret void +} + +; [#uses=1] +define internal void @_Z7addinfoP9lua_StatePKc(%struct.lua_State* %L, i8* %msg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=5] + %buff = alloca [60 x i8], align 1 ; [#uses=2] + %line = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %msg, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 7 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + store %struct.CallInfo* %5, %struct.CallInfo** %ci, align 4 + %6 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.CallInfo* %6, i32 0, i32 1 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp eq i32 %10, 6 ; [#uses=1] + br i1 %11, label %12, label %42 + +; <label>:12 ; preds = %0 + %13 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.CallInfo* %13, i32 0, i32 1 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.Closure* ; [#uses=1] + %22 = getelementptr inbounds %union.Closure* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %struct.CClosure* %22, i32 0, i32 3 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = icmp ne i8 %24, 0 ; [#uses=1] + br i1 %25, label %42, label %26 + +; <label>:26 ; preds = %12 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %29 = call i32 @_Z11currentlineP9lua_StateP8CallInfo(%struct.lua_State* %27, %struct.CallInfo* %28) ; [#uses=1] + store i32 %29, i32* %line, align 4 + %30 = getelementptr inbounds [60 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %31 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %32 = call %struct.Proto* @_Z11getluaprotoP8CallInfo(%struct.CallInfo* %31) ; [#uses=1] + %33 = getelementptr inbounds %struct.Proto* %32, i32 0, i32 9 ; [#uses=1] + %34 = load %union.TString** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %union.TString* %34, i32 1 ; [#uses=1] + %36 = bitcast %union.TString* %35 to i8* ; [#uses=1] + call void @_Z12luaO_chunkidPcPKcj(i8* %30, i8* %36, i32 60) + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds [60 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %39 = load i32* %line, align 4 ; [#uses=1] + %40 = load i8** %2, align 4 ; [#uses=1] + %41 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %37, i8* getelementptr inbounds ([10 x i8]* @.str638, i32 0, i32 0), i8* %38, i32 %39, i8* %40) ; [#uses=0] + br label %42 + +; <label>:42 ; preds = %26, %12, %0 + ret void +} + +; [#uses=2] +define internal i32 @_Z11currentlineP9lua_StateP8CallInfo(%struct.lua_State* %L, %struct.CallInfo* %ci) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.CallInfo*, align 4 ; [#uses=4] + %pc = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %6 = call i32 @_Z9currentpcP9lua_StateP8CallInfo(%struct.lua_State* %4, %struct.CallInfo* %5) ; [#uses=1] + store i32 %6, i32* %pc, align 4 + %7 = load i32* %pc, align 4 ; [#uses=1] + %8 = icmp slt i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %10 + +; <label>:9 ; preds = %0 + store i32 -1, i32* %1 + br label %49 + +; <label>:10 ; preds = %0 + %11 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.CallInfo* %11, i32 0, i32 1 ; [#uses=1] + %13 = load %struct.lua_TValue** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + %17 = load %union.GCObject** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.GCObject* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to %union.Closure* ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.CClosure* %20 to %struct.LClosure* ; [#uses=1] + %22 = getelementptr inbounds %struct.LClosure* %21, i32 0, i32 7 ; [#uses=1] + %23 = load %struct.Proto** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 6 ; [#uses=1] + %25 = load i32** %24, align 4 ; [#uses=1] + %26 = icmp ne i32* %25, null ; [#uses=1] + br i1 %26, label %27, label %46 + +; <label>:27 ; preds = %10 + %28 = load i32* %pc, align 4 ; [#uses=1] + %29 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.CallInfo* %29, i32 0, i32 1 ; [#uses=1] + %31 = load %struct.lua_TValue** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %union.anon* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast double* %33 to %union.GCObject** ; [#uses=1] + %35 = load %union.GCObject** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %union.GCObject* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %struct.lua_State* %36 to %union.Closure* ; [#uses=1] + %38 = getelementptr inbounds %union.Closure* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.CClosure* %38 to %struct.LClosure* ; [#uses=1] + %40 = getelementptr inbounds %struct.LClosure* %39, i32 0, i32 7 ; [#uses=1] + %41 = load %struct.Proto** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.Proto* %41, i32 0, i32 6 ; [#uses=1] + %43 = load i32** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds i32* %43, i32 %28 ; [#uses=1] + %45 = load i32* %44 ; [#uses=1] + br label %47 + +; <label>:46 ; preds = %10 + br label %47 + +; <label>:47 ; preds = %46, %27 + %48 = phi i32 [ %45, %27 ], [ 0, %46 ] ; [#uses=1] + store i32 %48, i32* %1 + br label %49 + +; <label>:49 ; preds = %47, %9 + %50 = load i32* %1 ; [#uses=1] + ret i32 %50 +} + +; [#uses=2] +define internal %struct.Proto* @_Z11getluaprotoP8CallInfo(%struct.CallInfo* %ci) nounwind { + %1 = alloca %struct.CallInfo*, align 4 ; [#uses=4] + store %struct.CallInfo* %ci, %struct.CallInfo** %1, align 4 + %2 = load %struct.CallInfo** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.CallInfo* %2, i32 0, i32 1 ; [#uses=1] + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 6 ; [#uses=1] + br i1 %7, label %8, label %36 + +; <label>:8 ; preds = %0 + %9 = load %struct.CallInfo** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallInfo* %9, i32 0, i32 1 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Closure* ; [#uses=1] + %18 = getelementptr inbounds %union.Closure* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %struct.CClosure* %18, i32 0, i32 3 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = icmp ne i8 %20, 0 ; [#uses=1] + br i1 %21, label %36, label %22 + +; <label>:22 ; preds = %8 + %23 = load %struct.CallInfo** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.CallInfo* %23, i32 0, i32 1 ; [#uses=1] + %25 = load %struct.lua_TValue** %24, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %union.anon* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast double* %27 to %union.GCObject** ; [#uses=1] + %29 = load %union.GCObject** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %union.GCObject* %29, i32 0, i32 0 ; [#uses=1] + %31 = bitcast %struct.lua_State* %30 to %union.Closure* ; [#uses=1] + %32 = getelementptr inbounds %union.Closure* %31, i32 0, i32 0 ; [#uses=1] + %33 = bitcast %struct.CClosure* %32 to %struct.LClosure* ; [#uses=1] + %34 = getelementptr inbounds %struct.LClosure* %33, i32 0, i32 7 ; [#uses=1] + %35 = load %struct.Proto** %34, align 4 ; [#uses=1] + br label %37 + +; <label>:36 ; preds = %8, %0 + br label %37 + +; <label>:37 ; preds = %36, %22 + %38 = phi %struct.Proto* [ %35, %22 ], [ null, %36 ] ; [#uses=1] + ret %struct.Proto* %38 +} + +; [#uses=4] +define internal i32 @_Z9currentpcP9lua_StateP8CallInfo(%struct.lua_State* %L, %struct.CallInfo* %ci) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca %struct.CallInfo*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %3, align 4 + %4 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.CallInfo* %4, i32 0, i32 1 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_TValue* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 6 ; [#uses=1] + br i1 %9, label %10, label %24 + +; <label>:10 ; preds = %0 + %11 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.CallInfo* %11, i32 0, i32 1 ; [#uses=1] + %13 = load %struct.lua_TValue** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + %17 = load %union.GCObject** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.GCObject* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to %union.Closure* ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %struct.CClosure* %20, i32 0, i32 3 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = icmp ne i8 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %25 + +; <label>:24 ; preds = %10, %0 + store i32 -1, i32* %1 + br label %61 + +; <label>:25 ; preds = %10 + %26 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 7 ; [#uses=1] + %29 = load %struct.CallInfo** %28, align 4 ; [#uses=1] + %30 = icmp eq %struct.CallInfo* %26, %29 ; [#uses=1] + br i1 %30, label %31, label %37 + +; <label>:31 ; preds = %25 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 8 ; [#uses=1] + %34 = load i32** %33, align 4 ; [#uses=1] + %35 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.CallInfo* %35, i32 0, i32 3 ; [#uses=1] + store i32* %34, i32** %36, align 4 + br label %37 + +; <label>:37 ; preds = %31, %25 + %38 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.CallInfo* %38, i32 0, i32 3 ; [#uses=1] + %40 = load i32** %39, align 4 ; [#uses=1] + %41 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.CallInfo* %41, i32 0, i32 1 ; [#uses=1] + %43 = load %struct.lua_TValue** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 0, i32 0 ; [#uses=1] + %45 = getelementptr inbounds %union.anon* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast double* %45 to %union.GCObject** ; [#uses=1] + %47 = load %union.GCObject** %46, align 4 ; [#uses=1] + %48 = getelementptr inbounds %union.GCObject* %47, i32 0, i32 0 ; [#uses=1] + %49 = bitcast %struct.lua_State* %48 to %union.Closure* ; [#uses=1] + %50 = getelementptr inbounds %union.Closure* %49, i32 0, i32 0 ; [#uses=1] + %51 = bitcast %struct.CClosure* %50 to %struct.LClosure* ; [#uses=1] + %52 = getelementptr inbounds %struct.LClosure* %51, i32 0, i32 7 ; [#uses=1] + %53 = load %struct.Proto** %52, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Proto* %53, i32 0, i32 4 ; [#uses=1] + %55 = load i32** %54, align 4 ; [#uses=1] + %56 = ptrtoint i32* %40 to i32 ; [#uses=1] + %57 = ptrtoint i32* %55 to i32 ; [#uses=1] + %58 = sub i32 %56, %57 ; [#uses=1] + %59 = sdiv exact i32 %58, 4 ; [#uses=1] + %60 = sub nsw i32 %59, 1 ; [#uses=1] + store i32 %60, i32* %1 + br label %61 + +; <label>:61 ; preds = %37, %24 + %62 = load i32* %1 ; [#uses=1] + ret i32 %62 +} + +; [#uses=2] +define internal i8* @_Z5knameP5Protoi(%struct.Proto* %p, i32 %c) nounwind { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.Proto*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=4] + store %struct.Proto* %p, %struct.Proto** %2, align 4 + store i32 %c, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = and i32 %4, 256 ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %32 + +; <label>:7 ; preds = %0 + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = and i32 %8, -257 ; [#uses=1] + %10 = load %struct.Proto** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Proto* %10, i32 0, i32 3 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 %9 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 1 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = icmp eq i32 %15, 4 ; [#uses=1] + br i1 %16, label %17, label %32 + +; <label>:17 ; preds = %7 + %18 = load i32* %3, align 4 ; [#uses=1] + %19 = and i32 %18, -257 ; [#uses=1] + %20 = load %struct.Proto** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 3 ; [#uses=1] + %22 = load %struct.lua_TValue** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 %19 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast double* %25 to %union.GCObject** ; [#uses=1] + %27 = load %union.GCObject** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %union.GCObject* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast %struct.lua_State* %28 to %union.TString* ; [#uses=1] + %30 = getelementptr inbounds %union.TString* %29, i32 1 ; [#uses=1] + %31 = bitcast %union.TString* %30 to i8* ; [#uses=1] + store i8* %31, i8** %1 + br label %33 + +; <label>:32 ; preds = %7, %0 + store i8* getelementptr inbounds ([2 x i8]* @.str1041, i32 0, i32 0), i8** %1 + br label %33 + +; <label>:33 ; preds = %32, %17 + %34 = load i8** %1 ; [#uses=1] + ret i8* %34 +} + +; [#uses=1] +define internal i32 @_Z8precheckPK5Proto(%struct.Proto* %pt) nounwind { + %1 = alloca i32, align 4 ; [#uses=8] + %2 = alloca %struct.Proto*, align 4 ; [#uses=15] + store %struct.Proto* %pt, %struct.Proto** %2, align 4 + %3 = load %struct.Proto** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Proto* %3, i32 0, i32 22 ; [#uses=1] + %5 = load i8* %4, align 1 ; [#uses=1] + %6 = zext i8 %5 to i32 ; [#uses=1] + %7 = icmp sle i32 %6, 250 ; [#uses=1] + br i1 %7, label %9, label %8 + +; <label>:8 ; preds = %0 + store i32 0, i32* %1 + br label %85 + +; <label>:9 ; preds = %0 + %10 = load %struct.Proto** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Proto* %10, i32 0, i32 20 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = load %struct.Proto** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 21 ; [#uses=1] + %16 = load i8* %15, align 1 ; [#uses=1] + %17 = zext i8 %16 to i32 ; [#uses=1] + %18 = and i32 %17, 1 ; [#uses=1] + %19 = add nsw i32 %13, %18 ; [#uses=1] + %20 = load %struct.Proto** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 22 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + %24 = icmp sle i32 %19, %23 ; [#uses=1] + br i1 %24, label %26, label %25 + +; <label>:25 ; preds = %9 + store i32 0, i32* %1 + br label %85 + +; <label>:26 ; preds = %9 + %27 = load %struct.Proto** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.Proto* %27, i32 0, i32 21 ; [#uses=1] + %29 = load i8* %28, align 1 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + %31 = and i32 %30, 4 ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %41 + +; <label>:33 ; preds = %26 + %34 = load %struct.Proto** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 21 ; [#uses=1] + %36 = load i8* %35, align 1 ; [#uses=1] + %37 = zext i8 %36 to i32 ; [#uses=1] + %38 = and i32 %37, 1 ; [#uses=1] + %39 = icmp ne i32 %38, 0 ; [#uses=1] + br i1 %39, label %41, label %40 + +; <label>:40 ; preds = %33 + store i32 0, i32* %1 + br label %85 + +; <label>:41 ; preds = %33, %26 + %42 = load %struct.Proto** %2, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Proto* %42, i32 0, i32 10 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = load %struct.Proto** %2, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Proto* %45, i32 0, i32 19 ; [#uses=1] + %47 = load i8* %46, align 1 ; [#uses=1] + %48 = zext i8 %47 to i32 ; [#uses=1] + %49 = icmp sle i32 %44, %48 ; [#uses=1] + br i1 %49, label %51, label %50 + +; <label>:50 ; preds = %41 + store i32 0, i32* %1 + br label %85 + +; <label>:51 ; preds = %41 + %52 = load %struct.Proto** %2, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.Proto* %52, i32 0, i32 13 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = load %struct.Proto** %2, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 12 ; [#uses=1] + %57 = load i32* %56, align 4 ; [#uses=1] + %58 = icmp eq i32 %54, %57 ; [#uses=1] + br i1 %58, label %65, label %59 + +; <label>:59 ; preds = %51 + %60 = load %struct.Proto** %2, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.Proto* %60, i32 0, i32 13 ; [#uses=1] + %62 = load i32* %61, align 4 ; [#uses=1] + %63 = icmp eq i32 %62, 0 ; [#uses=1] + br i1 %63, label %65, label %64 + +; <label>:64 ; preds = %59 + store i32 0, i32* %1 + br label %85 + +; <label>:65 ; preds = %59, %51 + %66 = load %struct.Proto** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Proto* %66, i32 0, i32 12 ; [#uses=1] + %68 = load i32* %67, align 4 ; [#uses=1] + %69 = icmp sgt i32 %68, 0 ; [#uses=1] + br i1 %69, label %70, label %83 + +; <label>:70 ; preds = %65 + %71 = load %struct.Proto** %2, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.Proto* %71, i32 0, i32 12 ; [#uses=1] + %73 = load i32* %72, align 4 ; [#uses=1] + %74 = sub nsw i32 %73, 1 ; [#uses=1] + %75 = load %struct.Proto** %2, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.Proto* %75, i32 0, i32 4 ; [#uses=1] + %77 = load i32** %76, align 4 ; [#uses=1] + %78 = getelementptr inbounds i32* %77, i32 %74 ; [#uses=1] + %79 = load i32* %78 ; [#uses=1] + %80 = lshr i32 %79, 0 ; [#uses=1] + %81 = and i32 %80, 63 ; [#uses=1] + %82 = icmp eq i32 %81, 30 ; [#uses=1] + br i1 %82, label %84, label %83 + +; <label>:83 ; preds = %70, %65 + store i32 0, i32* %1 + br label %85 + +; <label>:84 ; preds = %70 + store i32 1, i32* %1 + br label %85 + +; <label>:85 ; preds = %84, %83, %64, %50, %40, %25, %8 + %86 = load i32* %1 ; [#uses=1] + ret i32 %86 +} + +; [#uses=2] +define internal i32 @_Z12checkArgModePK5Protoi9OpArgMask(%struct.Proto* %pt, i32 %r, i32 %mode) nounwind { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.Proto*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=2] + store %struct.Proto* %pt, %struct.Proto** %2, align 4 + store i32 %r, i32* %3, align 4 + store i32 %mode, i32* %4, align 4 + %5 = load i32* %4, align 4 ; [#uses=1] + switch i32 %5, label %41 [ + i32 0, label %6 + i32 1, label %11 + i32 2, label %12 + i32 3, label %21 + ] + +; <label>:6 ; preds = %0 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %10, label %9 + +; <label>:9 ; preds = %6 + store i32 0, i32* %1 + br label %42 + +; <label>:10 ; preds = %6 + br label %41 + +; <label>:11 ; preds = %0 + br label %41 + +; <label>:12 ; preds = %0 + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = load %struct.Proto** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 22 ; [#uses=1] + %16 = load i8* %15, align 1 ; [#uses=1] + %17 = zext i8 %16 to i32 ; [#uses=1] + %18 = icmp slt i32 %13, %17 ; [#uses=1] + br i1 %18, label %20, label %19 + +; <label>:19 ; preds = %12 + store i32 0, i32* %1 + br label %42 + +; <label>:20 ; preds = %12 + br label %41 + +; <label>:21 ; preds = %0 + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = and i32 %22, 256 ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %32 + +; <label>:25 ; preds = %21 + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = and i32 %26, -257 ; [#uses=1] + %28 = load %struct.Proto** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Proto* %28, i32 0, i32 11 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = icmp slt i32 %27, %30 ; [#uses=1] + br i1 %31, label %40, label %39 + +; <label>:32 ; preds = %21 + %33 = load i32* %3, align 4 ; [#uses=1] + %34 = load %struct.Proto** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 22 ; [#uses=1] + %36 = load i8* %35, align 1 ; [#uses=1] + %37 = zext i8 %36 to i32 ; [#uses=1] + %38 = icmp slt i32 %33, %37 ; [#uses=1] + br i1 %38, label %40, label %39 + +; <label>:39 ; preds = %32, %25 + store i32 0, i32* %1 + br label %42 + +; <label>:40 ; preds = %32, %25 + br label %41 + +; <label>:41 ; preds = %40, %20, %11, %10, %0 + store i32 1, i32* %1 + br label %42 + +; <label>:42 ; preds = %41, %39, %19, %9 + %43 = load i32* %1 ; [#uses=1] + ret i32 %43 +} + +; [#uses=1] +define internal void @_Z13info_tailcallP9lua_Debug(%struct.lua_Debug* %ar) { + %1 = alloca %struct.lua_Debug*, align 4 ; [#uses=11] + store %struct.lua_Debug* %ar, %struct.lua_Debug** %1, align 4 + %2 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_Debug* %2, i32 0, i32 2 ; [#uses=1] + store i8* getelementptr inbounds ([1 x i8]* @.str1344, i32 0, i32 0), i8** %3, align 4 + %4 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_Debug* %4, i32 0, i32 1 ; [#uses=1] + store i8* getelementptr inbounds ([1 x i8]* @.str1344, i32 0, i32 0), i8** %5, align 4 + %6 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_Debug* %6, i32 0, i32 3 ; [#uses=1] + store i8* getelementptr inbounds ([5 x i8]* @.str1848, i32 0, i32 0), i8** %7, align 4 + %8 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_Debug* %8, i32 0, i32 5 ; [#uses=1] + store i32 -1, i32* %9, align 4 + %10 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_Debug* %10, i32 0, i32 7 ; [#uses=1] + store i32 -1, i32* %11, align 4 + %12 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_Debug* %12, i32 0, i32 8 ; [#uses=1] + store i32 -1, i32* %13, align 4 + %14 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_Debug* %14, i32 0, i32 4 ; [#uses=1] + store i8* getelementptr inbounds ([13 x i8]* @.str1915, i32 0, i32 0), i8** %15, align 4 + %16 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_Debug* %16, i32 0, i32 9 ; [#uses=1] + %18 = getelementptr inbounds [60 x i8]* %17, i32 0, i32 0 ; [#uses=1] + %19 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_Debug* %19, i32 0, i32 4 ; [#uses=1] + %21 = load i8** %20, align 4 ; [#uses=1] + call void @_Z12luaO_chunkidPcPKcj(i8* %18, i8* %21, i32 60) + %22 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_Debug* %22, i32 0, i32 6 ; [#uses=1] + store i32 0, i32* %23, align 4 + ret void +} + +; [#uses=1] +define internal void @_Z8funcinfoP9lua_DebugP7Closure(%struct.lua_Debug* %ar, %union.Closure* %cl) { + %1 = alloca %struct.lua_Debug*, align 4 ; [#uses=12] + %2 = alloca %union.Closure*, align 4 ; [#uses=5] + store %struct.lua_Debug* %ar, %struct.lua_Debug** %1, align 4 + store %union.Closure* %cl, %union.Closure** %2, align 4 + %3 = load %union.Closure** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %union.Closure* %3, i32 0, i32 0 ; [#uses=1] + %5 = getelementptr inbounds %struct.CClosure* %4, i32 0, i32 3 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = icmp ne i8 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %17 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_Debug* %9, i32 0, i32 4 ; [#uses=1] + store i8* getelementptr inbounds ([5 x i8]* @.str1445, i32 0, i32 0), i8** %10, align 4 + %11 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_Debug* %11, i32 0, i32 7 ; [#uses=1] + store i32 -1, i32* %12, align 4 + %13 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_Debug* %13, i32 0, i32 8 ; [#uses=1] + store i32 -1, i32* %14, align 4 + %15 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_Debug* %15, i32 0, i32 3 ; [#uses=1] + store i8* getelementptr inbounds ([2 x i8]* @.str1514, i32 0, i32 0), i8** %16, align 4 + br label %57 + +; <label>:17 ; preds = %0 + %18 = load %union.Closure** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.Closure* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.CClosure* %19 to %struct.LClosure* ; [#uses=1] + %21 = getelementptr inbounds %struct.LClosure* %20, i32 0, i32 7 ; [#uses=1] + %22 = load %struct.Proto** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Proto* %22, i32 0, i32 9 ; [#uses=1] + %24 = load %union.TString** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.TString* %24, i32 1 ; [#uses=1] + %26 = bitcast %union.TString* %25 to i8* ; [#uses=1] + %27 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_Debug* %27, i32 0, i32 4 ; [#uses=1] + store i8* %26, i8** %28, align 4 + %29 = load %union.Closure** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %union.Closure* %29, i32 0, i32 0 ; [#uses=1] + %31 = bitcast %struct.CClosure* %30 to %struct.LClosure* ; [#uses=1] + %32 = getelementptr inbounds %struct.LClosure* %31, i32 0, i32 7 ; [#uses=1] + %33 = load %struct.Proto** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Proto* %33, i32 0, i32 16 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + %36 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_Debug* %36, i32 0, i32 7 ; [#uses=1] + store i32 %35, i32* %37, align 4 + %38 = load %union.Closure** %2, align 4 ; [#uses=1] + %39 = getelementptr inbounds %union.Closure* %38, i32 0, i32 0 ; [#uses=1] + %40 = bitcast %struct.CClosure* %39 to %struct.LClosure* ; [#uses=1] + %41 = getelementptr inbounds %struct.LClosure* %40, i32 0, i32 7 ; [#uses=1] + %42 = load %struct.Proto** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Proto* %42, i32 0, i32 17 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_Debug* %45, i32 0, i32 8 ; [#uses=1] + store i32 %44, i32* %46, align 4 + %47 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_Debug* %47, i32 0, i32 7 ; [#uses=1] + %49 = load i32* %48, align 4 ; [#uses=1] + %50 = icmp eq i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %52 + +; <label>:51 ; preds = %17 + br label %53 + +; <label>:52 ; preds = %17 + br label %53 + +; <label>:53 ; preds = %52, %51 + %54 = phi i8* [ getelementptr inbounds ([5 x i8]* @.str1646, i32 0, i32 0), %51 ], [ getelementptr inbounds ([4 x i8]* @.str1747, i32 0, i32 0), %52 ] ; [#uses=1] + %55 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_Debug* %55, i32 0, i32 3 ; [#uses=1] + store i8* %54, i8** %56, align 4 + br label %57 + +; <label>:57 ; preds = %53, %8 + %58 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_Debug* %58, i32 0, i32 9 ; [#uses=1] + %60 = getelementptr inbounds [60 x i8]* %59, i32 0, i32 0 ; [#uses=1] + %61 = load %struct.lua_Debug** %1, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.lua_Debug* %61, i32 0, i32 4 ; [#uses=1] + %63 = load i8** %62, align 4 ; [#uses=1] + call void @_Z12luaO_chunkidPcPKcj(i8* %60, i8* %63, i32 60) + ret void +} + +; [#uses=1] +define internal i8* @_Z11getfuncnameP9lua_StateP8CallInfoPPKc(%struct.lua_State* %L, %struct.CallInfo* %ci, i8** %name) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca %struct.CallInfo*, align 4 ; [#uses=11] + %4 = alloca i8**, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.CallInfo* %ci, %struct.CallInfo** %3, align 4 + store i8** %name, i8*** %4, align 4 + %5 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.CallInfo* %5, i32 0, i32 1 ; [#uses=1] + %7 = load %struct.lua_TValue** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 6 ; [#uses=1] + br i1 %10, label %11, label %30 + +; <label>:11 ; preds = %0 + %12 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.CallInfo* %12, i32 0, i32 1 ; [#uses=1] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast double* %16 to %union.GCObject** ; [#uses=1] + %18 = load %union.GCObject** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.GCObject* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.lua_State* %19 to %union.Closure* ; [#uses=1] + %21 = getelementptr inbounds %union.Closure* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %struct.CClosure* %21, i32 0, i32 3 ; [#uses=1] + %23 = load i8* %22, align 1 ; [#uses=1] + %24 = icmp ne i8 %23, 0 ; [#uses=1] + br i1 %24, label %30, label %25 + +; <label>:25 ; preds = %11 + %26 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.CallInfo* %26, i32 0, i32 5 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = icmp sgt i32 %28, 0 ; [#uses=1] + br i1 %29, label %53, label %30 + +; <label>:30 ; preds = %25, %11, %0 + %31 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.CallInfo* %31, i32 -1 ; [#uses=1] + %33 = getelementptr inbounds %struct.CallInfo* %32, i32 0, i32 1 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 6 ; [#uses=1] + br i1 %37, label %38, label %53 + +; <label>:38 ; preds = %30 + %39 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.CallInfo* %39, i32 -1 ; [#uses=1] + %41 = getelementptr inbounds %struct.CallInfo* %40, i32 0, i32 1 ; [#uses=1] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 0 ; [#uses=1] + %44 = getelementptr inbounds %union.anon* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast double* %44 to %union.GCObject** ; [#uses=1] + %46 = load %union.GCObject** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %union.GCObject* %46, i32 0, i32 0 ; [#uses=1] + %48 = bitcast %struct.lua_State* %47 to %union.Closure* ; [#uses=1] + %49 = getelementptr inbounds %union.Closure* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %struct.CClosure* %49, i32 0, i32 3 ; [#uses=1] + %51 = load i8* %50, align 1 ; [#uses=1] + %52 = icmp ne i8 %51, 0 ; [#uses=1] + br i1 %52, label %53, label %54 + +; <label>:53 ; preds = %38, %30, %25 + store i8* null, i8** %1 + br label %100 + +; <label>:54 ; preds = %38 + %55 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.CallInfo* %55, i32 -1 ; [#uses=1] + store %struct.CallInfo* %56, %struct.CallInfo** %3, align 4 + %57 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %58 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %59 = call i32 @_Z9currentpcP9lua_StateP8CallInfo(%struct.lua_State* %57, %struct.CallInfo* %58) ; [#uses=1] + %60 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.CallInfo* %60, i32 0, i32 1 ; [#uses=1] + %62 = load %struct.lua_TValue** %61, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_TValue* %62, i32 0, i32 0 ; [#uses=1] + %64 = getelementptr inbounds %union.anon* %63, i32 0, i32 0 ; [#uses=1] + %65 = bitcast double* %64 to %union.GCObject** ; [#uses=1] + %66 = load %union.GCObject** %65, align 4 ; [#uses=1] + %67 = getelementptr inbounds %union.GCObject* %66, i32 0, i32 0 ; [#uses=1] + %68 = bitcast %struct.lua_State* %67 to %union.Closure* ; [#uses=1] + %69 = getelementptr inbounds %union.Closure* %68, i32 0, i32 0 ; [#uses=1] + %70 = bitcast %struct.CClosure* %69 to %struct.LClosure* ; [#uses=1] + %71 = getelementptr inbounds %struct.LClosure* %70, i32 0, i32 7 ; [#uses=1] + %72 = load %struct.Proto** %71, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Proto* %72, i32 0, i32 4 ; [#uses=1] + %74 = load i32** %73, align 4 ; [#uses=1] + %75 = getelementptr inbounds i32* %74, i32 %59 ; [#uses=1] + %76 = load i32* %75 ; [#uses=1] + store i32 %76, i32* %i, align 4 + %77 = load i32* %i, align 4 ; [#uses=1] + %78 = lshr i32 %77, 0 ; [#uses=1] + %79 = and i32 %78, 63 ; [#uses=1] + %80 = icmp eq i32 %79, 28 ; [#uses=1] + br i1 %80, label %91, label %81 + +; <label>:81 ; preds = %54 + %82 = load i32* %i, align 4 ; [#uses=1] + %83 = lshr i32 %82, 0 ; [#uses=1] + %84 = and i32 %83, 63 ; [#uses=1] + %85 = icmp eq i32 %84, 29 ; [#uses=1] + br i1 %85, label %91, label %86 + +; <label>:86 ; preds = %81 + %87 = load i32* %i, align 4 ; [#uses=1] + %88 = lshr i32 %87, 0 ; [#uses=1] + %89 = and i32 %88, 63 ; [#uses=1] + %90 = icmp eq i32 %89, 33 ; [#uses=1] + br i1 %90, label %91, label %99 + +; <label>:91 ; preds = %86, %81, %54 + %92 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %93 = load %struct.CallInfo** %3, align 4 ; [#uses=1] + %94 = load i32* %i, align 4 ; [#uses=1] + %95 = lshr i32 %94, 6 ; [#uses=1] + %96 = and i32 %95, 255 ; [#uses=1] + %97 = load i8*** %4, align 4 ; [#uses=1] + %98 = call i8* @_Z10getobjnameP9lua_StateP8CallInfoiPPKc(%struct.lua_State* %92, %struct.CallInfo* %93, i32 %96, i8** %97) ; [#uses=1] + store i8* %98, i8** %1 + br label %100 + +; <label>:99 ; preds = %86 + store i8* null, i8** %1 + br label %100 + +; <label>:100 ; preds = %99, %91, %53 + %101 = load i8** %1 ; [#uses=1] + ret i8* %101 +} + +; [#uses=3] +define hidden void @_Z16luaD_seterrorobjP9lua_StateiP10lua_TValue(%struct.lua_State* %L, i32 %errcode, %struct.lua_TValue* %oldtop) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %errcode, i32* %2, align 4 + store %struct.lua_TValue* %oldtop, %struct.lua_TValue** %3, align 4 + %4 = load i32* %2, align 4 ; [#uses=1] + switch i32 %4, label %44 [ + i32 4, label %5 + i32 5, label %16 + i32 3, label %27 + i32 2, label %27 + ] + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %i_o, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %7, i8* getelementptr inbounds ([18 x i8]* @.str2150, i32 0, i32 0), i32 17) ; [#uses=1] + %9 = bitcast %union.TString* %8 to %union.GCObject* ; [#uses=1] + %10 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast double* %12 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %9, %union.GCObject** %13, align 4 + %14 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %15, align 4 + br label %44 + +; <label>:16 ; preds = %0 + %17 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %i_o1, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %18, i8* getelementptr inbounds ([24 x i8]* @.str122, i32 0, i32 0), i32 23) ; [#uses=1] + %20 = bitcast %union.TString* %19 to %union.GCObject* ; [#uses=1] + %21 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %union.anon* %22, i32 0, i32 0 ; [#uses=1] + %24 = bitcast double* %23 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %20, %union.GCObject** %24, align 4 + %25 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %26, align 4 + br label %44 + +; <label>:27 ; preds = %0, %0 + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %31, %struct.lua_TValue** %o2, align 4 + %32 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %o1, align 4 + %33 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 0 ; [#uses=1] + %35 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %union.anon* %34 to i8* ; [#uses=1] + %38 = bitcast %union.anon* %36 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %37, i8* %38, i32 8, i32 4, i1 false) + %39 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 1 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 1 ; [#uses=1] + store i32 %41, i32* %43, align 4 + br label %44 + +; <label>:44 ; preds = %27, %16, %5, %0 + %45 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 1 ; [#uses=1] + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %46, %struct.lua_TValue** %48, align 4 + ret void +} + +; [#uses=7] +define hidden void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %L, i32 %errcode) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca i1 ; [#uses=3] + %4 = alloca i8* ; [#uses=1] + store i1 false, i1* %3 + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %errcode, i32* %2, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 26 ; [#uses=1] + %7 = load %struct.lua_longjmp** %6, align 4 ; [#uses=1] + %8 = icmp ne %struct.lua_longjmp* %7, null ; [#uses=1] + br i1 %8, label %9, label %20 + +; <label>:9 ; preds = %0 + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 26 ; [#uses=1] + %13 = load %struct.lua_longjmp** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_longjmp* %13, i32 0, i32 2 ; [#uses=1] + volatile store i32 %10, i32* %14, align 4 + %15 = call i8* @__cxa_allocate_exception(i32 4) nounwind ; [#uses=3] + store i8* %15, i8** %4 + store i1 true, i1* %3 + %16 = bitcast i8* %15 to %struct.lua_longjmp** ; [#uses=1] + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 26 ; [#uses=1] + %19 = load %struct.lua_longjmp** %18, align 4 ; [#uses=1] + store %struct.lua_longjmp* %19, %struct.lua_longjmp** %16 + store i1 false, i1* %3 + call void @__cxa_throw(i8* %15, i8* bitcast (%6* @_ZTIP11lua_longjmp to i8*), i8* null) noreturn + unreachable + +; <label>:20 ; preds = %0 + %21 = load i32* %2, align 4 ; [#uses=1] + %22 = trunc i32 %21 to i8 ; [#uses=1] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 3 ; [#uses=1] + store i8 %22, i8* %24, align 1 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 6 ; [#uses=1] + %27 = load %struct.global_State** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.global_State* %27, i32 0, i32 19 ; [#uses=1] + %29 = load i32 (%struct.lua_State*)** %28, align 4 ; [#uses=1] + %30 = icmp ne i32 (%struct.lua_State*)* %29, null ; [#uses=1] + br i1 %30, label %31, label %41 + +; <label>:31 ; preds = %20 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = load i32* %2, align 4 ; [#uses=1] + call void @_Z10resetstackP9lua_Statei(%struct.lua_State* %32, i32 %33) + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 6 ; [#uses=1] + %36 = load %struct.global_State** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.global_State* %36, i32 0, i32 19 ; [#uses=1] + %38 = load i32 (%struct.lua_State*)** %37, align 4 ; [#uses=1] + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = call i32 %38(%struct.lua_State* %39) ; [#uses=0] + br label %41 + +; <label>:41 ; preds = %31, %20 + call void @exit(i32 1) noreturn + unreachable + ; No predecessors! + ret void +} + +; [#uses=1] +declare i8* @__cxa_allocate_exception(i32) + +; [#uses=1] +declare void @__cxa_throw(i8*, i8*, i8*) + +; [#uses=1] +define internal void @_Z10resetstackP9lua_Statei(%struct.lua_State* %L, i32 %status) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=15] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %status, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 12 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* %5, %struct.CallInfo** %7, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 7 ; [#uses=1] + %10 = load %struct.CallInfo** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.CallInfo* %10, i32 0, i32 0 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %14, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 5 ; [#uses=1] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %15, %struct.lua_TValue* %18) + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load i32* %2, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 5 ; [#uses=1] + %23 = load %struct.lua_TValue** %22, align 4 ; [#uses=1] + call void @_Z16luaD_seterrorobjP9lua_StateiP10lua_TValue(%struct.lua_State* %19, i32 %20, %struct.lua_TValue* %23) + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_State* %24, i32 0, i32 16 ; [#uses=1] + %26 = load i16* %25, align 2 ; [#uses=1] + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 15 ; [#uses=1] + store i16 %26, i16* %28, align 2 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 18 ; [#uses=1] + store i8 1, i8* %30, align 1 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z19restore_stack_limitP9lua_State(%struct.lua_State* %31) + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 27 ; [#uses=1] + store i32 0, i32* %33, align 4 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 26 ; [#uses=1] + store %struct.lua_longjmp* null, %struct.lua_longjmp** %35, align 4 + ret void +} + +; [#uses=2] +declare void @exit(i32) noreturn nounwind + +; [#uses=4] +define hidden i32 @_Z20luaD_rawrunprotectedP9lua_StatePFvS0_PvES1_(%struct.lua_State* %L, void (%struct.lua_State*, i8*)* %f, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca void (%struct.lua_State*, i8*)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %lj = alloca %struct.lua_longjmp, align 4 ; [#uses=7] + %4 = alloca i8* ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store void (%struct.lua_State*, i8*)* %f, void (%struct.lua_State*, i8*)** %2, align 4 + store i8* %ud, i8** %3, align 4 + %5 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 2 ; [#uses=1] + volatile store i32 0, i32* %5, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 26 ; [#uses=1] + %8 = load %struct.lua_longjmp** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 0 ; [#uses=1] + store %struct.lua_longjmp* %8, %struct.lua_longjmp** %9, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 26 ; [#uses=1] + store %struct.lua_longjmp* %lj, %struct.lua_longjmp** %11, align 4 + %12 = load void (%struct.lua_State*, i8*)** %2, align 4 ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load i8** %3, align 4 ; [#uses=1] + invoke void %12(%struct.lua_State* %13, i8* %14) + to label %15 unwind label %24 + +; <label>:15 ; preds = %0 + br label %28 + +; <label>:16 ; preds = %24 + %17 = load i8** %4 ; [#uses=1] + %18 = call i8* @__cxa_begin_catch(i8* %17) nounwind ; [#uses=0] + %19 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 2 ; [#uses=1] + %20 = volatile load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, 0 ; [#uses=1] + br i1 %21, label %22, label %27 + +; <label>:22 ; preds = %16 + %23 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 2 ; [#uses=1] + volatile store i32 -1, i32* %23, align 4 + br label %27 + +; <label>:24 ; preds = %0 + %25 = call i8* @llvm.eh.exception() nounwind ; [#uses=2] + store i8* %25, i8** %4 + %26 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %25, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) nounwind ; [#uses=0] + br label %16 + +; <label>:27 ; preds = %22, %16 + call void @__cxa_end_catch() + br label %28 + +; <label>:28 ; preds = %27, %15 + %29 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 0 ; [#uses=1] + %30 = load %struct.lua_longjmp** %29, align 4 ; [#uses=1] + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 26 ; [#uses=1] + store %struct.lua_longjmp* %30, %struct.lua_longjmp** %32, align 4 + %33 = getelementptr inbounds %struct.lua_longjmp* %lj, i32 0, i32 2 ; [#uses=1] + %34 = volatile load i32* %33, align 4 ; [#uses=1] + ret i32 %34 +} + +; [#uses=1] +declare i8* @llvm.eh.exception() nounwind readonly + +; [#uses=1] +declare i32 @__gxx_personality_v0(...) + +; [#uses=1] +declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind + +; [#uses=0] +declare i32 @llvm.eh.typeid.for(i8*) nounwind + +; [#uses=1] +declare i8* @__cxa_begin_catch(i8*) + +; [#uses=1] +declare void @__cxa_end_catch() + +; [#uses=3] +define hidden void @_Z17luaD_reallocstackP9lua_Statei(%struct.lua_State* %L, i32 %newsize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca i32, align 4 ; [#uses=3] + %oldstack = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %realsize = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %newsize, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 10 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %oldstack, align 4 + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 1 ; [#uses=1] + %8 = add nsw i32 %7, 5 ; [#uses=1] + store i32 %8, i32* %realsize, align 4 + %9 = load i32* %realsize, align 4 ; [#uses=1] + %10 = add nsw i32 %9, 1 ; [#uses=1] + %11 = icmp ule i32 %10, 357913941 ; [#uses=1] + br i1 %11, label %12, label %25 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 10 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.lua_TValue* %16 to i8* ; [#uses=1] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 13 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = mul i32 %20, 12 ; [#uses=1] + %22 = load i32* %realsize, align 4 ; [#uses=1] + %23 = mul i32 %22, 12 ; [#uses=1] + %24 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %13, i8* %17, i32 %21, i32 %23) ; [#uses=1] + br label %28 + +; <label>:25 ; preds = %0 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %26) ; [#uses=1] + br label %28 + +; <label>:28 ; preds = %25, %12 + %29 = phi i8* [ %24, %12 ], [ %27, %25 ] ; [#uses=1] + %30 = bitcast i8* %29 to %struct.lua_TValue* ; [#uses=1] + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 10 ; [#uses=1] + store %struct.lua_TValue* %30, %struct.lua_TValue** %32, align 4 + %33 = load i32* %realsize, align 4 ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 13 ; [#uses=1] + store i32 %33, i32* %35, align 4 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_State* %36, i32 0, i32 10 ; [#uses=1] + %38 = load %struct.lua_TValue** %37, align 4 ; [#uses=1] + %39 = load i32* %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %38, i32 %39 ; [#uses=1] + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_State* %41, i32 0, i32 9 ; [#uses=1] + store %struct.lua_TValue* %40, %struct.lua_TValue** %42, align 4 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %oldstack, align 4 ; [#uses=1] + call void @_Z12correctstackP9lua_StateP10lua_TValue(%struct.lua_State* %43, %struct.lua_TValue* %44) + ret void +} + +; [#uses=1] +define internal void @_Z12correctstackP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %oldstack) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=14] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=10] + %up = alloca %union.GCObject*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %oldstack, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %7 = ptrtoint %struct.lua_TValue* %5 to i32 ; [#uses=1] + %8 = ptrtoint %struct.lua_TValue* %6 to i32 ; [#uses=1] + %9 = sub i32 %7, %8 ; [#uses=1] + %10 = sdiv exact i32 %9, 12 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 10 ; [#uses=1] + %13 = load %struct.lua_TValue** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 %10 ; [#uses=1] + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %14, %struct.lua_TValue** %16, align 4 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 24 ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + store %union.GCObject* %19, %union.GCObject** %up, align 4 + br label %20 + +; <label>:20 ; preds = %42, %0 + %21 = load %union.GCObject** %up, align 4 ; [#uses=1] + %22 = icmp ne %union.GCObject* %21, null ; [#uses=1] + br i1 %22, label %23, label %48 + +; <label>:23 ; preds = %20 + %24 = load %union.GCObject** %up, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.GCObject* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast %struct.lua_State* %25 to %struct.UpVal* ; [#uses=1] + %27 = getelementptr inbounds %struct.UpVal* %26, i32 0, i32 3 ; [#uses=1] + %28 = load %struct.lua_TValue** %27, align 4 ; [#uses=1] + %29 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %30 = ptrtoint %struct.lua_TValue* %28 to i32 ; [#uses=1] + %31 = ptrtoint %struct.lua_TValue* %29 to i32 ; [#uses=1] + %32 = sub i32 %30, %31 ; [#uses=1] + %33 = sdiv exact i32 %32, 12 ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 10 ; [#uses=1] + %36 = load %struct.lua_TValue** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 %33 ; [#uses=1] + %38 = load %union.GCObject** %up, align 4 ; [#uses=1] + %39 = getelementptr inbounds %union.GCObject* %38, i32 0, i32 0 ; [#uses=1] + %40 = bitcast %struct.lua_State* %39 to %struct.UpVal* ; [#uses=1] + %41 = getelementptr inbounds %struct.UpVal* %40, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %37, %struct.lua_TValue** %41, align 4 + br label %42 + +; <label>:42 ; preds = %23 + %43 = load %union.GCObject** %up, align 4 ; [#uses=1] + %44 = getelementptr inbounds %union.GCObject* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast %struct.lua_State* %44 to %struct.GCheader* ; [#uses=1] + %46 = getelementptr inbounds %struct.GCheader* %45, i32 0, i32 0 ; [#uses=1] + %47 = load %union.GCObject** %46, align 4 ; [#uses=1] + store %union.GCObject* %47, %union.GCObject** %up, align 4 + br label %20 + +; <label>:48 ; preds = %20 + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 12 ; [#uses=1] + %51 = load %struct.CallInfo** %50, align 4 ; [#uses=1] + store %struct.CallInfo* %51, %struct.CallInfo** %ci, align 4 + br label %52 + +; <label>:52 ; preds = %101, %48 + %53 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 7 ; [#uses=1] + %56 = load %struct.CallInfo** %55, align 4 ; [#uses=1] + %57 = icmp ule %struct.CallInfo* %53, %56 ; [#uses=1] + br i1 %57, label %58, label %104 + +; <label>:58 ; preds = %52 + %59 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.CallInfo* %59, i32 0, i32 2 ; [#uses=1] + %61 = load %struct.lua_TValue** %60, align 4 ; [#uses=1] + %62 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %63 = ptrtoint %struct.lua_TValue* %61 to i32 ; [#uses=1] + %64 = ptrtoint %struct.lua_TValue* %62 to i32 ; [#uses=1] + %65 = sub i32 %63, %64 ; [#uses=1] + %66 = sdiv exact i32 %65, 12 ; [#uses=1] + %67 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_State* %67, i32 0, i32 10 ; [#uses=1] + %69 = load %struct.lua_TValue** %68, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 %66 ; [#uses=1] + %71 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.CallInfo* %71, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %70, %struct.lua_TValue** %72, align 4 + %73 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.CallInfo* %73, i32 0, i32 0 ; [#uses=1] + %75 = load %struct.lua_TValue** %74, align 4 ; [#uses=1] + %76 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %77 = ptrtoint %struct.lua_TValue* %75 to i32 ; [#uses=1] + %78 = ptrtoint %struct.lua_TValue* %76 to i32 ; [#uses=1] + %79 = sub i32 %77, %78 ; [#uses=1] + %80 = sdiv exact i32 %79, 12 ; [#uses=1] + %81 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_State* %81, i32 0, i32 10 ; [#uses=1] + %83 = load %struct.lua_TValue** %82, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_TValue* %83, i32 %80 ; [#uses=1] + %85 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.CallInfo* %85, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %84, %struct.lua_TValue** %86, align 4 + %87 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.CallInfo* %87, i32 0, i32 1 ; [#uses=1] + %89 = load %struct.lua_TValue** %88, align 4 ; [#uses=1] + %90 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %91 = ptrtoint %struct.lua_TValue* %89 to i32 ; [#uses=1] + %92 = ptrtoint %struct.lua_TValue* %90 to i32 ; [#uses=1] + %93 = sub i32 %91, %92 ; [#uses=1] + %94 = sdiv exact i32 %93, 12 ; [#uses=1] + %95 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.lua_State* %95, i32 0, i32 10 ; [#uses=1] + %97 = load %struct.lua_TValue** %96, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.lua_TValue* %97, i32 %94 ; [#uses=1] + %99 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.CallInfo* %99, i32 0, i32 1 ; [#uses=1] + store %struct.lua_TValue* %98, %struct.lua_TValue** %100, align 4 + br label %101 + +; <label>:101 ; preds = %58 + %102 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.CallInfo* %102, i32 1 ; [#uses=1] + store %struct.CallInfo* %103, %struct.CallInfo** %ci, align 4 + br label %52 + +; <label>:104 ; preds = %52 + %105 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.lua_State* %105, i32 0, i32 5 ; [#uses=1] + %107 = load %struct.lua_TValue** %106, align 4 ; [#uses=1] + %108 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %109 = ptrtoint %struct.lua_TValue* %107 to i32 ; [#uses=1] + %110 = ptrtoint %struct.lua_TValue* %108 to i32 ; [#uses=1] + %111 = sub i32 %109, %110 ; [#uses=1] + %112 = sdiv exact i32 %111, 12 ; [#uses=1] + %113 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.lua_State* %113, i32 0, i32 10 ; [#uses=1] + %115 = load %struct.lua_TValue** %114, align 4 ; [#uses=1] + %116 = getelementptr inbounds %struct.lua_TValue* %115, i32 %112 ; [#uses=1] + %117 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %118 = getelementptr inbounds %struct.lua_State* %117, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %116, %struct.lua_TValue** %118, align 4 + ret void +} + +; [#uses=3] +define hidden void @_Z14luaD_reallocCIP9lua_Statei(%struct.lua_State* %L, i32 %newsize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=14] + %2 = alloca i32, align 4 ; [#uses=4] + %oldci = alloca %struct.CallInfo*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %newsize, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 12 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + store %struct.CallInfo* %5, %struct.CallInfo** %oldci, align 4 + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 1 ; [#uses=1] + %8 = icmp ule i32 %7, 178956970 ; [#uses=1] + br i1 %8, label %9, label %22 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 12 ; [#uses=1] + %13 = load %struct.CallInfo** %12, align 4 ; [#uses=1] + %14 = bitcast %struct.CallInfo* %13 to i8* ; [#uses=1] + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 14 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = mul i32 %17, 24 ; [#uses=1] + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = mul i32 %19, 24 ; [#uses=1] + %21 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %10, i8* %14, i32 %18, i32 %20) ; [#uses=1] + br label %25 + +; <label>:22 ; preds = %0 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %23) ; [#uses=1] + br label %25 + +; <label>:25 ; preds = %22, %9 + %26 = phi i8* [ %21, %9 ], [ %24, %22 ] ; [#uses=1] + %27 = bitcast i8* %26 to %struct.CallInfo* ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 12 ; [#uses=1] + store %struct.CallInfo* %27, %struct.CallInfo** %29, align 4 + %30 = load i32* %2, align 4 ; [#uses=1] + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 14 ; [#uses=1] + store i32 %30, i32* %32, align 4 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 7 ; [#uses=1] + %35 = load %struct.CallInfo** %34, align 4 ; [#uses=1] + %36 = load %struct.CallInfo** %oldci, align 4 ; [#uses=1] + %37 = ptrtoint %struct.CallInfo* %35 to i32 ; [#uses=1] + %38 = ptrtoint %struct.CallInfo* %36 to i32 ; [#uses=1] + %39 = sub i32 %37, %38 ; [#uses=1] + %40 = sdiv exact i32 %39, 24 ; [#uses=1] + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_State* %41, i32 0, i32 12 ; [#uses=1] + %43 = load %struct.CallInfo** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.CallInfo* %43, i32 %40 ; [#uses=1] + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_State* %45, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* %44, %struct.CallInfo** %46, align 4 + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 12 ; [#uses=1] + %49 = load %struct.CallInfo** %48, align 4 ; [#uses=1] + %50 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_State* %50, i32 0, i32 14 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.CallInfo* %49, i32 %52 ; [#uses=1] + %54 = getelementptr inbounds %struct.CallInfo* %53, i32 -1 ; [#uses=1] + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 11 ; [#uses=1] + store %struct.CallInfo* %54, %struct.CallInfo** %56, align 4 + ret void +} + +; [#uses=20] +define hidden void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %L, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %n, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 13 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp sle i32 %3, %6 ; [#uses=1] + br i1 %7, label %8, label %14 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 13 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = mul nsw i32 2, %12 ; [#uses=1] + call void @_Z17luaD_reallocstackP9lua_Statei(%struct.lua_State* %9, i32 %13) + br label %21 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 13 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = add nsw i32 %18, %19 ; [#uses=1] + call void @_Z17luaD_reallocstackP9lua_Statei(%struct.lua_State* %15, i32 %20) + br label %21 + +; <label>:21 ; preds = %14, %8 + ret void +} + +; [#uses=6] +define hidden void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %L, i32 %event, i32 %line) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=21] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %hook = alloca void (%struct.lua_State*, %struct.lua_Debug*)*, align 4 ; [#uses=3] + %top = alloca i32, align 4 ; [#uses=2] + %ci_top = alloca i32, align 4 ; [#uses=2] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %event, i32* %2, align 4 + store i32 %line, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 21 ; [#uses=1] + %6 = load void (%struct.lua_State*, %struct.lua_Debug*)** %5, align 4 ; [#uses=1] + store void (%struct.lua_State*, %struct.lua_Debug*)* %6, void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 + %7 = load void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 ; [#uses=1] + %8 = icmp ne void (%struct.lua_State*, %struct.lua_Debug*)* %7, null ; [#uses=1] + br i1 %8, label %9, label %110 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 18 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = icmp ne i8 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %110 + +; <label>:14 ; preds = %9 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + %18 = bitcast %struct.lua_TValue* %17 to i8* ; [#uses=1] + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 10 ; [#uses=1] + %21 = load %struct.lua_TValue** %20, align 4 ; [#uses=1] + %22 = bitcast %struct.lua_TValue* %21 to i8* ; [#uses=1] + %23 = ptrtoint i8* %18 to i32 ; [#uses=1] + %24 = ptrtoint i8* %22 to i32 ; [#uses=1] + %25 = sub i32 %23, %24 ; [#uses=1] + store i32 %25, i32* %top, align 4 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_State* %26, i32 0, i32 7 ; [#uses=1] + %28 = load %struct.CallInfo** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.CallInfo* %28, i32 0, i32 2 ; [#uses=1] + %30 = load %struct.lua_TValue** %29, align 4 ; [#uses=1] + %31 = bitcast %struct.lua_TValue* %30 to i8* ; [#uses=1] + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 10 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = bitcast %struct.lua_TValue* %34 to i8* ; [#uses=1] + %36 = ptrtoint i8* %31 to i32 ; [#uses=1] + %37 = ptrtoint i8* %35 to i32 ; [#uses=1] + %38 = sub i32 %36, %37 ; [#uses=1] + store i32 %38, i32* %ci_top, align 4 + %39 = load i32* %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 0 ; [#uses=1] + store i32 %39, i32* %40, align 4 + %41 = load i32* %3, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + store i32 %41, i32* %42, align 4 + %43 = load i32* %2, align 4 ; [#uses=1] + %44 = icmp eq i32 %43, 4 ; [#uses=1] + br i1 %44, label %45, label %47 + +; <label>:45 ; preds = %14 + %46 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 10 ; [#uses=1] + store i32 0, i32* %46, align 4 + br label %59 + +; <label>:47 ; preds = %14 + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 7 ; [#uses=1] + %50 = load %struct.CallInfo** %49, align 4 ; [#uses=1] + %51 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_State* %51, i32 0, i32 12 ; [#uses=1] + %53 = load %struct.CallInfo** %52, align 4 ; [#uses=1] + %54 = ptrtoint %struct.CallInfo* %50 to i32 ; [#uses=1] + %55 = ptrtoint %struct.CallInfo* %53 to i32 ; [#uses=1] + %56 = sub i32 %54, %55 ; [#uses=1] + %57 = sdiv exact i32 %56, 24 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 10 ; [#uses=1] + store i32 %57, i32* %58, align 4 + br label %59 + +; <label>:59 ; preds = %47, %45 + %60 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 9 ; [#uses=1] + %62 = load %struct.lua_TValue** %61, align 4 ; [#uses=1] + %63 = bitcast %struct.lua_TValue* %62 to i8* ; [#uses=1] + %64 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_State* %64, i32 0, i32 4 ; [#uses=1] + %66 = load %struct.lua_TValue** %65, align 4 ; [#uses=1] + %67 = bitcast %struct.lua_TValue* %66 to i8* ; [#uses=1] + %68 = ptrtoint i8* %63 to i32 ; [#uses=1] + %69 = ptrtoint i8* %67 to i32 ; [#uses=1] + %70 = sub i32 %68, %69 ; [#uses=1] + %71 = icmp sle i32 %70, 240 ; [#uses=1] + br i1 %71, label %72, label %74 + +; <label>:72 ; preds = %59 + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %73, i32 20) + br label %75 + +; <label>:74 ; preds = %59 + br label %75 + +; <label>:75 ; preds = %74, %72 + %76 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_State* %76, i32 0, i32 4 ; [#uses=1] + %78 = load %struct.lua_TValue** %77, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 20 ; [#uses=1] + %80 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_State* %80, i32 0, i32 7 ; [#uses=1] + %82 = load %struct.CallInfo** %81, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.CallInfo* %82, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %79, %struct.lua_TValue** %83, align 4 + %84 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_State* %84, i32 0, i32 18 ; [#uses=1] + store i8 0, i8* %85, align 1 + %86 = load void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 ; [#uses=1] + %87 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void %86(%struct.lua_State* %87, %struct.lua_Debug* %ar) + %88 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.lua_State* %88, i32 0, i32 18 ; [#uses=1] + store i8 1, i8* %89, align 1 + %90 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.lua_State* %90, i32 0, i32 10 ; [#uses=1] + %92 = load %struct.lua_TValue** %91, align 4 ; [#uses=1] + %93 = bitcast %struct.lua_TValue* %92 to i8* ; [#uses=1] + %94 = load i32* %ci_top, align 4 ; [#uses=1] + %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] + %96 = bitcast i8* %95 to %struct.lua_TValue* ; [#uses=1] + %97 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.lua_State* %97, i32 0, i32 7 ; [#uses=1] + %99 = load %struct.CallInfo** %98, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.CallInfo* %99, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %96, %struct.lua_TValue** %100, align 4 + %101 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.lua_State* %101, i32 0, i32 10 ; [#uses=1] + %103 = load %struct.lua_TValue** %102, align 4 ; [#uses=1] + %104 = bitcast %struct.lua_TValue* %103 to i8* ; [#uses=1] + %105 = load i32* %top, align 4 ; [#uses=1] + %106 = getelementptr inbounds i8* %104, i32 %105 ; [#uses=1] + %107 = bitcast i8* %106 to %struct.lua_TValue* ; [#uses=1] + %108 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_State* %108, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %107, %struct.lua_TValue** %109, align 4 + br label %110 + +; <label>:110 ; preds = %75, %9, %0 + ret void +} + +; [#uses=4] +define hidden i32 @_Z12luaD_precallP9lua_StateP10lua_TValuei(%struct.lua_State* %L, %struct.lua_TValue* %func, i32 %nresults) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=43] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=11] + %4 = alloca i32, align 4 ; [#uses=3] + %cl = alloca %struct.LClosure*, align 4 ; [#uses=3] + %funcr = alloca i32, align 4 ; [#uses=4] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=8] + %st = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %base = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %p = alloca %struct.Proto*, align 4 ; [#uses=9] + %nargs = alloca i32, align 4 ; [#uses=2] + %ci1 = alloca %struct.CallInfo*, align 4 ; [#uses=6] + %n = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %func, %struct.lua_TValue** %3, align 4 + store i32 %nresults, i32* %4, align 4 + %5 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 6 ; [#uses=1] + br i1 %8, label %13, label %9 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %12 = call %struct.lua_TValue* @_Z9tryfuncTMP9lua_StateP10lua_TValue(%struct.lua_State* %10, %struct.lua_TValue* %11) ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %3, align 4 + br label %13 + +; <label>:13 ; preds = %9, %0 + %14 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %15 = bitcast %struct.lua_TValue* %14 to i8* ; [#uses=1] + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 10 ; [#uses=1] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + %19 = bitcast %struct.lua_TValue* %18 to i8* ; [#uses=1] + %20 = ptrtoint i8* %15 to i32 ; [#uses=1] + %21 = ptrtoint i8* %19 to i32 ; [#uses=1] + %22 = sub i32 %20, %21 ; [#uses=1] + store i32 %22, i32* %funcr, align 4 + %23 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = bitcast double* %25 to %union.GCObject** ; [#uses=1] + %27 = load %union.GCObject** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %union.GCObject* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast %struct.lua_State* %28 to %union.Closure* ; [#uses=1] + %30 = getelementptr inbounds %union.Closure* %29, i32 0, i32 0 ; [#uses=1] + %31 = bitcast %struct.CClosure* %30 to %struct.LClosure* ; [#uses=1] + store %struct.LClosure* %31, %struct.LClosure** %cl, align 4 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 8 ; [#uses=1] + %34 = load i32** %33, align 4 ; [#uses=1] + %35 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 7 ; [#uses=1] + %37 = load %struct.CallInfo** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.CallInfo* %37, i32 0, i32 3 ; [#uses=1] + store i32* %34, i32** %38, align 4 + %39 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.LClosure* %39, i32 0, i32 3 ; [#uses=1] + %41 = load i8* %40, align 1 ; [#uses=1] + %42 = icmp ne i8 %41, 0 ; [#uses=1] + br i1 %42, label %211, label %43 + +; <label>:43 ; preds = %13 + %44 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.LClosure* %44, i32 0, i32 7 ; [#uses=1] + %46 = load %struct.Proto** %45, align 4 ; [#uses=1] + store %struct.Proto* %46, %struct.Proto** %p, align 4 + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 9 ; [#uses=1] + %49 = load %struct.lua_TValue** %48, align 4 ; [#uses=1] + %50 = bitcast %struct.lua_TValue* %49 to i8* ; [#uses=1] + %51 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_State* %51, i32 0, i32 4 ; [#uses=1] + %53 = load %struct.lua_TValue** %52, align 4 ; [#uses=1] + %54 = bitcast %struct.lua_TValue* %53 to i8* ; [#uses=1] + %55 = ptrtoint i8* %50 to i32 ; [#uses=1] + %56 = ptrtoint i8* %54 to i32 ; [#uses=1] + %57 = sub i32 %55, %56 ; [#uses=1] + %58 = load %struct.Proto** %p, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Proto* %58, i32 0, i32 22 ; [#uses=1] + %60 = load i8* %59, align 1 ; [#uses=1] + %61 = zext i8 %60 to i32 ; [#uses=1] + %62 = mul nsw i32 %61, 12 ; [#uses=1] + %63 = icmp sle i32 %57, %62 ; [#uses=1] + br i1 %63, label %64, label %70 + +; <label>:64 ; preds = %43 + %65 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %66 = load %struct.Proto** %p, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Proto* %66, i32 0, i32 22 ; [#uses=1] + %68 = load i8* %67, align 1 ; [#uses=1] + %69 = zext i8 %68 to i32 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %65, i32 %69) + br label %71 + +; <label>:70 ; preds = %43 + br label %71 + +; <label>:71 ; preds = %70, %64 + %72 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_State* %72, i32 0, i32 10 ; [#uses=1] + %74 = load %struct.lua_TValue** %73, align 4 ; [#uses=1] + %75 = bitcast %struct.lua_TValue* %74 to i8* ; [#uses=1] + %76 = load i32* %funcr, align 4 ; [#uses=1] + %77 = getelementptr inbounds i8* %75, i32 %76 ; [#uses=1] + %78 = bitcast i8* %77 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %78, %struct.lua_TValue** %3, align 4 + %79 = load %struct.Proto** %p, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.Proto* %79, i32 0, i32 21 ; [#uses=1] + %81 = load i8* %80, align 1 ; [#uses=1] + %82 = icmp ne i8 %81, 0 ; [#uses=1] + br i1 %82, label %106, label %83 + +; <label>:83 ; preds = %71 + %84 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_TValue* %84, i32 1 ; [#uses=1] + store %struct.lua_TValue* %85, %struct.lua_TValue** %base, align 4 + %86 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_State* %86, i32 0, i32 4 ; [#uses=1] + %88 = load %struct.lua_TValue** %87, align 4 ; [#uses=1] + %89 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %90 = load %struct.Proto** %p, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.Proto* %90, i32 0, i32 20 ; [#uses=1] + %92 = load i8* %91, align 1 ; [#uses=1] + %93 = zext i8 %92 to i32 ; [#uses=1] + %94 = getelementptr inbounds %struct.lua_TValue* %89, i32 %93 ; [#uses=1] + %95 = icmp ugt %struct.lua_TValue* %88, %94 ; [#uses=1] + br i1 %95, label %96, label %105 + +; <label>:96 ; preds = %83 + %97 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %98 = load %struct.Proto** %p, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.Proto* %98, i32 0, i32 20 ; [#uses=1] + %100 = load i8* %99, align 1 ; [#uses=1] + %101 = zext i8 %100 to i32 ; [#uses=1] + %102 = getelementptr inbounds %struct.lua_TValue* %97, i32 %101 ; [#uses=1] + %103 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %104 = getelementptr inbounds %struct.lua_State* %103, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %102, %struct.lua_TValue** %104, align 4 + br label %105 + +; <label>:105 ; preds = %96, %83 + br label %127 + +; <label>:106 ; preds = %71 + %107 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.lua_State* %107, i32 0, i32 4 ; [#uses=1] + %109 = load %struct.lua_TValue** %108, align 4 ; [#uses=1] + %110 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %111 = ptrtoint %struct.lua_TValue* %109 to i32 ; [#uses=1] + %112 = ptrtoint %struct.lua_TValue* %110 to i32 ; [#uses=1] + %113 = sub i32 %111, %112 ; [#uses=1] + %114 = sdiv exact i32 %113, 12 ; [#uses=1] + %115 = sub nsw i32 %114, 1 ; [#uses=1] + store i32 %115, i32* %nargs, align 4 + %116 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %117 = load %struct.Proto** %p, align 4 ; [#uses=1] + %118 = load i32* %nargs, align 4 ; [#uses=1] + %119 = call %struct.lua_TValue* @_Z14adjust_varargsP9lua_StateP5Protoi(%struct.lua_State* %116, %struct.Proto* %117, i32 %118) ; [#uses=1] + store %struct.lua_TValue* %119, %struct.lua_TValue** %base, align 4 + %120 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_State* %120, i32 0, i32 10 ; [#uses=1] + %122 = load %struct.lua_TValue** %121, align 4 ; [#uses=1] + %123 = bitcast %struct.lua_TValue* %122 to i8* ; [#uses=1] + %124 = load i32* %funcr, align 4 ; [#uses=1] + %125 = getelementptr inbounds i8* %123, i32 %124 ; [#uses=1] + %126 = bitcast i8* %125 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %126, %struct.lua_TValue** %3, align 4 + br label %127 + +; <label>:127 ; preds = %106, %105 + %128 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.lua_State* %128, i32 0, i32 7 ; [#uses=1] + %130 = load %struct.CallInfo** %129, align 4 ; [#uses=1] + %131 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.lua_State* %131, i32 0, i32 11 ; [#uses=1] + %133 = load %struct.CallInfo** %132, align 4 ; [#uses=1] + %134 = icmp eq %struct.CallInfo* %130, %133 ; [#uses=1] + br i1 %134, label %135, label %138 + +; <label>:135 ; preds = %127 + %136 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %137 = call %struct.CallInfo* @_Z6growCIP9lua_State(%struct.lua_State* %136) ; [#uses=1] + br label %143 + +; <label>:138 ; preds = %127 + %139 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %140 = getelementptr inbounds %struct.lua_State* %139, i32 0, i32 7 ; [#uses=2] + %141 = load %struct.CallInfo** %140, align 4 ; [#uses=1] + %142 = getelementptr inbounds %struct.CallInfo* %141, i32 1 ; [#uses=2] + store %struct.CallInfo* %142, %struct.CallInfo** %140, align 4 + br label %143 + +; <label>:143 ; preds = %138, %135 + %144 = phi %struct.CallInfo* [ %137, %135 ], [ %142, %138 ] ; [#uses=1] + store %struct.CallInfo* %144, %struct.CallInfo** %ci, align 4 + %145 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %146 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %147 = getelementptr inbounds %struct.CallInfo* %146, i32 0, i32 1 ; [#uses=1] + store %struct.lua_TValue* %145, %struct.lua_TValue** %147, align 4 + %148 = load %struct.lua_TValue** %base, align 4 ; [#uses=2] + %149 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %150 = getelementptr inbounds %struct.CallInfo* %149, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %148, %struct.lua_TValue** %150, align 4 + %151 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %152 = getelementptr inbounds %struct.lua_State* %151, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %148, %struct.lua_TValue** %152, align 4 + %153 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %154 = getelementptr inbounds %struct.lua_State* %153, i32 0, i32 5 ; [#uses=1] + %155 = load %struct.lua_TValue** %154, align 4 ; [#uses=1] + %156 = load %struct.Proto** %p, align 4 ; [#uses=1] + %157 = getelementptr inbounds %struct.Proto* %156, i32 0, i32 22 ; [#uses=1] + %158 = load i8* %157, align 1 ; [#uses=1] + %159 = zext i8 %158 to i32 ; [#uses=1] + %160 = getelementptr inbounds %struct.lua_TValue* %155, i32 %159 ; [#uses=1] + %161 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.CallInfo* %161, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %160, %struct.lua_TValue** %162, align 4 + %163 = load %struct.Proto** %p, align 4 ; [#uses=1] + %164 = getelementptr inbounds %struct.Proto* %163, i32 0, i32 4 ; [#uses=1] + %165 = load i32** %164, align 4 ; [#uses=1] + %166 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %167 = getelementptr inbounds %struct.lua_State* %166, i32 0, i32 8 ; [#uses=1] + store i32* %165, i32** %167, align 4 + %168 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %169 = getelementptr inbounds %struct.CallInfo* %168, i32 0, i32 5 ; [#uses=1] + store i32 0, i32* %169, align 4 + %170 = load i32* %4, align 4 ; [#uses=1] + %171 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %172 = getelementptr inbounds %struct.CallInfo* %171, i32 0, i32 4 ; [#uses=1] + store i32 %170, i32* %172, align 4 + %173 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %174 = getelementptr inbounds %struct.lua_State* %173, i32 0, i32 4 ; [#uses=1] + %175 = load %struct.lua_TValue** %174, align 4 ; [#uses=1] + store %struct.lua_TValue* %175, %struct.lua_TValue** %st, align 4 + br label %176 + +; <label>:176 ; preds = %185, %143 + %177 = load %struct.lua_TValue** %st, align 4 ; [#uses=1] + %178 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %179 = getelementptr inbounds %struct.CallInfo* %178, i32 0, i32 2 ; [#uses=1] + %180 = load %struct.lua_TValue** %179, align 4 ; [#uses=1] + %181 = icmp ult %struct.lua_TValue* %177, %180 ; [#uses=1] + br i1 %181, label %182, label %188 + +; <label>:182 ; preds = %176 + %183 = load %struct.lua_TValue** %st, align 4 ; [#uses=1] + %184 = getelementptr inbounds %struct.lua_TValue* %183, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %184, align 4 + br label %185 + +; <label>:185 ; preds = %182 + %186 = load %struct.lua_TValue** %st, align 4 ; [#uses=1] + %187 = getelementptr inbounds %struct.lua_TValue* %186, i32 1 ; [#uses=1] + store %struct.lua_TValue* %187, %struct.lua_TValue** %st, align 4 + br label %176 + +; <label>:188 ; preds = %176 + %189 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %190 = getelementptr inbounds %struct.CallInfo* %189, i32 0, i32 2 ; [#uses=1] + %191 = load %struct.lua_TValue** %190, align 4 ; [#uses=1] + %192 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %193 = getelementptr inbounds %struct.lua_State* %192, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %191, %struct.lua_TValue** %193, align 4 + %194 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %195 = getelementptr inbounds %struct.lua_State* %194, i32 0, i32 17 ; [#uses=1] + %196 = load i8* %195, align 1 ; [#uses=1] + %197 = zext i8 %196 to i32 ; [#uses=1] + %198 = and i32 %197, 1 ; [#uses=1] + %199 = icmp ne i32 %198, 0 ; [#uses=1] + br i1 %199, label %200, label %210 + +; <label>:200 ; preds = %188 + %201 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %202 = getelementptr inbounds %struct.lua_State* %201, i32 0, i32 8 ; [#uses=2] + %203 = load i32** %202, align 4 ; [#uses=1] + %204 = getelementptr inbounds i32* %203, i32 1 ; [#uses=1] + store i32* %204, i32** %202, align 4 + %205 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %205, i32 0, i32 -1) + %206 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %207 = getelementptr inbounds %struct.lua_State* %206, i32 0, i32 8 ; [#uses=2] + %208 = load i32** %207, align 4 ; [#uses=1] + %209 = getelementptr inbounds i32* %208, i32 -1 ; [#uses=1] + store i32* %209, i32** %207, align 4 + br label %210 + +; <label>:210 ; preds = %200, %188 + store i32 0, i32* %1 + br label %308 + +; <label>:211 ; preds = %13 + %212 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %213 = getelementptr inbounds %struct.lua_State* %212, i32 0, i32 9 ; [#uses=1] + %214 = load %struct.lua_TValue** %213, align 4 ; [#uses=1] + %215 = bitcast %struct.lua_TValue* %214 to i8* ; [#uses=1] + %216 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %217 = getelementptr inbounds %struct.lua_State* %216, i32 0, i32 4 ; [#uses=1] + %218 = load %struct.lua_TValue** %217, align 4 ; [#uses=1] + %219 = bitcast %struct.lua_TValue* %218 to i8* ; [#uses=1] + %220 = ptrtoint i8* %215 to i32 ; [#uses=1] + %221 = ptrtoint i8* %219 to i32 ; [#uses=1] + %222 = sub i32 %220, %221 ; [#uses=1] + %223 = icmp sle i32 %222, 240 ; [#uses=1] + br i1 %223, label %224, label %226 + +; <label>:224 ; preds = %211 + %225 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %225, i32 20) + br label %227 + +; <label>:226 ; preds = %211 + br label %227 + +; <label>:227 ; preds = %226, %224 + %228 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %229 = getelementptr inbounds %struct.lua_State* %228, i32 0, i32 7 ; [#uses=1] + %230 = load %struct.CallInfo** %229, align 4 ; [#uses=1] + %231 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %232 = getelementptr inbounds %struct.lua_State* %231, i32 0, i32 11 ; [#uses=1] + %233 = load %struct.CallInfo** %232, align 4 ; [#uses=1] + %234 = icmp eq %struct.CallInfo* %230, %233 ; [#uses=1] + br i1 %234, label %235, label %238 + +; <label>:235 ; preds = %227 + %236 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %237 = call %struct.CallInfo* @_Z6growCIP9lua_State(%struct.lua_State* %236) ; [#uses=1] + br label %243 + +; <label>:238 ; preds = %227 + %239 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %240 = getelementptr inbounds %struct.lua_State* %239, i32 0, i32 7 ; [#uses=2] + %241 = load %struct.CallInfo** %240, align 4 ; [#uses=1] + %242 = getelementptr inbounds %struct.CallInfo* %241, i32 1 ; [#uses=2] + store %struct.CallInfo* %242, %struct.CallInfo** %240, align 4 + br label %243 + +; <label>:243 ; preds = %238, %235 + %244 = phi %struct.CallInfo* [ %237, %235 ], [ %242, %238 ] ; [#uses=1] + store %struct.CallInfo* %244, %struct.CallInfo** %ci1, align 4 + %245 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %246 = getelementptr inbounds %struct.lua_State* %245, i32 0, i32 10 ; [#uses=1] + %247 = load %struct.lua_TValue** %246, align 4 ; [#uses=1] + %248 = bitcast %struct.lua_TValue* %247 to i8* ; [#uses=1] + %249 = load i32* %funcr, align 4 ; [#uses=1] + %250 = getelementptr inbounds i8* %248, i32 %249 ; [#uses=1] + %251 = bitcast i8* %250 to %struct.lua_TValue* ; [#uses=1] + %252 = load %struct.CallInfo** %ci1, align 4 ; [#uses=1] + %253 = getelementptr inbounds %struct.CallInfo* %252, i32 0, i32 1 ; [#uses=1] + store %struct.lua_TValue* %251, %struct.lua_TValue** %253, align 4 + %254 = load %struct.CallInfo** %ci1, align 4 ; [#uses=1] + %255 = getelementptr inbounds %struct.CallInfo* %254, i32 0, i32 1 ; [#uses=1] + %256 = load %struct.lua_TValue** %255, align 4 ; [#uses=1] + %257 = getelementptr inbounds %struct.lua_TValue* %256, i32 1 ; [#uses=2] + %258 = load %struct.CallInfo** %ci1, align 4 ; [#uses=1] + %259 = getelementptr inbounds %struct.CallInfo* %258, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %257, %struct.lua_TValue** %259, align 4 + %260 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %261 = getelementptr inbounds %struct.lua_State* %260, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %257, %struct.lua_TValue** %261, align 4 + %262 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %263 = getelementptr inbounds %struct.lua_State* %262, i32 0, i32 4 ; [#uses=1] + %264 = load %struct.lua_TValue** %263, align 4 ; [#uses=1] + %265 = getelementptr inbounds %struct.lua_TValue* %264, i32 20 ; [#uses=1] + %266 = load %struct.CallInfo** %ci1, align 4 ; [#uses=1] + %267 = getelementptr inbounds %struct.CallInfo* %266, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %265, %struct.lua_TValue** %267, align 4 + %268 = load i32* %4, align 4 ; [#uses=1] + %269 = load %struct.CallInfo** %ci1, align 4 ; [#uses=1] + %270 = getelementptr inbounds %struct.CallInfo* %269, i32 0, i32 4 ; [#uses=1] + store i32 %268, i32* %270, align 4 + %271 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %272 = getelementptr inbounds %struct.lua_State* %271, i32 0, i32 17 ; [#uses=1] + %273 = load i8* %272, align 1 ; [#uses=1] + %274 = zext i8 %273 to i32 ; [#uses=1] + %275 = and i32 %274, 1 ; [#uses=1] + %276 = icmp ne i32 %275, 0 ; [#uses=1] + br i1 %276, label %277, label %279 + +; <label>:277 ; preds = %243 + %278 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %278, i32 0, i32 -1) + br label %279 + +; <label>:279 ; preds = %277, %243 + %280 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %281 = getelementptr inbounds %struct.lua_State* %280, i32 0, i32 7 ; [#uses=1] + %282 = load %struct.CallInfo** %281, align 4 ; [#uses=1] + %283 = getelementptr inbounds %struct.CallInfo* %282, i32 0, i32 1 ; [#uses=1] + %284 = load %struct.lua_TValue** %283, align 4 ; [#uses=1] + %285 = getelementptr inbounds %struct.lua_TValue* %284, i32 0, i32 0 ; [#uses=1] + %286 = getelementptr inbounds %union.anon* %285, i32 0, i32 0 ; [#uses=1] + %287 = bitcast double* %286 to %union.GCObject** ; [#uses=1] + %288 = load %union.GCObject** %287, align 4 ; [#uses=1] + %289 = getelementptr inbounds %union.GCObject* %288, i32 0, i32 0 ; [#uses=1] + %290 = bitcast %struct.lua_State* %289 to %union.Closure* ; [#uses=1] + %291 = getelementptr inbounds %union.Closure* %290, i32 0, i32 0 ; [#uses=1] + %292 = getelementptr inbounds %struct.CClosure* %291, i32 0, i32 7 ; [#uses=1] + %293 = load i32 (%struct.lua_State*)** %292, align 4 ; [#uses=1] + %294 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %295 = call i32 %293(%struct.lua_State* %294) ; [#uses=1] + store i32 %295, i32* %n, align 4 + %296 = load i32* %n, align 4 ; [#uses=1] + %297 = icmp slt i32 %296, 0 ; [#uses=1] + br i1 %297, label %298, label %299 + +; <label>:298 ; preds = %279 + store i32 2, i32* %1 + br label %308 + +; <label>:299 ; preds = %279 + %300 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %301 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %302 = getelementptr inbounds %struct.lua_State* %301, i32 0, i32 4 ; [#uses=1] + %303 = load %struct.lua_TValue** %302, align 4 ; [#uses=1] + %304 = load i32* %n, align 4 ; [#uses=1] + %305 = sub i32 0, %304 ; [#uses=1] + %306 = getelementptr inbounds %struct.lua_TValue* %303, i32 %305 ; [#uses=1] + %307 = call i32 @_Z12luaD_poscallP9lua_StateP10lua_TValue(%struct.lua_State* %300, %struct.lua_TValue* %306) ; [#uses=0] + store i32 1, i32* %1 + br label %308 + +; <label>:308 ; preds = %299, %298, %210 + %309 = load i32* %1 ; [#uses=1] + ret i32 %309 +} + +; [#uses=1] +define internal %struct.lua_TValue* @_Z9tryfuncTMP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %func) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=8] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %funcr = alloca i32, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %func, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %3, %struct.lua_TValue* %4, i32 16) ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %tm, align 4 + %6 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %7 = bitcast %struct.lua_TValue* %6 to i8* ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 10 ; [#uses=1] + %10 = load %struct.lua_TValue** %9, align 4 ; [#uses=1] + %11 = bitcast %struct.lua_TValue* %10 to i8* ; [#uses=1] + %12 = ptrtoint i8* %7 to i32 ; [#uses=1] + %13 = ptrtoint i8* %11 to i32 ; [#uses=1] + %14 = sub i32 %12, %13 ; [#uses=1] + store i32 %14, i32* %funcr, align 4 + %15 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 1 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 6 ; [#uses=1] + br i1 %18, label %22, label %19 + +; <label>:19 ; preds = %0 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %20, %struct.lua_TValue* %21, i8* getelementptr inbounds ([5 x i8]* @.str829, i32 0, i32 0)) + br label %22 + +; <label>:22 ; preds = %19, %0 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 4 ; [#uses=1] + %25 = load %struct.lua_TValue** %24, align 4 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %p, align 4 + br label %26 + +; <label>:26 ; preds = %45, %22 + %27 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %29 = icmp ugt %struct.lua_TValue* %27, %28 ; [#uses=1] + br i1 %29, label %30, label %48 + +; <label>:30 ; preds = %26 + %31 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %32, %struct.lua_TValue** %o2, align 4 + %33 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %33, %struct.lua_TValue** %o1, align 4 + %34 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 0 ; [#uses=1] + %36 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 0, i32 0 ; [#uses=1] + %38 = bitcast %union.anon* %35 to i8* ; [#uses=1] + %39 = bitcast %union.anon* %37 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %38, i8* %39, i32 8, i32 4, i1 false) + %40 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 1 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 0, i32 1 ; [#uses=1] + store i32 %42, i32* %44, align 4 + br label %45 + +; <label>:45 ; preds = %30 + %46 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_TValue* %46, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %47, %struct.lua_TValue** %p, align 4 + br label %26 + +; <label>:48 ; preds = %26 + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 9 ; [#uses=1] + %51 = load %struct.lua_TValue** %50, align 4 ; [#uses=1] + %52 = bitcast %struct.lua_TValue* %51 to i8* ; [#uses=1] + %53 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.lua_State* %53, i32 0, i32 4 ; [#uses=1] + %55 = load %struct.lua_TValue** %54, align 4 ; [#uses=1] + %56 = bitcast %struct.lua_TValue* %55 to i8* ; [#uses=1] + %57 = ptrtoint i8* %52 to i32 ; [#uses=1] + %58 = ptrtoint i8* %56 to i32 ; [#uses=1] + %59 = sub i32 %57, %58 ; [#uses=1] + %60 = icmp sle i32 %59, 12 ; [#uses=1] + br i1 %60, label %61, label %63 + +; <label>:61 ; preds = %48 + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %62, i32 1) + br label %64 + +; <label>:63 ; preds = %48 + br label %64 + +; <label>:64 ; preds = %63, %61 + %65 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_State* %65, i32 0, i32 4 ; [#uses=2] + %67 = load %struct.lua_TValue** %66, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_TValue* %67, i32 1 ; [#uses=1] + store %struct.lua_TValue* %68, %struct.lua_TValue** %66, align 4 + %69 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_State* %69, i32 0, i32 10 ; [#uses=1] + %71 = load %struct.lua_TValue** %70, align 4 ; [#uses=1] + %72 = bitcast %struct.lua_TValue* %71 to i8* ; [#uses=1] + %73 = load i32* %funcr, align 4 ; [#uses=1] + %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] + %75 = bitcast i8* %74 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %75, %struct.lua_TValue** %2, align 4 + %76 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + store %struct.lua_TValue* %76, %struct.lua_TValue** %o21, align 4 + %77 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %77, %struct.lua_TValue** %o12, align 4 + %78 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 0, i32 0 ; [#uses=1] + %80 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 0, i32 0 ; [#uses=1] + %82 = bitcast %union.anon* %79 to i8* ; [#uses=1] + %83 = bitcast %union.anon* %81 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %82, i8* %83, i32 8, i32 4, i1 false) + %84 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_TValue* %84, i32 0, i32 1 ; [#uses=1] + %86 = load i32* %85, align 4 ; [#uses=1] + %87 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 1 ; [#uses=1] + store i32 %86, i32* %88, align 4 + %89 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + ret %struct.lua_TValue* %89 +} + +; [#uses=1] +define internal %struct.lua_TValue* @_Z14adjust_varargsP9lua_StateP5Protoi(%struct.lua_State* %L, %struct.Proto* %p, i32 %actual) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=14] + %2 = alloca %struct.Proto*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=12] + %nfixargs = alloca i32, align 4 ; [#uses=4] + %htab = alloca %struct.Table*, align 4 ; [#uses=6] + %base = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %fixed = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %nvar = alloca i32, align 4 ; [#uses=5] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Proto* %p, %struct.Proto** %2, align 4 + store i32 %actual, i32* %3, align 4 + %4 = load %struct.Proto** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Proto* %4, i32 0, i32 20 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = zext i8 %6 to i32 ; [#uses=1] + store i32 %7, i32* %nfixargs, align 4 + store %struct.Table* null, %struct.Table** %htab, align 4 + br label %8 + +; <label>:8 ; preds = %18, %0 + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = load i32* %nfixargs, align 4 ; [#uses=1] + %11 = icmp slt i32 %9, %10 ; [#uses=1] + br i1 %11, label %12, label %21 + +; <label>:12 ; preds = %8 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 4 ; [#uses=2] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=2] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 1 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %14, align 4 + %17 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %17, align 4 + br label %18 + +; <label>:18 ; preds = %12 + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 1 ; [#uses=1] + store i32 %20, i32* %3, align 4 + br label %8 + +; <label>:21 ; preds = %8 + %22 = load %struct.Proto** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Proto* %22, i32 0, i32 21 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = and i32 %25, 4 ; [#uses=1] + %27 = icmp ne i32 %26, 0 ; [#uses=1] + br i1 %27, label %28, label %94 + +; <label>:28 ; preds = %21 + %29 = load i32* %3, align 4 ; [#uses=1] + %30 = load i32* %nfixargs, align 4 ; [#uses=1] + %31 = sub nsw i32 %29, %30 ; [#uses=1] + store i32 %31, i32* %nvar, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 6 ; [#uses=1] + %34 = load %struct.global_State** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.global_State* %34, i32 0, i32 14 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 6 ; [#uses=1] + %39 = load %struct.global_State** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.global_State* %39, i32 0, i32 13 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = icmp uge i32 %36, %41 ; [#uses=1] + br i1 %42, label %43, label %45 + +; <label>:43 ; preds = %28 + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %44) + br label %45 + +; <label>:45 ; preds = %43, %28 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = load i32* %nvar, align 4 ; [#uses=1] + %48 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %46, i32 %47, i32 1) ; [#uses=1] + store %struct.Table* %48, %struct.Table** %htab, align 4 + store i32 0, i32* %i, align 4 + br label %49 + +; <label>:49 ; preds = %78, %45 + %50 = load i32* %i, align 4 ; [#uses=1] + %51 = load i32* %nvar, align 4 ; [#uses=1] + %52 = icmp slt i32 %50, %51 ; [#uses=1] + br i1 %52, label %53, label %81 + +; <label>:53 ; preds = %49 + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + %57 = load i32* %nvar, align 4 ; [#uses=1] + %58 = sub i32 0, %57 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %56, i32 %58 ; [#uses=1] + %60 = load i32* %i, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %59, i32 %60 ; [#uses=1] + store %struct.lua_TValue* %61, %struct.lua_TValue** %o2, align 4 + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = load %struct.Table** %htab, align 4 ; [#uses=1] + %64 = load i32* %i, align 4 ; [#uses=1] + %65 = add nsw i32 %64, 1 ; [#uses=1] + %66 = call %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %62, %struct.Table* %63, i32 %65) ; [#uses=1] + store %struct.lua_TValue* %66, %struct.lua_TValue** %o1, align 4 + %67 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_TValue* %67, i32 0, i32 0 ; [#uses=1] + %69 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 0 ; [#uses=1] + %71 = bitcast %union.anon* %68 to i8* ; [#uses=1] + %72 = bitcast %union.anon* %70 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %71, i8* %72, i32 8, i32 4, i1 false) + %73 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 1 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + %76 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_TValue* %76, i32 0, i32 1 ; [#uses=1] + store i32 %75, i32* %77, align 4 + br label %78 + +; <label>:78 ; preds = %53 + %79 = load i32* %i, align 4 ; [#uses=1] + %80 = add nsw i32 %79, 1 ; [#uses=1] + store i32 %80, i32* %i, align 4 + br label %49 + +; <label>:81 ; preds = %49 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %83 = load %struct.Table** %htab, align 4 ; [#uses=1] + %84 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %85 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %84, i8* getelementptr inbounds ([2 x i8]* @.str728, i32 0, i32 0), i32 1) ; [#uses=1] + %86 = call %struct.lua_TValue* @_Z11luaH_setstrP9lua_StateP5TableP7TString(%struct.lua_State* %82, %struct.Table* %83, %union.TString* %85) ; [#uses=1] + store %struct.lua_TValue* %86, %struct.lua_TValue** %i_o, align 4 + %87 = load i32* %nvar, align 4 ; [#uses=1] + %88 = sitofp i32 %87 to double ; [#uses=1] + %89 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.lua_TValue* %89, i32 0, i32 0 ; [#uses=1] + %91 = getelementptr inbounds %union.anon* %90, i32 0, i32 0 ; [#uses=1] + store double %88, double* %91, align 4 + %92 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_TValue* %92, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %93, align 4 + br label %94 + +; <label>:94 ; preds = %81, %21 + %95 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.lua_State* %95, i32 0, i32 4 ; [#uses=1] + %97 = load %struct.lua_TValue** %96, align 4 ; [#uses=1] + %98 = load i32* %3, align 4 ; [#uses=1] + %99 = sub i32 0, %98 ; [#uses=1] + %100 = getelementptr inbounds %struct.lua_TValue* %97, i32 %99 ; [#uses=1] + store %struct.lua_TValue* %100, %struct.lua_TValue** %fixed, align 4 + %101 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.lua_State* %101, i32 0, i32 4 ; [#uses=1] + %103 = load %struct.lua_TValue** %102, align 4 ; [#uses=1] + store %struct.lua_TValue* %103, %struct.lua_TValue** %base, align 4 + store i32 0, i32* %i, align 4 + br label %104 + +; <label>:104 ; preds = %131, %94 + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = load i32* %nfixargs, align 4 ; [#uses=1] + %107 = icmp slt i32 %105, %106 ; [#uses=1] + br i1 %107, label %108, label %134 + +; <label>:108 ; preds = %104 + %109 = load %struct.lua_TValue** %fixed, align 4 ; [#uses=1] + %110 = load i32* %i, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.lua_TValue* %109, i32 %110 ; [#uses=1] + store %struct.lua_TValue* %111, %struct.lua_TValue** %o21, align 4 + %112 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.lua_State* %112, i32 0, i32 4 ; [#uses=2] + %114 = load %struct.lua_TValue** %113, align 4 ; [#uses=2] + %115 = getelementptr inbounds %struct.lua_TValue* %114, i32 1 ; [#uses=1] + store %struct.lua_TValue* %115, %struct.lua_TValue** %113, align 4 + store %struct.lua_TValue* %114, %struct.lua_TValue** %o12, align 4 + %116 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.lua_TValue* %116, i32 0, i32 0 ; [#uses=1] + %118 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %119 = getelementptr inbounds %struct.lua_TValue* %118, i32 0, i32 0 ; [#uses=1] + %120 = bitcast %union.anon* %117 to i8* ; [#uses=1] + %121 = bitcast %union.anon* %119 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %120, i8* %121, i32 8, i32 4, i1 false) + %122 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_TValue* %122, i32 0, i32 1 ; [#uses=1] + %124 = load i32* %123, align 4 ; [#uses=1] + %125 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %126 = getelementptr inbounds %struct.lua_TValue* %125, i32 0, i32 1 ; [#uses=1] + store i32 %124, i32* %126, align 4 + %127 = load %struct.lua_TValue** %fixed, align 4 ; [#uses=1] + %128 = load i32* %i, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.lua_TValue* %127, i32 %128 ; [#uses=1] + %130 = getelementptr inbounds %struct.lua_TValue* %129, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %130, align 4 + br label %131 + +; <label>:131 ; preds = %108 + %132 = load i32* %i, align 4 ; [#uses=1] + %133 = add nsw i32 %132, 1 ; [#uses=1] + store i32 %133, i32* %i, align 4 + br label %104 + +; <label>:134 ; preds = %104 + %135 = load %struct.Table** %htab, align 4 ; [#uses=1] + %136 = icmp ne %struct.Table* %135, null ; [#uses=1] + br i1 %136, label %137, label %150 + +; <label>:137 ; preds = %134 + %138 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.lua_State* %138, i32 0, i32 4 ; [#uses=2] + %140 = load %struct.lua_TValue** %139, align 4 ; [#uses=2] + %141 = getelementptr inbounds %struct.lua_TValue* %140, i32 1 ; [#uses=1] + store %struct.lua_TValue* %141, %struct.lua_TValue** %139, align 4 + store %struct.lua_TValue* %140, %struct.lua_TValue** %i_o3, align 4 + %142 = load %struct.Table** %htab, align 4 ; [#uses=1] + %143 = bitcast %struct.Table* %142 to %union.GCObject* ; [#uses=1] + %144 = load %struct.lua_TValue** %i_o3, align 4 ; [#uses=1] + %145 = getelementptr inbounds %struct.lua_TValue* %144, i32 0, i32 0 ; [#uses=1] + %146 = getelementptr inbounds %union.anon* %145, i32 0, i32 0 ; [#uses=1] + %147 = bitcast double* %146 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %143, %union.GCObject** %147, align 4 + %148 = load %struct.lua_TValue** %i_o3, align 4 ; [#uses=1] + %149 = getelementptr inbounds %struct.lua_TValue* %148, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %149, align 4 + br label %150 + +; <label>:150 ; preds = %137, %134 + %151 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + ret %struct.lua_TValue* %151 +} + +; [#uses=2] +define internal %struct.CallInfo* @_Z6growCIP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 14 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sgt i32 %4, 20000 ; [#uses=1] + br i1 %5, label %6, label %8 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %7, i32 5) + br label %21 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 14 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = mul nsw i32 2, %12 ; [#uses=1] + call void @_Z14luaD_reallocCIP9lua_Statei(%struct.lua_State* %9, i32 %13) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 14 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = icmp sgt i32 %16, 20000 ; [#uses=1] + br i1 %17, label %18, label %20 + +; <label>:18 ; preds = %8 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %19, i8* getelementptr inbounds ([15 x i8]* @.str627, i32 0, i32 0)) + br label %20 + +; <label>:20 ; preds = %18, %8 + br label %21 + +; <label>:21 ; preds = %20, %6 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 7 ; [#uses=2] + %24 = load %struct.CallInfo** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.CallInfo* %24, i32 1 ; [#uses=2] + store %struct.CallInfo* %25, %struct.CallInfo** %23, align 4 + ret %struct.CallInfo* %25 +} + +; [#uses=3] +define hidden i32 @_Z12luaD_poscallP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %firstResult) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %res = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %wanted = alloca i32, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=6] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=5] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %firstResult, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 17 ; [#uses=1] + %5 = load i8* %4, align 1 ; [#uses=1] + %6 = zext i8 %5 to i32 ; [#uses=1] + %7 = and i32 %6, 2 ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %13 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %12 = call %struct.lua_TValue* @_Z12callrethooksP9lua_StateP10lua_TValue(%struct.lua_State* %10, %struct.lua_TValue* %11) ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %2, align 4 + br label %13 + +; <label>:13 ; preds = %9, %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 7 ; [#uses=2] + %16 = load %struct.CallInfo** %15, align 4 ; [#uses=2] + %17 = getelementptr inbounds %struct.CallInfo* %16, i32 -1 ; [#uses=1] + store %struct.CallInfo* %17, %struct.CallInfo** %15, align 4 + store %struct.CallInfo* %16, %struct.CallInfo** %ci, align 4 + %18 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.CallInfo* %18, i32 0, i32 1 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %res, align 4 + %21 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.CallInfo* %21, i32 0, i32 4 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + store i32 %23, i32* %wanted, align 4 + %24 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.CallInfo* %24, i32 -1 ; [#uses=1] + %26 = getelementptr inbounds %struct.CallInfo* %25, i32 0, i32 0 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %29, align 4 + %30 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.CallInfo* %30, i32 -1 ; [#uses=1] + %32 = getelementptr inbounds %struct.CallInfo* %31, i32 0, i32 3 ; [#uses=1] + %33 = load i32** %32, align 4 ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 8 ; [#uses=1] + store i32* %33, i32** %35, align 4 + %36 = load i32* %wanted, align 4 ; [#uses=1] + store i32 %36, i32* %i, align 4 + br label %37 + +; <label>:37 ; preds = %64, %13 + %38 = load i32* %i, align 4 ; [#uses=1] + %39 = icmp ne i32 %38, 0 ; [#uses=1] + br i1 %39, label %40, label %46 + +; <label>:40 ; preds = %37 + %41 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %42 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_State* %42, i32 0, i32 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %43, align 4 ; [#uses=1] + %45 = icmp ult %struct.lua_TValue* %41, %44 ; [#uses=1] + br label %46 + +; <label>:46 ; preds = %40, %37 + %47 = phi i1 [ false, %37 ], [ %45, %40 ] ; [#uses=1] + br i1 %47, label %48, label %67 + +; <label>:48 ; preds = %46 + %49 = load %struct.lua_TValue** %2, align 4 ; [#uses=2] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 1 ; [#uses=1] + store %struct.lua_TValue* %50, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %49, %struct.lua_TValue** %o2, align 4 + %51 = load %struct.lua_TValue** %res, align 4 ; [#uses=2] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 1 ; [#uses=1] + store %struct.lua_TValue* %52, %struct.lua_TValue** %res, align 4 + store %struct.lua_TValue* %51, %struct.lua_TValue** %o1, align 4 + %53 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.lua_TValue* %53, i32 0, i32 0 ; [#uses=1] + %55 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_TValue* %55, i32 0, i32 0 ; [#uses=1] + %57 = bitcast %union.anon* %54 to i8* ; [#uses=1] + %58 = bitcast %union.anon* %56 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %57, i8* %58, i32 8, i32 4, i1 false) + %59 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_TValue* %59, i32 0, i32 1 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + %62 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_TValue* %62, i32 0, i32 1 ; [#uses=1] + store i32 %61, i32* %63, align 4 + br label %64 + +; <label>:64 ; preds = %48 + %65 = load i32* %i, align 4 ; [#uses=1] + %66 = add nsw i32 %65, -1 ; [#uses=1] + store i32 %66, i32* %i, align 4 + br label %37 + +; <label>:67 ; preds = %46 + br label %68 + +; <label>:68 ; preds = %72, %67 + %69 = load i32* %i, align 4 ; [#uses=2] + %70 = add nsw i32 %69, -1 ; [#uses=1] + store i32 %70, i32* %i, align 4 + %71 = icmp sgt i32 %69, 0 ; [#uses=1] + br i1 %71, label %72, label %76 + +; <label>:72 ; preds = %68 + %73 = load %struct.lua_TValue** %res, align 4 ; [#uses=2] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 1 ; [#uses=1] + store %struct.lua_TValue* %74, %struct.lua_TValue** %res, align 4 + %75 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %75, align 4 + br label %68 + +; <label>:76 ; preds = %68 + %77 = load %struct.lua_TValue** %res, align 4 ; [#uses=1] + %78 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_State* %78, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %77, %struct.lua_TValue** %79, align 4 + %80 = load i32* %wanted, align 4 ; [#uses=1] + %81 = sub nsw i32 %80, -1 ; [#uses=1] + ret i32 %81 +} + +; [#uses=1] +define internal %struct.lua_TValue* @_Z12callrethooksP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %firstResult) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %fr = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %firstResult, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %4 = bitcast %struct.lua_TValue* %3 to i8* ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 10 ; [#uses=1] + %7 = load %struct.lua_TValue** %6, align 4 ; [#uses=1] + %8 = bitcast %struct.lua_TValue* %7 to i8* ; [#uses=1] + %9 = ptrtoint i8* %4 to i32 ; [#uses=1] + %10 = ptrtoint i8* %8 to i32 ; [#uses=1] + %11 = sub i32 %9, %10 ; [#uses=1] + store i32 %11, i32* %fr, align 4 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %12, i32 1, i32 -1) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 7 ; [#uses=1] + %15 = load %struct.CallInfo** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.CallInfo* %15, i32 0, i32 1 ; [#uses=1] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %union.anon* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast double* %19 to %union.GCObject** ; [#uses=1] + %21 = load %union.GCObject** %20, align 4 ; [#uses=1] + %22 = getelementptr inbounds %union.GCObject* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %struct.lua_State* %22 to %union.Closure* ; [#uses=1] + %24 = getelementptr inbounds %union.Closure* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %struct.CClosure* %24, i32 0, i32 3 ; [#uses=1] + %26 = load i8* %25, align 1 ; [#uses=1] + %27 = icmp ne i8 %26, 0 ; [#uses=1] + br i1 %27, label %49, label %28 + +; <label>:28 ; preds = %0 + br label %29 + +; <label>:29 ; preds = %46, %28 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 17 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = zext i8 %32 to i32 ; [#uses=1] + %34 = and i32 %33, 2 ; [#uses=1] + %35 = icmp ne i32 %34, 0 ; [#uses=1] + br i1 %35, label %36, label %44 + +; <label>:36 ; preds = %29 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 7 ; [#uses=1] + %39 = load %struct.CallInfo** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.CallInfo* %39, i32 0, i32 5 ; [#uses=2] + %41 = load i32* %40, align 4 ; [#uses=2] + %42 = add nsw i32 %41, -1 ; [#uses=1] + store i32 %42, i32* %40, align 4 + %43 = icmp ne i32 %41, 0 ; [#uses=1] + br label %44 + +; <label>:44 ; preds = %36, %29 + %45 = phi i1 [ false, %29 ], [ %43, %36 ] ; [#uses=1] + br i1 %45, label %46, label %48 + +; <label>:46 ; preds = %44 + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %47, i32 4, i32 -1) + br label %29 + +; <label>:48 ; preds = %44 + br label %49 + +; <label>:49 ; preds = %48, %0 + %50 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_State* %50, i32 0, i32 10 ; [#uses=1] + %52 = load %struct.lua_TValue** %51, align 4 ; [#uses=1] + %53 = bitcast %struct.lua_TValue* %52 to i8* ; [#uses=1] + %54 = load i32* %fr, align 4 ; [#uses=1] + %55 = getelementptr inbounds i8* %53, i32 %54 ; [#uses=1] + %56 = bitcast i8* %55 to %struct.lua_TValue* ; [#uses=1] + ret %struct.lua_TValue* %56 +} + +; [#uses=8] +define hidden void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %L, %struct.lua_TValue* %func, i32 %nResults) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %func, %struct.lua_TValue** %2, align 4 + store i32 %nResults, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 15 ; [#uses=2] + %6 = load i16* %5, align 2 ; [#uses=1] + %7 = add i16 %6, 1 ; [#uses=2] + store i16 %7, i16* %5, align 2 + %8 = zext i16 %7 to i32 ; [#uses=1] + %9 = icmp sge i32 %8, 200 ; [#uses=1] + br i1 %9, label %10, label %28 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 15 ; [#uses=1] + %13 = load i16* %12, align 2 ; [#uses=1] + %14 = zext i16 %13 to i32 ; [#uses=1] + %15 = icmp eq i32 %14, 200 ; [#uses=1] + br i1 %15, label %16, label %18 + +; <label>:16 ; preds = %10 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %17, i8* getelementptr inbounds ([17 x i8]* @.str223, i32 0, i32 0)) + br label %27 + +; <label>:18 ; preds = %10 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 15 ; [#uses=1] + %21 = load i16* %20, align 2 ; [#uses=1] + %22 = zext i16 %21 to i32 ; [#uses=1] + %23 = icmp sge i32 %22, 225 ; [#uses=1] + br i1 %23, label %24, label %26 + +; <label>:24 ; preds = %18 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %25, i32 5) + br label %26 + +; <label>:26 ; preds = %24, %18 + br label %27 + +; <label>:27 ; preds = %26, %16 + br label %28 + +; <label>:28 ; preds = %27, %0 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %31 = load i32* %3, align 4 ; [#uses=1] + %32 = call i32 @_Z12luaD_precallP9lua_StateP10lua_TValuei(%struct.lua_State* %29, %struct.lua_TValue* %30, i32 %31) ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %36 + +; <label>:34 ; preds = %28 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12luaV_executeP9lua_Statei(%struct.lua_State* %35, i32 1) + br label %36 + +; <label>:36 ; preds = %34, %28 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 15 ; [#uses=2] + %39 = load i16* %38, align 2 ; [#uses=1] + %40 = add i16 %39, -1 ; [#uses=1] + store i16 %40, i16* %38, align 2 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_State* %41, i32 0, i32 6 ; [#uses=1] + %43 = load %struct.global_State** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.global_State* %43, i32 0, i32 14 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_State* %46, i32 0, i32 6 ; [#uses=1] + %48 = load %struct.global_State** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.global_State* %48, i32 0, i32 13 ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = icmp uge i32 %45, %50 ; [#uses=1] + br i1 %51, label %52, label %54 + +; <label>:52 ; preds = %36 + %53 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %53) + br label %54 + +; <label>:54 ; preds = %52, %36 + ret void +} + +; [#uses=1] +define i32 @_Z10lua_resumeP9lua_Statei(%struct.lua_State* %L, i32 %nargs) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=19] + %3 = alloca i32, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %nargs, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 3 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = zext i8 %6 to i32 ; [#uses=1] + %8 = icmp ne i32 %7, 1 ; [#uses=1] + br i1 %8, label %9, label %26 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 3 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %23, label %15 + +; <label>:15 ; preds = %9 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 7 ; [#uses=1] + %18 = load %struct.CallInfo** %17, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 12 ; [#uses=1] + %21 = load %struct.CallInfo** %20, align 4 ; [#uses=1] + %22 = icmp ne %struct.CallInfo* %18, %21 ; [#uses=1] + br i1 %22, label %23, label %26 + +; <label>:23 ; preds = %15, %9 + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = call i32 @_Z12resume_errorP9lua_StatePKc(%struct.lua_State* %24, i8* getelementptr inbounds ([38 x i8]* @.str324, i32 0, i32 0)) ; [#uses=1] + store i32 %25, i32* %1 + br label %81 + +; <label>:26 ; preds = %15, %0 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 15 ; [#uses=1] + %29 = load i16* %28, align 2 ; [#uses=1] + %30 = zext i16 %29 to i32 ; [#uses=1] + %31 = icmp sge i32 %30, 200 ; [#uses=1] + br i1 %31, label %32, label %35 + +; <label>:32 ; preds = %26 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = call i32 @_Z12resume_errorP9lua_StatePKc(%struct.lua_State* %33, i8* getelementptr inbounds ([17 x i8]* @.str223, i32 0, i32 0)) ; [#uses=1] + store i32 %34, i32* %1 + br label %81 + +; <label>:35 ; preds = %26 + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_State* %36, i32 0, i32 15 ; [#uses=2] + %38 = load i16* %37, align 2 ; [#uses=1] + %39 = add i16 %38, 1 ; [#uses=2] + store i16 %39, i16* %37, align 2 + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 16 ; [#uses=1] + store i16 %39, i16* %41, align 2 + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 4 ; [#uses=1] + %45 = load %struct.lua_TValue** %44, align 4 ; [#uses=1] + %46 = load i32* %3, align 4 ; [#uses=1] + %47 = sub i32 0, %46 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_TValue* %45, i32 %47 ; [#uses=1] + %49 = bitcast %struct.lua_TValue* %48 to i8* ; [#uses=1] + %50 = call i32 @_Z20luaD_rawrunprotectedP9lua_StatePFvS0_PvES1_(%struct.lua_State* %42, void (%struct.lua_State*, i8*)* @_Z6resumeP9lua_StatePv, i8* %49) ; [#uses=1] + store i32 %50, i32* %status, align 4 + %51 = load i32* %status, align 4 ; [#uses=1] + %52 = icmp ne i32 %51, 0 ; [#uses=1] + br i1 %52, label %53, label %70 + +; <label>:53 ; preds = %35 + %54 = load i32* %status, align 4 ; [#uses=1] + %55 = trunc i32 %54 to i8 ; [#uses=1] + %56 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_State* %56, i32 0, i32 3 ; [#uses=1] + store i8 %55, i8* %57, align 1 + %58 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %59 = load i32* %status, align 4 ; [#uses=1] + %60 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 4 ; [#uses=1] + %62 = load %struct.lua_TValue** %61, align 4 ; [#uses=1] + call void @_Z16luaD_seterrorobjP9lua_StateiP10lua_TValue(%struct.lua_State* %58, i32 %59, %struct.lua_TValue* %62) + %63 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_State* %63, i32 0, i32 4 ; [#uses=1] + %65 = load %struct.lua_TValue** %64, align 4 ; [#uses=1] + %66 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_State* %66, i32 0, i32 7 ; [#uses=1] + %68 = load %struct.CallInfo** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.CallInfo* %68, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %65, %struct.lua_TValue** %69, align 4 + br label %75 + +; <label>:70 ; preds = %35 + %71 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_State* %71, i32 0, i32 3 ; [#uses=1] + %73 = load i8* %72, align 1 ; [#uses=1] + %74 = zext i8 %73 to i32 ; [#uses=1] + store i32 %74, i32* %status, align 4 + br label %75 + +; <label>:75 ; preds = %70, %53 + %76 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_State* %76, i32 0, i32 15 ; [#uses=2] + %78 = load i16* %77, align 2 ; [#uses=1] + %79 = add i16 %78, -1 ; [#uses=1] + store i16 %79, i16* %77, align 2 + %80 = load i32* %status, align 4 ; [#uses=1] + store i32 %80, i32* %1 + br label %81 + +; <label>:81 ; preds = %75, %32, %23 + %82 = load i32* %1 ; [#uses=1] + ret i32 %82 +} + +; [#uses=2] +define internal i32 @_Z12resume_errorP9lua_StatePKc(%struct.lua_State* %L, i8* %msg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i8*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %msg, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 7 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.CallInfo* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.lua_TValue** %6, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %9, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 4 ; [#uses=1] + %12 = load %struct.lua_TValue** %11, align 4 ; [#uses=1] + store %struct.lua_TValue* %12, %struct.lua_TValue** %i_o, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load i8** %2, align 4 ; [#uses=1] + %15 = load i8** %2, align 4 ; [#uses=1] + %16 = call i32 @strlen(i8* %15) ; [#uses=1] + %17 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %13, i8* %14, i32 %16) ; [#uses=1] + %18 = bitcast %union.TString* %17 to %union.GCObject* ; [#uses=1] + %19 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %union.anon* %20, i32 0, i32 0 ; [#uses=1] + %22 = bitcast double* %21 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %18, %union.GCObject** %22, align 4 + %23 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %24, align 4 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 9 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = bitcast %struct.lua_TValue* %27 to i8* ; [#uses=1] + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %30, align 4 ; [#uses=1] + %32 = bitcast %struct.lua_TValue* %31 to i8* ; [#uses=1] + %33 = ptrtoint i8* %28 to i32 ; [#uses=1] + %34 = ptrtoint i8* %32 to i32 ; [#uses=1] + %35 = sub i32 %33, %34 ; [#uses=1] + %36 = icmp sle i32 %35, 12 ; [#uses=1] + br i1 %36, label %37, label %39 + +; <label>:37 ; preds = %0 + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %38, i32 1) + br label %40 + +; <label>:39 ; preds = %0 + br label %40 + +; <label>:40 ; preds = %39, %37 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_State* %41, i32 0, i32 4 ; [#uses=2] + %43 = load %struct.lua_TValue** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 1 ; [#uses=1] + store %struct.lua_TValue* %44, %struct.lua_TValue** %42, align 4 + ret i32 2 +} + +; [#uses=1] +define internal void @_Z6resumeP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %2 = alloca i8*, align 4 ; [#uses=2] + %firstArg = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = bitcast i8* %3 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %4, %struct.lua_TValue** %firstArg, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 7 ; [#uses=1] + %7 = load %struct.CallInfo** %6, align 4 ; [#uses=1] + store %struct.CallInfo* %7, %struct.CallInfo** %ci, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 3 ; [#uses=1] + %10 = load i8* %9, align 1 ; [#uses=1] + %11 = zext i8 %10 to i32 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %21 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %firstArg, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 -1 ; [#uses=1] + %17 = call i32 @_Z12luaD_precallP9lua_StateP10lua_TValuei(%struct.lua_State* %14, %struct.lua_TValue* %16, i32 -1) ; [#uses=1] + %18 = icmp ne i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %20 + +; <label>:19 ; preds = %13 + br label %72 + +; <label>:20 ; preds = %13 + br label %60 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %23, align 1 + %24 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.CallInfo* %24, i32 0, i32 1 ; [#uses=1] + %26 = load %struct.lua_TValue** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + %30 = load %union.GCObject** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.GCObject* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to %union.Closure* ; [#uses=1] + %33 = getelementptr inbounds %union.Closure* %32, i32 0, i32 0 ; [#uses=1] + %34 = getelementptr inbounds %struct.CClosure* %33, i32 0, i32 3 ; [#uses=1] + %35 = load i8* %34, align 1 ; [#uses=1] + %36 = icmp ne i8 %35, 0 ; [#uses=1] + br i1 %36, label %37, label %51 + +; <label>:37 ; preds = %21 + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %39 = load %struct.lua_TValue** %firstArg, align 4 ; [#uses=1] + %40 = call i32 @_Z12luaD_poscallP9lua_StateP10lua_TValue(%struct.lua_State* %38, %struct.lua_TValue* %39) ; [#uses=1] + %41 = icmp ne i32 %40, 0 ; [#uses=1] + br i1 %41, label %42, label %50 + +; <label>:42 ; preds = %37 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 7 ; [#uses=1] + %45 = load %struct.CallInfo** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.CallInfo* %45, i32 0, i32 2 ; [#uses=1] + %47 = load %struct.lua_TValue** %46, align 4 ; [#uses=1] + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %47, %struct.lua_TValue** %49, align 4 + br label %50 + +; <label>:50 ; preds = %42, %37 + br label %59 + +; <label>:51 ; preds = %21 + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_State* %52, i32 0, i32 7 ; [#uses=1] + %54 = load %struct.CallInfo** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.CallInfo* %54, i32 0, i32 0 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_State* %57, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %56, %struct.lua_TValue** %58, align 4 + br label %59 + +; <label>:59 ; preds = %51, %50 + br label %60 + +; <label>:60 ; preds = %59, %20 + %61 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_State* %62, i32 0, i32 7 ; [#uses=1] + %64 = load %struct.CallInfo** %63, align 4 ; [#uses=1] + %65 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_State* %65, i32 0, i32 12 ; [#uses=1] + %67 = load %struct.CallInfo** %66, align 4 ; [#uses=1] + %68 = ptrtoint %struct.CallInfo* %64 to i32 ; [#uses=1] + %69 = ptrtoint %struct.CallInfo* %67 to i32 ; [#uses=1] + %70 = sub i32 %68, %69 ; [#uses=1] + %71 = sdiv exact i32 %70, 24 ; [#uses=1] + call void @_Z12luaV_executeP9lua_Statei(%struct.lua_State* %61, i32 %71) + br label %72 + +; <label>:72 ; preds = %60, %19 + ret void +} + +; [#uses=1] +define i32 @_Z9lua_yieldP9lua_Statei(%struct.lua_State* %L, i32 %nresults) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nresults, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 15 ; [#uses=1] + %5 = load i16* %4, align 2 ; [#uses=1] + %6 = zext i16 %5 to i32 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 16 ; [#uses=1] + %9 = load i16* %8, align 2 ; [#uses=1] + %10 = zext i16 %9 to i32 ; [#uses=1] + %11 = icmp sgt i32 %6, %10 ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([51 x i8]* @.str425, i32 0, i32 0)) + br label %14 + +; <label>:14 ; preds = %12, %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %16, align 4 ; [#uses=1] + %18 = load i32* %2, align 4 ; [#uses=1] + %19 = sub i32 0, %18 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %17, i32 %19 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %20, %struct.lua_TValue** %22, align 4 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 3 ; [#uses=1] + store i8 1, i8* %24, align 1 + ret i32 -1 +} + +; [#uses=3] +define hidden i32 @_Z10luaD_pcallP9lua_StatePFvS0_PvES1_ii(%struct.lua_State* %L, void (%struct.lua_State*, i8*)* %func, i8* %u, i32 %old_top, i32 %ef) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=21] + %2 = alloca void (%struct.lua_State*, i8*)*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + %5 = alloca i32, align 4 ; [#uses=2] + %status = alloca i32, align 4 ; [#uses=4] + %oldnCcalls = alloca i16, align 2 ; [#uses=2] + %old_ci = alloca i32, align 4 ; [#uses=2] + %old_allowhooks = alloca i8, align 1 ; [#uses=2] + %old_errfunc = alloca i32, align 4 ; [#uses=2] + %oldtop = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store void (%struct.lua_State*, i8*)* %func, void (%struct.lua_State*, i8*)** %2, align 4 + store i8* %u, i8** %3, align 4 + store i32 %old_top, i32* %4, align 4 + store i32 %ef, i32* %5, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 15 ; [#uses=1] + %8 = load i16* %7, align 2 ; [#uses=1] + store i16 %8, i16* %oldnCcalls, align 2 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 7 ; [#uses=1] + %11 = load %struct.CallInfo** %10, align 4 ; [#uses=1] + %12 = bitcast %struct.CallInfo* %11 to i8* ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 12 ; [#uses=1] + %15 = load %struct.CallInfo** %14, align 4 ; [#uses=1] + %16 = bitcast %struct.CallInfo* %15 to i8* ; [#uses=1] + %17 = ptrtoint i8* %12 to i32 ; [#uses=1] + %18 = ptrtoint i8* %16 to i32 ; [#uses=1] + %19 = sub i32 %17, %18 ; [#uses=1] + store i32 %19, i32* %old_ci, align 4 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 18 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + store i8 %22, i8* %old_allowhooks, align 1 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 27 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + store i32 %25, i32* %old_errfunc, align 4 + %26 = load i32* %5, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 27 ; [#uses=1] + store i32 %26, i32* %28, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load void (%struct.lua_State*, i8*)** %2, align 4 ; [#uses=1] + %31 = load i8** %3, align 4 ; [#uses=1] + %32 = call i32 @_Z20luaD_rawrunprotectedP9lua_StatePFvS0_PvES1_(%struct.lua_State* %29, void (%struct.lua_State*, i8*)* %30, i8* %31) ; [#uses=1] + store i32 %32, i32* %status, align 4 + %33 = load i32* %status, align 4 ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %78 + +; <label>:35 ; preds = %0 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_State* %36, i32 0, i32 10 ; [#uses=1] + %38 = load %struct.lua_TValue** %37, align 4 ; [#uses=1] + %39 = bitcast %struct.lua_TValue* %38 to i8* ; [#uses=1] + %40 = load i32* %4, align 4 ; [#uses=1] + %41 = getelementptr inbounds i8* %39, i32 %40 ; [#uses=1] + %42 = bitcast i8* %41 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %42, %struct.lua_TValue** %oldtop, align 4 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %oldtop, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %43, %struct.lua_TValue* %44) + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = load i32* %status, align 4 ; [#uses=1] + %47 = load %struct.lua_TValue** %oldtop, align 4 ; [#uses=1] + call void @_Z16luaD_seterrorobjP9lua_StateiP10lua_TValue(%struct.lua_State* %45, i32 %46, %struct.lua_TValue* %47) + %48 = load i16* %oldnCcalls, align 2 ; [#uses=1] + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 15 ; [#uses=1] + store i16 %48, i16* %50, align 2 + %51 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_State* %51, i32 0, i32 12 ; [#uses=1] + %53 = load %struct.CallInfo** %52, align 4 ; [#uses=1] + %54 = bitcast %struct.CallInfo* %53 to i8* ; [#uses=1] + %55 = load i32* %old_ci, align 4 ; [#uses=1] + %56 = getelementptr inbounds i8* %54, i32 %55 ; [#uses=1] + %57 = bitcast i8* %56 to %struct.CallInfo* ; [#uses=1] + %58 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_State* %58, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* %57, %struct.CallInfo** %59, align 4 + %60 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 7 ; [#uses=1] + %62 = load %struct.CallInfo** %61, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.CallInfo* %62, i32 0, i32 0 ; [#uses=1] + %64 = load %struct.lua_TValue** %63, align 4 ; [#uses=1] + %65 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_State* %65, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %64, %struct.lua_TValue** %66, align 4 + %67 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_State* %67, i32 0, i32 7 ; [#uses=1] + %69 = load %struct.CallInfo** %68, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.CallInfo* %69, i32 0, i32 3 ; [#uses=1] + %71 = load i32** %70, align 4 ; [#uses=1] + %72 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_State* %72, i32 0, i32 8 ; [#uses=1] + store i32* %71, i32** %73, align 4 + %74 = load i8* %old_allowhooks, align 1 ; [#uses=1] + %75 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_State* %75, i32 0, i32 18 ; [#uses=1] + store i8 %74, i8* %76, align 1 + %77 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z19restore_stack_limitP9lua_State(%struct.lua_State* %77) + br label %78 + +; <label>:78 ; preds = %35, %0 + %79 = load i32* %old_errfunc, align 4 ; [#uses=1] + %80 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_State* %80, i32 0, i32 27 ; [#uses=1] + store i32 %79, i32* %81, align 4 + %82 = load i32* %status, align 4 ; [#uses=1] + ret i32 %82 +} + +; [#uses=2] +define internal void @_Z19restore_stack_limitP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %inuse = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 14 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sgt i32 %4, 20000 ; [#uses=1] + br i1 %5, label %6, label %23 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 7 ; [#uses=1] + %9 = load %struct.CallInfo** %8, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 12 ; [#uses=1] + %12 = load %struct.CallInfo** %11, align 4 ; [#uses=1] + %13 = ptrtoint %struct.CallInfo* %9 to i32 ; [#uses=1] + %14 = ptrtoint %struct.CallInfo* %12 to i32 ; [#uses=1] + %15 = sub i32 %13, %14 ; [#uses=1] + %16 = sdiv exact i32 %15, 24 ; [#uses=1] + store i32 %16, i32* %inuse, align 4 + %17 = load i32* %inuse, align 4 ; [#uses=1] + %18 = add nsw i32 %17, 1 ; [#uses=1] + %19 = icmp slt i32 %18, 20000 ; [#uses=1] + br i1 %19, label %20, label %22 + +; <label>:20 ; preds = %6 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_reallocCIP9lua_Statei(%struct.lua_State* %21, i32 20000) + br label %22 + +; <label>:22 ; preds = %20, %6 + br label %23 + +; <label>:23 ; preds = %22, %0 + ret void +} + +; [#uses=1] +define hidden i32 @_Z20luaD_protectedparserP9lua_StateP3ZioPKc(%struct.lua_State* %L, %struct.Zio* %z, i8* %name) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca %struct.Zio*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %p = alloca %struct.SParser, align 4 ; [#uses=9] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Zio* %z, %struct.Zio** %2, align 4 + store i8* %name, i8** %3, align 4 + %4 = load %struct.Zio** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 0 ; [#uses=1] + store %struct.Zio* %4, %struct.Zio** %5, align 4 + %6 = load i8** %3, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 2 ; [#uses=1] + store i8* %6, i8** %7, align 4 + %8 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %9 = getelementptr inbounds %struct.Mbuffer* %8, i32 0, i32 0 ; [#uses=1] + store i8* null, i8** %9, align 4 + %10 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %11 = getelementptr inbounds %struct.Mbuffer* %10, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %11, align 4 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = bitcast %struct.SParser* %p to i8* ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 4 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.lua_TValue* %16 to i8* ; [#uses=1] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 10 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = bitcast %struct.lua_TValue* %20 to i8* ; [#uses=1] + %22 = ptrtoint i8* %17 to i32 ; [#uses=1] + %23 = ptrtoint i8* %21 to i32 ; [#uses=1] + %24 = sub i32 %22, %23 ; [#uses=1] + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 27 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = call i32 @_Z10luaD_pcallP9lua_StatePFvS0_PvES1_ii(%struct.lua_State* %12, void (%struct.lua_State*, i8*)* @_Z8f_parserP9lua_StatePv, i8* %13, i32 %24, i32 %27) ; [#uses=1] + store i32 %28, i32* %status, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %31 = getelementptr inbounds %struct.Mbuffer* %30, i32 0, i32 0 ; [#uses=1] + %32 = load i8** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %34 = getelementptr inbounds %struct.Mbuffer* %33, i32 0, i32 2 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + %36 = mul i32 %35, 1 ; [#uses=1] + %37 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %29, i8* %32, i32 %36, i32 0) ; [#uses=1] + %38 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %39 = getelementptr inbounds %struct.Mbuffer* %38, i32 0, i32 0 ; [#uses=1] + store i8* %37, i8** %39, align 4 + %40 = getelementptr inbounds %struct.SParser* %p, i32 0, i32 1 ; [#uses=1] + %41 = getelementptr inbounds %struct.Mbuffer* %40, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %41, align 4 + %42 = load i32* %status, align 4 ; [#uses=1] + ret i32 %42 +} + +; [#uses=1] +define internal void @_Z8f_parserP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %2 = alloca i8*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + %tf = alloca %struct.Proto*, align 4 ; [#uses=4] + %cl = alloca %union.Closure*, align 4 ; [#uses=4] + %p = alloca %struct.SParser*, align 4 ; [#uses=5] + %c = alloca i32, align 4 ; [#uses=2] + %3 = alloca %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)* ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = bitcast i8* %4 to %struct.SParser* ; [#uses=1] + store %struct.SParser* %5, %struct.SParser** %p, align 4 + %6 = load %struct.SParser** %p, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.SParser* %6, i32 0, i32 0 ; [#uses=1] + %8 = load %struct.Zio** %7, align 4 ; [#uses=1] + %9 = call i32 @_Z14luaZ_lookaheadP3Zio(%struct.Zio* %8) ; [#uses=1] + store i32 %9, i32* %c, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 6 ; [#uses=1] + %12 = load %struct.global_State** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.global_State* %12, i32 0, i32 14 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 6 ; [#uses=1] + %17 = load %struct.global_State** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.global_State* %17, i32 0, i32 13 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp uge i32 %14, %19 ; [#uses=1] + br i1 %20, label %21, label %23 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %22) + br label %23 + +; <label>:23 ; preds = %21, %0 + %24 = load i32* %c, align 4 ; [#uses=1] + %25 = load i8* getelementptr inbounds ([5 x i8]* @.str526, i32 0, i32 0) ; [#uses=1] + %26 = sext i8 %25 to i32 ; [#uses=1] + %27 = icmp eq i32 %24, %26 ; [#uses=1] + br i1 %27, label %28, label %29 + +; <label>:28 ; preds = %23 + store %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)* @_Z11luaU_undumpP9lua_StateP3ZioP7MbufferPKc, %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)** %3 + br label %30 + +; <label>:29 ; preds = %23 + store %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)* @_Z11luaY_parserP9lua_StateP3ZioP7MbufferPKc, %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)** %3 + br label %30 + +; <label>:30 ; preds = %29, %28 + %31 = load %struct.Proto* (%struct.lua_State*, %struct.Zio*, %struct.Mbuffer*, i8*)** %3 ; [#uses=1] + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = load %struct.SParser** %p, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.SParser* %33, i32 0, i32 0 ; [#uses=1] + %35 = load %struct.Zio** %34, align 4 ; [#uses=1] + %36 = load %struct.SParser** %p, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.SParser* %36, i32 0, i32 1 ; [#uses=1] + %38 = load %struct.SParser** %p, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.SParser* %38, i32 0, i32 2 ; [#uses=1] + %40 = load i8** %39, align 4 ; [#uses=1] + %41 = call %struct.Proto* %31(%struct.lua_State* %32, %struct.Zio* %35, %struct.Mbuffer* %37, i8* %40) ; [#uses=1] + store %struct.Proto* %41, %struct.Proto** %tf, align 4 + %42 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %43 = load %struct.Proto** %tf, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.Proto* %43, i32 0, i32 19 ; [#uses=1] + %45 = load i8* %44, align 1 ; [#uses=1] + %46 = zext i8 %45 to i32 ; [#uses=1] + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 22 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %union.anon* %49, i32 0, i32 0 ; [#uses=1] + %51 = bitcast double* %50 to %union.GCObject** ; [#uses=1] + %52 = load %union.GCObject** %51, align 4 ; [#uses=1] + %53 = getelementptr inbounds %union.GCObject* %52, i32 0, i32 0 ; [#uses=1] + %54 = bitcast %struct.lua_State* %53 to %struct.Table* ; [#uses=1] + %55 = call %union.Closure* @_Z16luaF_newLclosureP9lua_StateiP5Table(%struct.lua_State* %42, i32 %46, %struct.Table* %54) ; [#uses=1] + store %union.Closure* %55, %union.Closure** %cl, align 4 + %56 = load %struct.Proto** %tf, align 4 ; [#uses=1] + %57 = load %union.Closure** %cl, align 4 ; [#uses=1] + %58 = getelementptr inbounds %union.Closure* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast %struct.CClosure* %58 to %struct.LClosure* ; [#uses=1] + %60 = getelementptr inbounds %struct.LClosure* %59, i32 0, i32 7 ; [#uses=1] + store %struct.Proto* %56, %struct.Proto** %60, align 4 + store i32 0, i32* %i, align 4 + br label %61 + +; <label>:61 ; preds = %77, %30 + %62 = load i32* %i, align 4 ; [#uses=1] + %63 = load %struct.Proto** %tf, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.Proto* %63, i32 0, i32 19 ; [#uses=1] + %65 = load i8* %64, align 1 ; [#uses=1] + %66 = zext i8 %65 to i32 ; [#uses=1] + %67 = icmp slt i32 %62, %66 ; [#uses=1] + br i1 %67, label %68, label %80 + +; <label>:68 ; preds = %61 + %69 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %70 = call %struct.UpVal* @_Z13luaF_newupvalP9lua_State(%struct.lua_State* %69) ; [#uses=1] + %71 = load i32* %i, align 4 ; [#uses=1] + %72 = load %union.Closure** %cl, align 4 ; [#uses=1] + %73 = getelementptr inbounds %union.Closure* %72, i32 0, i32 0 ; [#uses=1] + %74 = bitcast %struct.CClosure* %73 to %struct.LClosure* ; [#uses=1] + %75 = getelementptr inbounds %struct.LClosure* %74, i32 0, i32 8 ; [#uses=1] + %76 = getelementptr inbounds [1 x %struct.UpVal*]* %75, i32 0, i32 %71 ; [#uses=1] + store %struct.UpVal* %70, %struct.UpVal** %76 + br label %77 + +; <label>:77 ; preds = %68 + %78 = load i32* %i, align 4 ; [#uses=1] + %79 = add nsw i32 %78, 1 ; [#uses=1] + store i32 %79, i32* %i, align 4 + br label %61 + +; <label>:80 ; preds = %61 + %81 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_State* %81, i32 0, i32 4 ; [#uses=1] + %83 = load %struct.lua_TValue** %82, align 4 ; [#uses=1] + store %struct.lua_TValue* %83, %struct.lua_TValue** %i_o, align 4 + %84 = load %union.Closure** %cl, align 4 ; [#uses=1] + %85 = bitcast %union.Closure* %84 to %union.GCObject* ; [#uses=1] + %86 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_TValue* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %union.anon* %87, i32 0, i32 0 ; [#uses=1] + %89 = bitcast double* %88 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %85, %union.GCObject** %89, align 4 + %90 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.lua_TValue* %90, i32 0, i32 1 ; [#uses=1] + store i32 6, i32* %91, align 4 + %92 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_State* %92, i32 0, i32 9 ; [#uses=1] + %94 = load %struct.lua_TValue** %93, align 4 ; [#uses=1] + %95 = bitcast %struct.lua_TValue* %94 to i8* ; [#uses=1] + %96 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_State* %96, i32 0, i32 4 ; [#uses=1] + %98 = load %struct.lua_TValue** %97, align 4 ; [#uses=1] + %99 = bitcast %struct.lua_TValue* %98 to i8* ; [#uses=1] + %100 = ptrtoint i8* %95 to i32 ; [#uses=1] + %101 = ptrtoint i8* %99 to i32 ; [#uses=1] + %102 = sub i32 %100, %101 ; [#uses=1] + %103 = icmp sle i32 %102, 12 ; [#uses=1] + br i1 %103, label %104, label %106 + +; <label>:104 ; preds = %80 + %105 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %105, i32 1) + br label %107 + +; <label>:106 ; preds = %80 + br label %107 + +; <label>:107 ; preds = %106, %104 + %108 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_State* %108, i32 0, i32 4 ; [#uses=2] + %110 = load %struct.lua_TValue** %109, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.lua_TValue* %110, i32 1 ; [#uses=1] + store %struct.lua_TValue* %111, %struct.lua_TValue** %109, align 4 + ret void +} + +; [#uses=1] +define hidden i32 @_Z9luaU_dumpP9lua_StatePK5ProtoPFiS0_PKvjPvES6_i(%struct.lua_State* %L, %struct.Proto* %f, i32 (%struct.lua_State*, i8*, i32, i8*)* %w, i8* %data, i32 %strip) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.Proto*, align 4 ; [#uses=2] + %3 = alloca i32 (%struct.lua_State*, i8*, i32, i8*)*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + %5 = alloca i32, align 4 ; [#uses=2] + %D = alloca %12, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + store i32 (%struct.lua_State*, i8*, i32, i8*)* %w, i32 (%struct.lua_State*, i8*, i32, i8*)** %3, align 4 + store i8* %data, i8** %4, align 4 + store i32 %strip, i32* %5, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %12* %D, i32 0, i32 0 ; [#uses=1] + store %struct.lua_State* %6, %struct.lua_State** %7, align 4 + %8 = load i32 (%struct.lua_State*, i8*, i32, i8*)** %3, align 4 ; [#uses=1] + %9 = getelementptr inbounds %12* %D, i32 0, i32 1 ; [#uses=1] + store i32 (%struct.lua_State*, i8*, i32, i8*)* %8, i32 (%struct.lua_State*, i8*, i32, i8*)** %9, align 4 + %10 = load i8** %4, align 4 ; [#uses=1] + %11 = getelementptr inbounds %12* %D, i32 0, i32 2 ; [#uses=1] + store i8* %10, i8** %11, align 4 + %12 = load i32* %5, align 4 ; [#uses=1] + %13 = getelementptr inbounds %12* %D, i32 0, i32 3 ; [#uses=1] + store i32 %12, i32* %13, align 4 + %14 = getelementptr inbounds %12* %D, i32 0, i32 4 ; [#uses=1] + store i32 0, i32* %14, align 4 + call void @_Z10DumpHeaderP9DumpState(%12* %D) + %15 = load %struct.Proto** %2, align 4 ; [#uses=1] + call void @_Z12DumpFunctionPK5ProtoPK7TStringP9DumpState(%struct.Proto* %15, %union.TString* null, %12* %D) + %16 = getelementptr inbounds %12* %D, i32 0, i32 4 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + ret i32 %17 +} + +; [#uses=1] +define internal void @_Z10DumpHeaderP9DumpState(%12* %D) { + %1 = alloca %12*, align 4 ; [#uses=2] + %h = alloca [12 x i8], align 1 ; [#uses=2] + store %12* %D, %12** %1, align 4 + %2 = getelementptr inbounds [12 x i8]* %h, i32 0, i32 0 ; [#uses=1] + call void @_Z11luaU_headerPc(i8* %2) + %3 = getelementptr inbounds [12 x i8]* %h, i32 0, i32 0 ; [#uses=1] + %4 = load %12** %1, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %3, i32 12, %12* %4) + ret void +} + +; [#uses=2] +define internal void @_Z12DumpFunctionPK5ProtoPK7TStringP9DumpState(%struct.Proto* %f, %union.TString* %p, %12* %D) { + %1 = alloca %struct.Proto*, align 4 ; [#uses=13] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %3 = alloca %12*, align 4 ; [#uses=12] + store %struct.Proto* %f, %struct.Proto** %1, align 4 + store %union.TString* %p, %union.TString** %2, align 4 + store %12* %D, %12** %3, align 4 + %4 = load %struct.Proto** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Proto* %4, i32 0, i32 9 ; [#uses=1] + %6 = load %union.TString** %5, align 4 ; [#uses=1] + %7 = load %union.TString** %2, align 4 ; [#uses=1] + %8 = icmp eq %union.TString* %6, %7 ; [#uses=1] + br i1 %8, label %14, label %9 + +; <label>:9 ; preds = %0 + %10 = load %12** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %12* %10, i32 0, i32 3 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp ne i32 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %9, %0 + br label %19 + +; <label>:15 ; preds = %9 + %16 = load %struct.Proto** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Proto* %16, i32 0, i32 9 ; [#uses=1] + %18 = load %union.TString** %17, align 4 ; [#uses=1] + br label %19 + +; <label>:19 ; preds = %15, %14 + %20 = phi %union.TString* [ null, %14 ], [ %18, %15 ] ; [#uses=1] + %21 = load %12** %3, align 4 ; [#uses=1] + call void @_Z10DumpStringPK7TStringP9DumpState(%union.TString* %20, %12* %21) + %22 = load %struct.Proto** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Proto* %22, i32 0, i32 16 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = load %12** %3, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %24, %12* %25) + %26 = load %struct.Proto** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 17 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = load %12** %3, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %28, %12* %29) + %30 = load %struct.Proto** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.Proto* %30, i32 0, i32 19 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = zext i8 %32 to i32 ; [#uses=1] + %34 = load %12** %3, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %33, %12* %34) + %35 = load %struct.Proto** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Proto* %35, i32 0, i32 20 ; [#uses=1] + %37 = load i8* %36, align 1 ; [#uses=1] + %38 = zext i8 %37 to i32 ; [#uses=1] + %39 = load %12** %3, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %38, %12* %39) + %40 = load %struct.Proto** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Proto* %40, i32 0, i32 21 ; [#uses=1] + %42 = load i8* %41, align 1 ; [#uses=1] + %43 = zext i8 %42 to i32 ; [#uses=1] + %44 = load %12** %3, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %43, %12* %44) + %45 = load %struct.Proto** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Proto* %45, i32 0, i32 22 ; [#uses=1] + %47 = load i8* %46, align 1 ; [#uses=1] + %48 = zext i8 %47 to i32 ; [#uses=1] + %49 = load %12** %3, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %48, %12* %49) + %50 = load %struct.Proto** %1, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Proto* %50, i32 0, i32 4 ; [#uses=1] + %52 = load i32** %51, align 4 ; [#uses=1] + %53 = bitcast i32* %52 to i8* ; [#uses=1] + %54 = load %struct.Proto** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.Proto* %54, i32 0, i32 12 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + %57 = load %12** %3, align 4 ; [#uses=1] + call void @_Z10DumpVectorPKvijP9DumpState(i8* %53, i32 %56, i32 4, %12* %57) + %58 = load %struct.Proto** %1, align 4 ; [#uses=1] + %59 = load %12** %3, align 4 ; [#uses=1] + call void @_Z13DumpConstantsPK5ProtoP9DumpState(%struct.Proto* %58, %12* %59) + %60 = load %struct.Proto** %1, align 4 ; [#uses=1] + %61 = load %12** %3, align 4 ; [#uses=1] + call void @_Z9DumpDebugPK5ProtoP9DumpState(%struct.Proto* %60, %12* %61) + ret void +} + +; [#uses=4] +define internal void @_Z10DumpStringPK7TStringP9DumpState(%union.TString* %s, %12* %D) { + %1 = alloca %union.TString*, align 4 ; [#uses=5] + %2 = alloca %12*, align 4 ; [#uses=4] + %size = alloca i32, align 4 ; [#uses=2] + %size1 = alloca i32, align 4 ; [#uses=3] + store %union.TString* %s, %union.TString** %1, align 4 + store %12* %D, %12** %2, align 4 + %3 = load %union.TString** %1, align 4 ; [#uses=1] + %4 = icmp eq %union.TString* %3, null ; [#uses=1] + br i1 %4, label %10, label %5 + +; <label>:5 ; preds = %0 + %6 = load %union.TString** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %union.TString* %6, i32 1 ; [#uses=1] + %8 = bitcast %union.TString* %7 to i8* ; [#uses=1] + %9 = icmp eq i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %5, %0 + store i32 0, i32* %size, align 4 + %11 = bitcast i32* %size to i8* ; [#uses=1] + %12 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %11, i32 4, %12* %12) + br label %26 + +; <label>:13 ; preds = %5 + %14 = load %union.TString** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.TString* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %struct.anon* %15, i32 0, i32 5 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = add i32 %17, 1 ; [#uses=1] + store i32 %18, i32* %size1, align 4 + %19 = bitcast i32* %size1 to i8* ; [#uses=1] + %20 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %19, i32 4, %12* %20) + %21 = load %union.TString** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %union.TString* %21, i32 1 ; [#uses=1] + %23 = bitcast %union.TString* %22 to i8* ; [#uses=1] + %24 = load i32* %size1, align 4 ; [#uses=1] + %25 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %23, i32 %24, %12* %25) + br label %26 + +; <label>:26 ; preds = %13, %10 + ret void +} + +; [#uses=9] +define internal void @_Z7DumpIntiP9DumpState(i32 %x, %12* %D) { + %1 = alloca i32, align 4 ; [#uses=2] + %2 = alloca %12*, align 4 ; [#uses=2] + store i32 %x, i32* %1, align 4 + store %12* %D, %12** %2, align 4 + %3 = bitcast i32* %1 to i8* ; [#uses=1] + %4 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %3, i32 4, %12* %4) + ret void +} + +; [#uses=6] +define internal void @_Z8DumpChariP9DumpState(i32 %y, %12* %D) { + %1 = alloca i32, align 4 ; [#uses=2] + %2 = alloca %12*, align 4 ; [#uses=2] + %x = alloca i8, align 1 ; [#uses=2] + store i32 %y, i32* %1, align 4 + store %12* %D, %12** %2, align 4 + %3 = load i32* %1, align 4 ; [#uses=1] + %4 = trunc i32 %3 to i8 ; [#uses=1] + store i8 %4, i8* %x, align 1 + %5 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %x, i32 1, %12* %5) + ret void +} + +; [#uses=2] +define internal void @_Z10DumpVectorPKvijP9DumpState(i8* %b, i32 %n, i32 %size, %12* %D) { + %1 = alloca i8*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca %12*, align 4 ; [#uses=3] + store i8* %b, i8** %1, align 4 + store i32 %n, i32* %2, align 4 + store i32 %size, i32* %3, align 4 + store %12* %D, %12** %4, align 4 + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load %12** %4, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %5, %12* %6) + %7 = load i8** %1, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = mul i32 %8, %9 ; [#uses=1] + %11 = load %12** %4, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %7, i32 %10, %12* %11) + ret void +} + +; [#uses=1] +define internal void @_Z13DumpConstantsPK5ProtoP9DumpState(%struct.Proto* %f, %12* %D) { + %1 = alloca %struct.Proto*, align 4 ; [#uses=6] + %2 = alloca %12*, align 4 ; [#uses=8] + %i = alloca i32, align 4 ; [#uses=10] + %n = alloca i32, align 4 ; [#uses=6] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + store %struct.Proto* %f, %struct.Proto** %1, align 4 + store %12* %D, %12** %2, align 4 + %3 = load %struct.Proto** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Proto* %3, i32 0, i32 11 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + store i32 %5, i32* %n, align 4 + %6 = load i32* %n, align 4 ; [#uses=1] + %7 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %6, %12* %7) + store i32 0, i32* %i, align 4 + br label %8 + +; <label>:8 ; preds = %50, %0 + %9 = load i32* %i, align 4 ; [#uses=1] + %10 = load i32* %n, align 4 ; [#uses=1] + %11 = icmp slt i32 %9, %10 ; [#uses=1] + br i1 %11, label %12, label %53 + +; <label>:12 ; preds = %8 + %13 = load i32* %i, align 4 ; [#uses=1] + %14 = load %struct.Proto** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 3 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 %13 ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %o, align 4 + %18 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = load %12** %2, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %20, %12* %21) + %22 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + switch i32 %24, label %48 [ + i32 0, label %25 + i32 1, label %26 + i32 3, label %33 + i32 4, label %39 + ] + +; <label>:25 ; preds = %12 + br label %49 + +; <label>:26 ; preds = %12 + %27 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast double* %29 to i32* ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %12** %2, align 4 ; [#uses=1] + call void @_Z8DumpChariP9DumpState(i32 %31, %12* %32) + br label %49 + +; <label>:33 ; preds = %12 + %34 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 0 ; [#uses=1] + %36 = getelementptr inbounds %union.anon* %35, i32 0, i32 0 ; [#uses=1] + %37 = load double* %36, align 4 ; [#uses=1] + %38 = load %12** %2, align 4 ; [#uses=1] + call void @_Z10DumpNumberdP9DumpState(double %37, %12* %38) + br label %49 + +; <label>:39 ; preds = %12 + %40 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %union.anon* %41, i32 0, i32 0 ; [#uses=1] + %43 = bitcast double* %42 to %union.GCObject** ; [#uses=1] + %44 = load %union.GCObject** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.GCObject* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.lua_State* %45 to %union.TString* ; [#uses=1] + %47 = load %12** %2, align 4 ; [#uses=1] + call void @_Z10DumpStringPK7TStringP9DumpState(%union.TString* %46, %12* %47) + br label %49 + +; <label>:48 ; preds = %12 + br label %49 + +; <label>:49 ; preds = %48, %39, %33, %26, %25 + br label %50 + +; <label>:50 ; preds = %49 + %51 = load i32* %i, align 4 ; [#uses=1] + %52 = add nsw i32 %51, 1 ; [#uses=1] + store i32 %52, i32* %i, align 4 + br label %8 + +; <label>:53 ; preds = %8 + %54 = load %struct.Proto** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.Proto* %54, i32 0, i32 14 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + store i32 %56, i32* %n, align 4 + %57 = load i32* %n, align 4 ; [#uses=1] + %58 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %57, %12* %58) + store i32 0, i32* %i, align 4 + br label %59 + +; <label>:59 ; preds = %74, %53 + %60 = load i32* %i, align 4 ; [#uses=1] + %61 = load i32* %n, align 4 ; [#uses=1] + %62 = icmp slt i32 %60, %61 ; [#uses=1] + br i1 %62, label %63, label %77 + +; <label>:63 ; preds = %59 + %64 = load i32* %i, align 4 ; [#uses=1] + %65 = load %struct.Proto** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.Proto* %65, i32 0, i32 5 ; [#uses=1] + %67 = load %struct.Proto*** %66, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.Proto** %67, i32 %64 ; [#uses=1] + %69 = load %struct.Proto** %68 ; [#uses=1] + %70 = load %struct.Proto** %1, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.Proto* %70, i32 0, i32 9 ; [#uses=1] + %72 = load %union.TString** %71, align 4 ; [#uses=1] + %73 = load %12** %2, align 4 ; [#uses=1] + call void @_Z12DumpFunctionPK5ProtoPK7TStringP9DumpState(%struct.Proto* %69, %union.TString* %72, %12* %73) + br label %74 + +; <label>:74 ; preds = %63 + %75 = load i32* %i, align 4 ; [#uses=1] + %76 = add nsw i32 %75, 1 ; [#uses=1] + store i32 %76, i32* %i, align 4 + br label %59 + +; <label>:77 ; preds = %59 + ret void +} + +; [#uses=1] +define internal void @_Z9DumpDebugPK5ProtoP9DumpState(%struct.Proto* %f, %12* %D) { + %1 = alloca %struct.Proto*, align 4 ; [#uses=9] + %2 = alloca %12*, align 4 ; [#uses=11] + %i = alloca i32, align 4 ; [#uses=12] + %n = alloca i32, align 4 ; [#uses=8] + store %struct.Proto* %f, %struct.Proto** %1, align 4 + store %12* %D, %12** %2, align 4 + %3 = load %12** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %12* %3, i32 0, i32 3 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + br label %12 + +; <label>:8 ; preds = %0 + %9 = load %struct.Proto** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Proto* %9, i32 0, i32 13 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + br label %12 + +; <label>:12 ; preds = %8, %7 + %13 = phi i32 [ 0, %7 ], [ %11, %8 ] ; [#uses=1] + store i32 %13, i32* %n, align 4 + %14 = load %struct.Proto** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 6 ; [#uses=1] + %16 = load i32** %15, align 4 ; [#uses=1] + %17 = bitcast i32* %16 to i8* ; [#uses=1] + %18 = load i32* %n, align 4 ; [#uses=1] + %19 = load %12** %2, align 4 ; [#uses=1] + call void @_Z10DumpVectorPKvijP9DumpState(i8* %17, i32 %18, i32 4, %12* %19) + %20 = load %12** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %12* %20, i32 0, i32 3 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %25 + +; <label>:24 ; preds = %12 + br label %29 + +; <label>:25 ; preds = %12 + %26 = load %struct.Proto** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 15 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %25, %24 + %30 = phi i32 [ 0, %24 ], [ %28, %25 ] ; [#uses=1] + store i32 %30, i32* %n, align 4 + %31 = load i32* %n, align 4 ; [#uses=1] + %32 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %31, %12* %32) + store i32 0, i32* %i, align 4 + br label %33 + +; <label>:33 ; preds = %62, %29 + %34 = load i32* %i, align 4 ; [#uses=1] + %35 = load i32* %n, align 4 ; [#uses=1] + %36 = icmp slt i32 %34, %35 ; [#uses=1] + br i1 %36, label %37, label %65 + +; <label>:37 ; preds = %33 + %38 = load i32* %i, align 4 ; [#uses=1] + %39 = load %struct.Proto** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Proto* %39, i32 0, i32 7 ; [#uses=1] + %41 = load %struct.LocVar** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.LocVar* %41, i32 %38 ; [#uses=1] + %43 = getelementptr inbounds %struct.LocVar* %42, i32 0, i32 0 ; [#uses=1] + %44 = load %union.TString** %43, align 4 ; [#uses=1] + %45 = load %12** %2, align 4 ; [#uses=1] + call void @_Z10DumpStringPK7TStringP9DumpState(%union.TString* %44, %12* %45) + %46 = load i32* %i, align 4 ; [#uses=1] + %47 = load %struct.Proto** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.Proto* %47, i32 0, i32 7 ; [#uses=1] + %49 = load %struct.LocVar** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.LocVar* %49, i32 %46 ; [#uses=1] + %51 = getelementptr inbounds %struct.LocVar* %50, i32 0, i32 1 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %52, %12* %53) + %54 = load i32* %i, align 4 ; [#uses=1] + %55 = load %struct.Proto** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 7 ; [#uses=1] + %57 = load %struct.LocVar** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.LocVar* %57, i32 %54 ; [#uses=1] + %59 = getelementptr inbounds %struct.LocVar* %58, i32 0, i32 2 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %60, %12* %61) + br label %62 + +; <label>:62 ; preds = %37 + %63 = load i32* %i, align 4 ; [#uses=1] + %64 = add nsw i32 %63, 1 ; [#uses=1] + store i32 %64, i32* %i, align 4 + br label %33 + +; <label>:65 ; preds = %33 + %66 = load %12** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %12* %66, i32 0, i32 3 ; [#uses=1] + %68 = load i32* %67, align 4 ; [#uses=1] + %69 = icmp ne i32 %68, 0 ; [#uses=1] + br i1 %69, label %70, label %71 + +; <label>:70 ; preds = %65 + br label %75 + +; <label>:71 ; preds = %65 + %72 = load %struct.Proto** %1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Proto* %72, i32 0, i32 10 ; [#uses=1] + %74 = load i32* %73, align 4 ; [#uses=1] + br label %75 + +; <label>:75 ; preds = %71, %70 + %76 = phi i32 [ 0, %70 ], [ %74, %71 ] ; [#uses=1] + store i32 %76, i32* %n, align 4 + %77 = load i32* %n, align 4 ; [#uses=1] + %78 = load %12** %2, align 4 ; [#uses=1] + call void @_Z7DumpIntiP9DumpState(i32 %77, %12* %78) + store i32 0, i32* %i, align 4 + br label %79 + +; <label>:79 ; preds = %91, %75 + %80 = load i32* %i, align 4 ; [#uses=1] + %81 = load i32* %n, align 4 ; [#uses=1] + %82 = icmp slt i32 %80, %81 ; [#uses=1] + br i1 %82, label %83, label %94 + +; <label>:83 ; preds = %79 + %84 = load i32* %i, align 4 ; [#uses=1] + %85 = load %struct.Proto** %1, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.Proto* %85, i32 0, i32 8 ; [#uses=1] + %87 = load %union.TString*** %86, align 4 ; [#uses=1] + %88 = getelementptr inbounds %union.TString** %87, i32 %84 ; [#uses=1] + %89 = load %union.TString** %88 ; [#uses=1] + %90 = load %12** %2, align 4 ; [#uses=1] + call void @_Z10DumpStringPK7TStringP9DumpState(%union.TString* %89, %12* %90) + br label %91 + +; <label>:91 ; preds = %83 + %92 = load i32* %i, align 4 ; [#uses=1] + %93 = add nsw i32 %92, 1 ; [#uses=1] + store i32 %93, i32* %i, align 4 + br label %79 + +; <label>:94 ; preds = %79 + ret void +} + +; [#uses=1] +define internal void @_Z10DumpNumberdP9DumpState(double %x, %12* %D) { + %1 = alloca double, align 4 ; [#uses=2] + %2 = alloca %12*, align 4 ; [#uses=2] + store double %x, double* %1, align 8 + store %12* %D, %12** %2, align 4 + %3 = bitcast double* %1 to i8* ; [#uses=1] + %4 = load %12** %2, align 4 ; [#uses=1] + call void @_Z9DumpBlockPKvjP9DumpState(i8* %3, i32 8, %12* %4) + ret void +} + +; [#uses=8] +define internal void @_Z9DumpBlockPKvjP9DumpState(i8* %b, i32 %size, %12* %D) { + %1 = alloca i8*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %12*, align 4 ; [#uses=6] + store i8* %b, i8** %1, align 4 + store i32 %size, i32* %2, align 4 + store %12* %D, %12** %3, align 4 + %4 = load %12** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %12* %4, i32 0, i32 4 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %23 + +; <label>:8 ; preds = %0 + %9 = load %12** %3, align 4 ; [#uses=1] + %10 = getelementptr inbounds %12* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32 (%struct.lua_State*, i8*, i32, i8*)** %10, align 4 ; [#uses=1] + %12 = load %12** %3, align 4 ; [#uses=1] + %13 = getelementptr inbounds %12* %12, i32 0, i32 0 ; [#uses=1] + %14 = load %struct.lua_State** %13, align 4 ; [#uses=1] + %15 = load i8** %1, align 4 ; [#uses=1] + %16 = load i32* %2, align 4 ; [#uses=1] + %17 = load %12** %3, align 4 ; [#uses=1] + %18 = getelementptr inbounds %12* %17, i32 0, i32 2 ; [#uses=1] + %19 = load i8** %18, align 4 ; [#uses=1] + %20 = call i32 %11(%struct.lua_State* %14, i8* %15, i32 %16, i8* %19) ; [#uses=1] + %21 = load %12** %3, align 4 ; [#uses=1] + %22 = getelementptr inbounds %12* %21, i32 0, i32 4 ; [#uses=1] + store i32 %20, i32* %22, align 4 + br label %23 + +; <label>:23 ; preds = %8, %0 + ret void +} + +; [#uses=2] +define hidden %union.Closure* @_Z16luaF_newCclosureP9lua_StateiP5Table(%struct.lua_State* %L, i32 %nelems, %struct.Table* %e) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca %struct.Table*, align 4 ; [#uses=2] + %c = alloca %union.Closure*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nelems, i32* %2, align 4 + store %struct.Table* %e, %struct.Table** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = sub nsw i32 %5, 1 ; [#uses=1] + %7 = mul i32 12, %6 ; [#uses=1] + %8 = add nsw i32 32, %7 ; [#uses=1] + %9 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %4, i8* null, i32 0, i32 %8) ; [#uses=1] + %10 = bitcast i8* %9 to %union.Closure* ; [#uses=1] + store %union.Closure* %10, %union.Closure** %c, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %union.Closure** %c, align 4 ; [#uses=1] + %13 = bitcast %union.Closure* %12 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %11, %union.GCObject* %13, i8 zeroext 6) + %14 = load %union.Closure** %c, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.Closure* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %struct.CClosure* %15, i32 0, i32 3 ; [#uses=1] + store i8 1, i8* %16, align 1 + %17 = load %struct.Table** %3, align 4 ; [#uses=1] + %18 = load %union.Closure** %c, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.Closure* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %struct.CClosure* %19, i32 0, i32 6 ; [#uses=1] + store %struct.Table* %17, %struct.Table** %20, align 4 + %21 = load i32* %2, align 4 ; [#uses=1] + %22 = trunc i32 %21 to i8 ; [#uses=1] + %23 = load %union.Closure** %c, align 4 ; [#uses=1] + %24 = getelementptr inbounds %union.Closure* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %struct.CClosure* %24, i32 0, i32 4 ; [#uses=1] + store i8 %22, i8* %25, align 1 + %26 = load %union.Closure** %c, align 4 ; [#uses=1] + ret %union.Closure* %26 +} + +; [#uses=2] +define hidden %union.Closure* @_Z16luaF_newLclosureP9lua_StateiP5Table(%struct.lua_State* %L, i32 %nelems, %struct.Table* %e) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=6] + %3 = alloca %struct.Table*, align 4 ; [#uses=2] + %c = alloca %union.Closure*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nelems, i32* %2, align 4 + store %struct.Table* %e, %struct.Table** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = sub nsw i32 %5, 1 ; [#uses=1] + %7 = mul i32 4, %6 ; [#uses=1] + %8 = add nsw i32 24, %7 ; [#uses=1] + %9 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %4, i8* null, i32 0, i32 %8) ; [#uses=1] + %10 = bitcast i8* %9 to %union.Closure* ; [#uses=1] + store %union.Closure* %10, %union.Closure** %c, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %union.Closure** %c, align 4 ; [#uses=1] + %13 = bitcast %union.Closure* %12 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %11, %union.GCObject* %13, i8 zeroext 6) + %14 = load %union.Closure** %c, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.Closure* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.CClosure* %15 to %struct.LClosure* ; [#uses=1] + %17 = getelementptr inbounds %struct.LClosure* %16, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %17, align 1 + %18 = load %struct.Table** %3, align 4 ; [#uses=1] + %19 = load %union.Closure** %c, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.Closure* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.CClosure* %20 to %struct.LClosure* ; [#uses=1] + %22 = getelementptr inbounds %struct.LClosure* %21, i32 0, i32 6 ; [#uses=1] + store %struct.Table* %18, %struct.Table** %22, align 4 + %23 = load i32* %2, align 4 ; [#uses=1] + %24 = trunc i32 %23 to i8 ; [#uses=1] + %25 = load %union.Closure** %c, align 4 ; [#uses=1] + %26 = getelementptr inbounds %union.Closure* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast %struct.CClosure* %26 to %struct.LClosure* ; [#uses=1] + %28 = getelementptr inbounds %struct.LClosure* %27, i32 0, i32 4 ; [#uses=1] + store i8 %24, i8* %28, align 1 + br label %29 + +; <label>:29 ; preds = %33, %0 + %30 = load i32* %2, align 4 ; [#uses=2] + %31 = add nsw i32 %30, -1 ; [#uses=1] + store i32 %31, i32* %2, align 4 + %32 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %32, label %33, label %40 + +; <label>:33 ; preds = %29 + %34 = load i32* %2, align 4 ; [#uses=1] + %35 = load %union.Closure** %c, align 4 ; [#uses=1] + %36 = getelementptr inbounds %union.Closure* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast %struct.CClosure* %36 to %struct.LClosure* ; [#uses=1] + %38 = getelementptr inbounds %struct.LClosure* %37, i32 0, i32 8 ; [#uses=1] + %39 = getelementptr inbounds [1 x %struct.UpVal*]* %38, i32 0, i32 %34 ; [#uses=1] + store %struct.UpVal* null, %struct.UpVal** %39 + br label %29 + +; <label>:40 ; preds = %29 + %41 = load %union.Closure** %c, align 4 ; [#uses=1] + ret %union.Closure* %41 +} + +; [#uses=1] +define hidden %struct.UpVal* @_Z13luaF_newupvalP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %2, i8* null, i32 0, i32 24) ; [#uses=1] + %4 = bitcast i8* %3 to %struct.UpVal* ; [#uses=1] + store %struct.UpVal* %4, %struct.UpVal** %uv, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %7 = bitcast %struct.UpVal* %6 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %5, %union.GCObject* %7, i8 zeroext 10) + %8 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.UpVal* %8, i32 0, i32 4 ; [#uses=1] + %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.UpVal* %11, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %10, %struct.lua_TValue** %12, align 4 + %13 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.UpVal* %13, i32 0, i32 3 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %16, align 4 + %17 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + ret %struct.UpVal* %17 +} + +; [#uses=1] +define hidden %struct.UpVal* @_Z14luaF_findupvalP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %level) { + %1 = alloca %struct.UpVal*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %g = alloca %struct.global_State*, align 4 ; [#uses=6] + %pp = alloca %union.GCObject**, align 4 ; [#uses=6] + %p = alloca %struct.UpVal*, align 4 ; [#uses=6] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=12] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %level, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + store %struct.global_State* %6, %struct.global_State** %g, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 24 ; [#uses=1] + store %union.GCObject** %8, %union.GCObject*** %pp, align 4 + br label %9 + +; <label>:9 ; preds = %58, %0 + %10 = load %union.GCObject*** %pp, align 4 ; [#uses=1] + %11 = load %union.GCObject** %10 ; [#uses=1] + %12 = icmp ne %union.GCObject* %11, null ; [#uses=1] + br i1 %12, label %13, label %22 + +; <label>:13 ; preds = %9 + %14 = load %union.GCObject*** %pp, align 4 ; [#uses=1] + %15 = load %union.GCObject** %14 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %struct.UpVal* ; [#uses=2] + store %struct.UpVal* %17, %struct.UpVal** %p, align 4 + %18 = getelementptr inbounds %struct.UpVal* %17, i32 0, i32 3 ; [#uses=1] + %19 = load %struct.lua_TValue** %18, align 4 ; [#uses=1] + %20 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %21 = icmp uge %struct.lua_TValue* %19, %20 ; [#uses=1] + br label %22 + +; <label>:22 ; preds = %13, %9 + %23 = phi i1 [ false, %9 ], [ %21, %13 ] ; [#uses=1] + br i1 %23, label %24, label %61 + +; <label>:24 ; preds = %22 + %25 = load %struct.UpVal** %p, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.UpVal* %25, i32 0, i32 3 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %29 = icmp eq %struct.lua_TValue* %27, %28 ; [#uses=1] + br i1 %29, label %30, label %58 + +; <label>:30 ; preds = %24 + %31 = load %struct.UpVal** %p, align 4 ; [#uses=1] + %32 = bitcast %struct.UpVal* %31 to %union.GCObject* ; [#uses=1] + %33 = getelementptr inbounds %union.GCObject* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast %struct.lua_State* %33 to %struct.GCheader* ; [#uses=1] + %35 = getelementptr inbounds %struct.GCheader* %34, i32 0, i32 2 ; [#uses=1] + %36 = load i8* %35, align 1 ; [#uses=1] + %37 = zext i8 %36 to i32 ; [#uses=1] + %38 = load %struct.global_State** %g, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.global_State* %38, i32 0, i32 3 ; [#uses=1] + %40 = load i8* %39, align 1 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = xor i32 %41, 3 ; [#uses=1] + %43 = and i32 %37, %42 ; [#uses=1] + %44 = and i32 %43, 3 ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %46, label %56 + +; <label>:46 ; preds = %30 + %47 = load %struct.UpVal** %p, align 4 ; [#uses=1] + %48 = bitcast %struct.UpVal* %47 to %union.GCObject* ; [#uses=1] + %49 = getelementptr inbounds %union.GCObject* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast %struct.lua_State* %49 to %struct.GCheader* ; [#uses=1] + %51 = getelementptr inbounds %struct.GCheader* %50, i32 0, i32 2 ; [#uses=2] + %52 = load i8* %51, align 1 ; [#uses=1] + %53 = zext i8 %52 to i32 ; [#uses=1] + %54 = xor i32 %53, 3 ; [#uses=1] + %55 = trunc i32 %54 to i8 ; [#uses=1] + store i8 %55, i8* %51, align 1 + br label %56 + +; <label>:56 ; preds = %46, %30 + %57 = load %struct.UpVal** %p, align 4 ; [#uses=1] + store %struct.UpVal* %57, %struct.UpVal** %1 + br label %123 + +; <label>:58 ; preds = %24 + %59 = load %struct.UpVal** %p, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.UpVal* %59, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %60, %union.GCObject*** %pp, align 4 + br label %9 + +; <label>:61 ; preds = %22 + %62 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %63 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %62, i8* null, i32 0, i32 24) ; [#uses=1] + %64 = bitcast i8* %63 to %struct.UpVal* ; [#uses=1] + store %struct.UpVal* %64, %struct.UpVal** %uv, align 4 + %65 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.UpVal* %65, i32 0, i32 1 ; [#uses=1] + store i8 10, i8* %66, align 1 + %67 = load %struct.global_State** %g, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.global_State* %67, i32 0, i32 3 ; [#uses=1] + %69 = load i8* %68, align 1 ; [#uses=1] + %70 = zext i8 %69 to i32 ; [#uses=1] + %71 = and i32 %70, 3 ; [#uses=1] + %72 = trunc i32 %71 to i8 ; [#uses=1] + %73 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.UpVal* %73, i32 0, i32 2 ; [#uses=1] + store i8 %72, i8* %74, align 1 + %75 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %76 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.UpVal* %76, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %75, %struct.lua_TValue** %77, align 4 + %78 = load %union.GCObject*** %pp, align 4 ; [#uses=1] + %79 = load %union.GCObject** %78 ; [#uses=1] + %80 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.UpVal* %80, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %79, %union.GCObject** %81, align 4 + %82 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %83 = bitcast %struct.UpVal* %82 to %union.GCObject* ; [#uses=1] + %84 = load %union.GCObject*** %pp, align 4 ; [#uses=1] + store %union.GCObject* %83, %union.GCObject** %84 + %85 = load %struct.global_State** %g, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.global_State* %85, i32 0, i32 22 ; [#uses=1] + %87 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.UpVal* %87, i32 0, i32 4 ; [#uses=1] + %89 = getelementptr inbounds %0* %88, i32 0, i32 0 ; [#uses=1] + %90 = bitcast %struct.lua_TValue* %89 to %13* ; [#uses=1] + %91 = getelementptr inbounds %13* %90, i32 0, i32 0 ; [#uses=1] + store %struct.UpVal* %86, %struct.UpVal** %91, align 4 + %92 = load %struct.global_State** %g, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.global_State* %92, i32 0, i32 22 ; [#uses=1] + %94 = getelementptr inbounds %struct.UpVal* %93, i32 0, i32 4 ; [#uses=1] + %95 = getelementptr inbounds %0* %94, i32 0, i32 0 ; [#uses=1] + %96 = bitcast %struct.lua_TValue* %95 to %13* ; [#uses=1] + %97 = getelementptr inbounds %13* %96, i32 0, i32 1 ; [#uses=1] + %98 = load %struct.UpVal** %97, align 4 ; [#uses=1] + %99 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.UpVal* %99, i32 0, i32 4 ; [#uses=1] + %101 = getelementptr inbounds %0* %100, i32 0, i32 0 ; [#uses=1] + %102 = bitcast %struct.lua_TValue* %101 to %13* ; [#uses=1] + %103 = getelementptr inbounds %13* %102, i32 0, i32 1 ; [#uses=1] + store %struct.UpVal* %98, %struct.UpVal** %103, align 4 + %104 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %105 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.UpVal* %105, i32 0, i32 4 ; [#uses=1] + %107 = getelementptr inbounds %0* %106, i32 0, i32 0 ; [#uses=1] + %108 = bitcast %struct.lua_TValue* %107 to %13* ; [#uses=1] + %109 = getelementptr inbounds %13* %108, i32 0, i32 1 ; [#uses=1] + %110 = load %struct.UpVal** %109, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.UpVal* %110, i32 0, i32 4 ; [#uses=1] + %112 = getelementptr inbounds %0* %111, i32 0, i32 0 ; [#uses=1] + %113 = bitcast %struct.lua_TValue* %112 to %13* ; [#uses=1] + %114 = getelementptr inbounds %13* %113, i32 0, i32 0 ; [#uses=1] + store %struct.UpVal* %104, %struct.UpVal** %114, align 4 + %115 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %116 = load %struct.global_State** %g, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.global_State* %116, i32 0, i32 22 ; [#uses=1] + %118 = getelementptr inbounds %struct.UpVal* %117, i32 0, i32 4 ; [#uses=1] + %119 = getelementptr inbounds %0* %118, i32 0, i32 0 ; [#uses=1] + %120 = bitcast %struct.lua_TValue* %119 to %13* ; [#uses=1] + %121 = getelementptr inbounds %13* %120, i32 0, i32 1 ; [#uses=1] + store %struct.UpVal* %115, %struct.UpVal** %121, align 4 + %122 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + store %struct.UpVal* %122, %struct.UpVal** %1 + br label %123 + +; <label>:123 ; preds = %61, %56 + %124 = load %struct.UpVal** %1 ; [#uses=1] + ret %struct.UpVal* %124 +} + +; [#uses=2] +define hidden void @_Z14luaF_freeupvalP9lua_StateP5UpVal(%struct.lua_State* %L, %struct.UpVal* %uv) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.UpVal*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.UpVal* %uv, %struct.UpVal** %2, align 4 + %3 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.UpVal* %3, i32 0, i32 3 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %6 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.UpVal* %6, i32 0, i32 4 ; [#uses=1] + %8 = getelementptr inbounds %0* %7, i32 0, i32 0 ; [#uses=1] + %9 = icmp ne %struct.lua_TValue* %5, %8 ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %0 + %11 = load %struct.UpVal** %2, align 4 ; [#uses=1] + call void @_Z11unlinkupvalP5UpVal(%struct.UpVal* %11) + br label %12 + +; <label>:12 ; preds = %10, %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %15 = bitcast %struct.UpVal* %14 to i8* ; [#uses=1] + %16 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %13, i8* %15, i32 24, i32 0) ; [#uses=0] + ret void +} + +; [#uses=2] +define internal void @_Z11unlinkupvalP5UpVal(%struct.UpVal* %uv) nounwind { + %1 = alloca %struct.UpVal*, align 4 ; [#uses=5] + store %struct.UpVal* %uv, %struct.UpVal** %1, align 4 + %2 = load %struct.UpVal** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.UpVal* %2, i32 0, i32 4 ; [#uses=1] + %4 = getelementptr inbounds %0* %3, i32 0, i32 0 ; [#uses=1] + %5 = bitcast %struct.lua_TValue* %4 to %13* ; [#uses=1] + %6 = getelementptr inbounds %13* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.UpVal** %6, align 4 ; [#uses=1] + %8 = load %struct.UpVal** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.UpVal* %8, i32 0, i32 4 ; [#uses=1] + %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] + %11 = bitcast %struct.lua_TValue* %10 to %13* ; [#uses=1] + %12 = getelementptr inbounds %13* %11, i32 0, i32 1 ; [#uses=1] + %13 = load %struct.UpVal** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.UpVal* %13, i32 0, i32 4 ; [#uses=1] + %15 = getelementptr inbounds %0* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_TValue* %15 to %13* ; [#uses=1] + %17 = getelementptr inbounds %13* %16, i32 0, i32 0 ; [#uses=1] + store %struct.UpVal* %7, %struct.UpVal** %17, align 4 + %18 = load %struct.UpVal** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.UpVal* %18, i32 0, i32 4 ; [#uses=1] + %20 = getelementptr inbounds %0* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_TValue* %20 to %13* ; [#uses=1] + %22 = getelementptr inbounds %13* %21, i32 0, i32 1 ; [#uses=1] + %23 = load %struct.UpVal** %22, align 4 ; [#uses=1] + %24 = load %struct.UpVal** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.UpVal* %24, i32 0, i32 4 ; [#uses=1] + %26 = getelementptr inbounds %0* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast %struct.lua_TValue* %26 to %13* ; [#uses=1] + %28 = getelementptr inbounds %13* %27, i32 0, i32 0 ; [#uses=1] + %29 = load %struct.UpVal** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.UpVal* %29, i32 0, i32 4 ; [#uses=1] + %31 = getelementptr inbounds %0* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_TValue* %31 to %13* ; [#uses=1] + %33 = getelementptr inbounds %13* %32, i32 0, i32 1 ; [#uses=1] + store %struct.UpVal* %23, %struct.UpVal** %33, align 4 + ret void +} + +; [#uses=8] +define hidden void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %level) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=10] + %g = alloca %struct.global_State*, align 4 ; [#uses=2] + %o = alloca %union.GCObject*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %level, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + br label %6 + +; <label>:6 ; preds = %74, %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 24 ; [#uses=1] + %9 = load %union.GCObject** %8, align 4 ; [#uses=1] + %10 = icmp ne %union.GCObject* %9, null ; [#uses=1] + br i1 %10, label %11, label %21 + +; <label>:11 ; preds = %6 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 24 ; [#uses=1] + %14 = load %union.GCObject** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.UpVal* ; [#uses=2] + store %struct.UpVal* %16, %struct.UpVal** %uv, align 4 + %17 = getelementptr inbounds %struct.UpVal* %16, i32 0, i32 3 ; [#uses=1] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + %19 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %20 = icmp uge %struct.lua_TValue* %18, %19 ; [#uses=1] + br label %21 + +; <label>:21 ; preds = %11, %6 + %22 = phi i1 [ false, %6 ], [ %20, %11 ] ; [#uses=1] + br i1 %22, label %23, label %75 + +; <label>:23 ; preds = %21 + %24 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %25 = bitcast %struct.UpVal* %24 to %union.GCObject* ; [#uses=1] + store %union.GCObject* %25, %union.GCObject** %o, align 4 + %26 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.UpVal* %26, i32 0, i32 0 ; [#uses=1] + %28 = load %union.GCObject** %27, align 4 ; [#uses=1] + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 24 ; [#uses=1] + store %union.GCObject* %28, %union.GCObject** %30, align 4 + %31 = load %union.GCObject** %o, align 4 ; [#uses=1] + %32 = getelementptr inbounds %union.GCObject* %31, i32 0, i32 0 ; [#uses=1] + %33 = bitcast %struct.lua_State* %32 to %struct.GCheader* ; [#uses=1] + %34 = getelementptr inbounds %struct.GCheader* %33, i32 0, i32 2 ; [#uses=1] + %35 = load i8* %34, align 1 ; [#uses=1] + %36 = zext i8 %35 to i32 ; [#uses=1] + %37 = load %struct.global_State** %g, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 3 ; [#uses=1] + %39 = load i8* %38, align 1 ; [#uses=1] + %40 = zext i8 %39 to i32 ; [#uses=1] + %41 = xor i32 %40, 3 ; [#uses=1] + %42 = and i32 %36, %41 ; [#uses=1] + %43 = and i32 %42, 3 ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %48 + +; <label>:45 ; preds = %23 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + call void @_Z14luaF_freeupvalP9lua_StateP5UpVal(%struct.lua_State* %46, %struct.UpVal* %47) + br label %74 + +; <label>:48 ; preds = %23 + %49 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + call void @_Z11unlinkupvalP5UpVal(%struct.UpVal* %49) + %50 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.UpVal* %50, i32 0, i32 3 ; [#uses=1] + %52 = load %struct.lua_TValue** %51, align 4 ; [#uses=1] + store %struct.lua_TValue* %52, %struct.lua_TValue** %o2, align 4 + %53 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.UpVal* %53, i32 0, i32 4 ; [#uses=1] + %55 = getelementptr inbounds %0* %54, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %55, %struct.lua_TValue** %o1, align 4 + %56 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 0 ; [#uses=1] + %58 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast %union.anon* %57 to i8* ; [#uses=1] + %61 = bitcast %union.anon* %59 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %60, i8* %61, i32 8, i32 4, i1 false) + %62 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_TValue* %62, i32 0, i32 1 ; [#uses=1] + %64 = load i32* %63, align 4 ; [#uses=1] + %65 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 1 ; [#uses=1] + store i32 %64, i32* %66, align 4 + %67 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.UpVal* %67, i32 0, i32 4 ; [#uses=1] + %69 = getelementptr inbounds %0* %68, i32 0, i32 0 ; [#uses=1] + %70 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.UpVal* %70, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %69, %struct.lua_TValue** %71, align 4 + %72 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %73 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + call void @_Z14luaC_linkupvalP9lua_StateP5UpVal(%struct.lua_State* %72, %struct.UpVal* %73) + br label %74 + +; <label>:74 ; preds = %48, %45 + br label %6 + +; <label>:75 ; preds = %21 + ret void +} + +; [#uses=2] +define hidden %struct.Proto* @_Z13luaF_newprotoP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %f = alloca %struct.Proto*, align 4 ; [#uses=22] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %2, i8* null, i32 0, i32 76) ; [#uses=1] + %4 = bitcast i8* %3 to %struct.Proto* ; [#uses=1] + store %struct.Proto* %4, %struct.Proto** %f, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.Proto** %f, align 4 ; [#uses=1] + %7 = bitcast %struct.Proto* %6 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %5, %union.GCObject* %7, i8 zeroext 9) + %8 = load %struct.Proto** %f, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* null, %struct.lua_TValue** %9, align 4 + %10 = load %struct.Proto** %f, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Proto* %10, i32 0, i32 11 ; [#uses=1] + store i32 0, i32* %11, align 4 + %12 = load %struct.Proto** %f, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Proto* %12, i32 0, i32 5 ; [#uses=1] + store %struct.Proto** null, %struct.Proto*** %13, align 4 + %14 = load %struct.Proto** %f, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 14 ; [#uses=1] + store i32 0, i32* %15, align 4 + %16 = load %struct.Proto** %f, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Proto* %16, i32 0, i32 4 ; [#uses=1] + store i32* null, i32** %17, align 4 + %18 = load %struct.Proto** %f, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Proto* %18, i32 0, i32 12 ; [#uses=1] + store i32 0, i32* %19, align 4 + %20 = load %struct.Proto** %f, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 13 ; [#uses=1] + store i32 0, i32* %21, align 4 + %22 = load %struct.Proto** %f, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Proto* %22, i32 0, i32 10 ; [#uses=1] + store i32 0, i32* %23, align 4 + %24 = load %struct.Proto** %f, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Proto* %24, i32 0, i32 19 ; [#uses=1] + store i8 0, i8* %25, align 1 + %26 = load %struct.Proto** %f, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 8 ; [#uses=1] + store %union.TString** null, %union.TString*** %27, align 4 + %28 = load %struct.Proto** %f, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Proto* %28, i32 0, i32 20 ; [#uses=1] + store i8 0, i8* %29, align 1 + %30 = load %struct.Proto** %f, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.Proto* %30, i32 0, i32 21 ; [#uses=1] + store i8 0, i8* %31, align 1 + %32 = load %struct.Proto** %f, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.Proto* %32, i32 0, i32 22 ; [#uses=1] + store i8 0, i8* %33, align 1 + %34 = load %struct.Proto** %f, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 6 ; [#uses=1] + store i32* null, i32** %35, align 4 + %36 = load %struct.Proto** %f, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Proto* %36, i32 0, i32 15 ; [#uses=1] + store i32 0, i32* %37, align 4 + %38 = load %struct.Proto** %f, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Proto* %38, i32 0, i32 7 ; [#uses=1] + store %struct.LocVar* null, %struct.LocVar** %39, align 4 + %40 = load %struct.Proto** %f, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Proto* %40, i32 0, i32 16 ; [#uses=1] + store i32 0, i32* %41, align 4 + %42 = load %struct.Proto** %f, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Proto* %42, i32 0, i32 17 ; [#uses=1] + store i32 0, i32* %43, align 4 + %44 = load %struct.Proto** %f, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.Proto* %44, i32 0, i32 9 ; [#uses=1] + store %union.TString* null, %union.TString** %45, align 4 + %46 = load %struct.Proto** %f, align 4 ; [#uses=1] + ret %struct.Proto* %46 +} + +; [#uses=1] +define hidden void @_Z14luaF_freeprotoP9lua_StateP5Proto(%struct.lua_State* %L, %struct.Proto* %f) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca %struct.Proto*, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.Proto** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Proto* %4, i32 0, i32 4 ; [#uses=1] + %6 = load i32** %5, align 4 ; [#uses=1] + %7 = bitcast i32* %6 to i8* ; [#uses=1] + %8 = load %struct.Proto** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 12 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = mul i32 %10, 4 ; [#uses=1] + %12 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %3, i8* %7, i32 %11, i32 0) ; [#uses=0] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.Proto** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Proto* %14, i32 0, i32 5 ; [#uses=1] + %16 = load %struct.Proto*** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.Proto** %16 to i8* ; [#uses=1] + %18 = load %struct.Proto** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Proto* %18, i32 0, i32 14 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = mul i32 %20, 4 ; [#uses=1] + %22 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %13, i8* %17, i32 %21, i32 0) ; [#uses=0] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load %struct.Proto** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Proto* %24, i32 0, i32 3 ; [#uses=1] + %26 = load %struct.lua_TValue** %25, align 4 ; [#uses=1] + %27 = bitcast %struct.lua_TValue* %26 to i8* ; [#uses=1] + %28 = load %struct.Proto** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Proto* %28, i32 0, i32 11 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = mul i32 %30, 12 ; [#uses=1] + %32 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %23, i8* %27, i32 %31, i32 0) ; [#uses=0] + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = load %struct.Proto** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 6 ; [#uses=1] + %36 = load i32** %35, align 4 ; [#uses=1] + %37 = bitcast i32* %36 to i8* ; [#uses=1] + %38 = load %struct.Proto** %2, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Proto* %38, i32 0, i32 13 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = mul i32 %40, 4 ; [#uses=1] + %42 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %33, i8* %37, i32 %41, i32 0) ; [#uses=0] + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = load %struct.Proto** %2, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.Proto* %44, i32 0, i32 7 ; [#uses=1] + %46 = load %struct.LocVar** %45, align 4 ; [#uses=1] + %47 = bitcast %struct.LocVar* %46 to i8* ; [#uses=1] + %48 = load %struct.Proto** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Proto* %48, i32 0, i32 15 ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = mul i32 %50, 12 ; [#uses=1] + %52 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %43, i8* %47, i32 %51, i32 0) ; [#uses=0] + %53 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %54 = load %struct.Proto** %2, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.Proto* %54, i32 0, i32 8 ; [#uses=1] + %56 = load %union.TString*** %55, align 4 ; [#uses=1] + %57 = bitcast %union.TString** %56 to i8* ; [#uses=1] + %58 = load %struct.Proto** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Proto* %58, i32 0, i32 10 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = mul i32 %60, 4 ; [#uses=1] + %62 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %53, i8* %57, i32 %61, i32 0) ; [#uses=0] + %63 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %64 = load %struct.Proto** %2, align 4 ; [#uses=1] + %65 = bitcast %struct.Proto* %64 to i8* ; [#uses=1] + %66 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %63, i8* %65, i32 76, i32 0) ; [#uses=0] + ret void +} + +; [#uses=1] +define hidden void @_Z16luaF_freeclosureP9lua_StateP7Closure(%struct.lua_State* %L, %union.Closure* %c) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %union.Closure*, align 4 ; [#uses=5] + %size = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.Closure* %c, %union.Closure** %2, align 4 + %3 = load %union.Closure** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %union.Closure* %3, i32 0, i32 0 ; [#uses=1] + %5 = getelementptr inbounds %struct.CClosure* %4, i32 0, i32 3 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = icmp ne i8 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %17 + +; <label>:8 ; preds = %0 + %9 = load %union.Closure** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %union.Closure* %9, i32 0, i32 0 ; [#uses=1] + %11 = getelementptr inbounds %struct.CClosure* %10, i32 0, i32 4 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = sub nsw i32 %13, 1 ; [#uses=1] + %15 = mul i32 12, %14 ; [#uses=1] + %16 = add nsw i32 32, %15 ; [#uses=1] + br label %27 + +; <label>:17 ; preds = %0 + %18 = load %union.Closure** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.Closure* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.CClosure* %19 to %struct.LClosure* ; [#uses=1] + %21 = getelementptr inbounds %struct.LClosure* %20, i32 0, i32 4 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + %24 = sub nsw i32 %23, 1 ; [#uses=1] + %25 = mul i32 4, %24 ; [#uses=1] + %26 = add nsw i32 24, %25 ; [#uses=1] + br label %27 + +; <label>:27 ; preds = %17, %8 + %28 = phi i32 [ %16, %8 ], [ %26, %17 ] ; [#uses=1] + store i32 %28, i32* %size, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load %union.Closure** %2, align 4 ; [#uses=1] + %31 = bitcast %union.Closure* %30 to i8* ; [#uses=1] + %32 = load i32* %size, align 4 ; [#uses=1] + %33 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %29, i8* %31, i32 %32, i32 0) ; [#uses=0] + ret void +} + +; [#uses=2] +define hidden i8* @_Z17luaF_getlocalnamePK5Protoii(%struct.Proto* %f, i32 %local_number, i32 %pc) nounwind { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.Proto*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=4] + %4 = alloca i32, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=7] + store %struct.Proto* %f, %struct.Proto** %2, align 4 + store i32 %local_number, i32* %3, align 4 + store i32 %pc, i32* %4, align 4 + store i32 0, i32* %i, align 4 + br label %5 + +; <label>:5 ; preds = %50, %0 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load %struct.Proto** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Proto* %7, i32 0, i32 15 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp slt i32 %6, %9 ; [#uses=1] + br i1 %10, label %11, label %21 + +; <label>:11 ; preds = %5 + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = load %struct.Proto** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Proto* %13, i32 0, i32 7 ; [#uses=1] + %15 = load %struct.LocVar** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.LocVar* %15, i32 %12 ; [#uses=1] + %17 = getelementptr inbounds %struct.LocVar* %16, i32 0, i32 1 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = load i32* %4, align 4 ; [#uses=1] + %20 = icmp sle i32 %18, %19 ; [#uses=1] + br label %21 + +; <label>:21 ; preds = %11, %5 + %22 = phi i1 [ false, %5 ], [ %20, %11 ] ; [#uses=1] + br i1 %22, label %23, label %53 + +; <label>:23 ; preds = %21 + %24 = load i32* %4, align 4 ; [#uses=1] + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = load %struct.Proto** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 7 ; [#uses=1] + %28 = load %struct.LocVar** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.LocVar* %28, i32 %25 ; [#uses=1] + %30 = getelementptr inbounds %struct.LocVar* %29, i32 0, i32 2 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = icmp slt i32 %24, %31 ; [#uses=1] + br i1 %32, label %33, label %49 + +; <label>:33 ; preds = %23 + %34 = load i32* %3, align 4 ; [#uses=1] + %35 = add nsw i32 %34, -1 ; [#uses=1] + store i32 %35, i32* %3, align 4 + %36 = load i32* %3, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 0 ; [#uses=1] + br i1 %37, label %38, label %48 + +; <label>:38 ; preds = %33 + %39 = load i32* %i, align 4 ; [#uses=1] + %40 = load %struct.Proto** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Proto* %40, i32 0, i32 7 ; [#uses=1] + %42 = load %struct.LocVar** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.LocVar* %42, i32 %39 ; [#uses=1] + %44 = getelementptr inbounds %struct.LocVar* %43, i32 0, i32 0 ; [#uses=1] + %45 = load %union.TString** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %union.TString* %45, i32 1 ; [#uses=1] + %47 = bitcast %union.TString* %46 to i8* ; [#uses=1] + store i8* %47, i8** %1 + br label %54 + +; <label>:48 ; preds = %33 + br label %49 + +; <label>:49 ; preds = %48, %23 + br label %50 + +; <label>:50 ; preds = %49 + %51 = load i32* %i, align 4 ; [#uses=1] + %52 = add nsw i32 %51, 1 ; [#uses=1] + store i32 %52, i32* %i, align 4 + br label %5 + +; <label>:53 ; preds = %21 + store i8* null, i8** %1 + br label %54 + +; <label>:54 ; preds = %53, %38 + %55 = load i8** %1 ; [#uses=1] + ret i8* %55 +} + +; [#uses=2] +define hidden i32 @_Z18luaC_separateudataP9lua_Statei(%struct.lua_State* %L, i32 %all) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %g = alloca %struct.global_State*, align 4 ; [#uses=7] + %deadmem = alloca i32, align 4 ; [#uses=4] + %p = alloca %union.GCObject**, align 4 ; [#uses=5] + %curr = alloca %union.GCObject*, align 4 ; [#uses=17] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %all, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + store i32 0, i32* %deadmem, align 4 + %6 = load %struct.global_State** %g, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 21 ; [#uses=1] + %8 = load %struct.lua_State** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %9, %union.GCObject*** %p, align 4 + br label %10 + +; <label>:10 ; preds = %157, %0 + %11 = load %union.GCObject*** %p, align 4 ; [#uses=1] + %12 = load %union.GCObject** %11 ; [#uses=2] + store %union.GCObject* %12, %union.GCObject** %curr, align 4 + %13 = icmp ne %union.GCObject* %12, null ; [#uses=1] + br i1 %13, label %14, label %158 + +; <label>:14 ; preds = %10 + %15 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %struct.GCheader* ; [#uses=1] + %18 = getelementptr inbounds %struct.GCheader* %17, i32 0, i32 2 ; [#uses=1] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + %21 = and i32 %20, 3 ; [#uses=1] + %22 = icmp ne i32 %21, 0 ; [#uses=1] + br i1 %22, label %26, label %23 + +; <label>:23 ; preds = %14 + %24 = load i32* %2, align 4 ; [#uses=1] + %25 = icmp ne i32 %24, 0 ; [#uses=1] + br i1 %25, label %26, label %36 + +; <label>:26 ; preds = %23, %14 + %27 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %28 = getelementptr inbounds %union.GCObject* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast %struct.lua_State* %28 to %union.Udata* ; [#uses=1] + %30 = getelementptr inbounds %union.Udata* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %4* %30, i32 0, i32 2 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = zext i8 %32 to i32 ; [#uses=1] + %34 = and i32 %33, 8 ; [#uses=1] + %35 = icmp ne i32 %34, 0 ; [#uses=1] + br i1 %35, label %36, label %41 + +; <label>:36 ; preds = %26, %23 + %37 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.GCObject* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.lua_State* %38 to %struct.GCheader* ; [#uses=1] + %40 = getelementptr inbounds %struct.GCheader* %39, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %40, %union.GCObject*** %p, align 4 + br label %157 + +; <label>:41 ; preds = %26 + %42 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %43 = getelementptr inbounds %union.GCObject* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast %struct.lua_State* %43 to %union.Udata* ; [#uses=1] + %45 = getelementptr inbounds %union.Udata* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %4* %45, i32 0, i32 3 ; [#uses=1] + %47 = load %struct.Table** %46, align 4 ; [#uses=1] + %48 = icmp eq %struct.Table* %47, null ; [#uses=1] + br i1 %48, label %49, label %50 + +; <label>:49 ; preds = %41 + br label %79 + +; <label>:50 ; preds = %41 + %51 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.GCObject* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast %struct.lua_State* %52 to %union.Udata* ; [#uses=1] + %54 = getelementptr inbounds %union.Udata* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %4* %54, i32 0, i32 3 ; [#uses=1] + %56 = load %struct.Table** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.Table* %56, i32 0, i32 3 ; [#uses=1] + %58 = load i8* %57, align 1 ; [#uses=1] + %59 = zext i8 %58 to i32 ; [#uses=1] + %60 = and i32 %59, 4 ; [#uses=1] + %61 = icmp ne i32 %60, 0 ; [#uses=1] + br i1 %61, label %62, label %63 + +; <label>:62 ; preds = %50 + br label %77 + +; <label>:63 ; preds = %50 + %64 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %union.Udata* ; [#uses=1] + %67 = getelementptr inbounds %union.Udata* %66, i32 0, i32 0 ; [#uses=1] + %68 = getelementptr inbounds %4* %67, i32 0, i32 3 ; [#uses=1] + %69 = load %struct.Table** %68, align 4 ; [#uses=1] + %70 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.lua_State* %70, i32 0, i32 6 ; [#uses=1] + %72 = load %struct.global_State** %71, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.global_State* %72, i32 0, i32 24 ; [#uses=1] + %74 = getelementptr inbounds [17 x %union.TString*]* %73, i32 0, i32 2 ; [#uses=1] + %75 = load %union.TString** %74 ; [#uses=1] + %76 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %69, i32 2, %union.TString* %75) ; [#uses=1] + br label %77 + +; <label>:77 ; preds = %63, %62 + %78 = phi %struct.lua_TValue* [ null, %62 ], [ %76, %63 ] ; [#uses=1] + br label %79 + +; <label>:79 ; preds = %77, %49 + %80 = phi %struct.lua_TValue* [ null, %49 ], [ %78, %77 ] ; [#uses=1] + %81 = icmp eq %struct.lua_TValue* %80, null ; [#uses=1] + br i1 %81, label %82, label %96 + +; <label>:82 ; preds = %79 + %83 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %84 = getelementptr inbounds %union.GCObject* %83, i32 0, i32 0 ; [#uses=1] + %85 = bitcast %struct.lua_State* %84 to %union.Udata* ; [#uses=1] + %86 = getelementptr inbounds %union.Udata* %85, i32 0, i32 0 ; [#uses=1] + %87 = getelementptr inbounds %4* %86, i32 0, i32 2 ; [#uses=2] + %88 = load i8* %87, align 1 ; [#uses=1] + %89 = zext i8 %88 to i32 ; [#uses=1] + %90 = or i32 %89, 8 ; [#uses=1] + %91 = trunc i32 %90 to i8 ; [#uses=1] + store i8 %91, i8* %87, align 1 + %92 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %93 = getelementptr inbounds %union.GCObject* %92, i32 0, i32 0 ; [#uses=1] + %94 = bitcast %struct.lua_State* %93 to %struct.GCheader* ; [#uses=1] + %95 = getelementptr inbounds %struct.GCheader* %94, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %95, %union.GCObject*** %p, align 4 + br label %156 + +; <label>:96 ; preds = %79 + %97 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %98 = getelementptr inbounds %union.GCObject* %97, i32 0, i32 0 ; [#uses=1] + %99 = bitcast %struct.lua_State* %98 to %union.Udata* ; [#uses=1] + %100 = getelementptr inbounds %union.Udata* %99, i32 0, i32 0 ; [#uses=1] + %101 = getelementptr inbounds %4* %100, i32 0, i32 5 ; [#uses=1] + %102 = load i32* %101, align 4 ; [#uses=1] + %103 = add i32 20, %102 ; [#uses=1] + %104 = load i32* %deadmem, align 4 ; [#uses=1] + %105 = add i32 %104, %103 ; [#uses=1] + store i32 %105, i32* %deadmem, align 4 + %106 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %107 = getelementptr inbounds %union.GCObject* %106, i32 0, i32 0 ; [#uses=1] + %108 = bitcast %struct.lua_State* %107 to %union.Udata* ; [#uses=1] + %109 = getelementptr inbounds %union.Udata* %108, i32 0, i32 0 ; [#uses=1] + %110 = getelementptr inbounds %4* %109, i32 0, i32 2 ; [#uses=2] + %111 = load i8* %110, align 1 ; [#uses=1] + %112 = zext i8 %111 to i32 ; [#uses=1] + %113 = or i32 %112, 8 ; [#uses=1] + %114 = trunc i32 %113 to i8 ; [#uses=1] + store i8 %114, i8* %110, align 1 + %115 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %116 = getelementptr inbounds %union.GCObject* %115, i32 0, i32 0 ; [#uses=1] + %117 = bitcast %struct.lua_State* %116 to %struct.GCheader* ; [#uses=1] + %118 = getelementptr inbounds %struct.GCheader* %117, i32 0, i32 0 ; [#uses=1] + %119 = load %union.GCObject** %118, align 4 ; [#uses=1] + %120 = load %union.GCObject*** %p, align 4 ; [#uses=1] + store %union.GCObject* %119, %union.GCObject** %120 + %121 = load %struct.global_State** %g, align 4 ; [#uses=1] + %122 = getelementptr inbounds %struct.global_State* %121, i32 0, i32 11 ; [#uses=1] + %123 = load %union.GCObject** %122, align 4 ; [#uses=1] + %124 = icmp eq %union.GCObject* %123, null ; [#uses=1] + br i1 %124, label %125, label %133 + +; <label>:125 ; preds = %96 + %126 = load %union.GCObject** %curr, align 4 ; [#uses=2] + %127 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %128 = getelementptr inbounds %union.GCObject* %127, i32 0, i32 0 ; [#uses=1] + %129 = bitcast %struct.lua_State* %128 to %struct.GCheader* ; [#uses=1] + %130 = getelementptr inbounds %struct.GCheader* %129, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %126, %union.GCObject** %130, align 4 + %131 = load %struct.global_State** %g, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.global_State* %131, i32 0, i32 11 ; [#uses=1] + store %union.GCObject* %126, %union.GCObject** %132, align 4 + br label %155 + +; <label>:133 ; preds = %96 + %134 = load %struct.global_State** %g, align 4 ; [#uses=1] + %135 = getelementptr inbounds %struct.global_State* %134, i32 0, i32 11 ; [#uses=1] + %136 = load %union.GCObject** %135, align 4 ; [#uses=1] + %137 = getelementptr inbounds %union.GCObject* %136, i32 0, i32 0 ; [#uses=1] + %138 = bitcast %struct.lua_State* %137 to %struct.GCheader* ; [#uses=1] + %139 = getelementptr inbounds %struct.GCheader* %138, i32 0, i32 0 ; [#uses=1] + %140 = load %union.GCObject** %139, align 4 ; [#uses=1] + %141 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %142 = getelementptr inbounds %union.GCObject* %141, i32 0, i32 0 ; [#uses=1] + %143 = bitcast %struct.lua_State* %142 to %struct.GCheader* ; [#uses=1] + %144 = getelementptr inbounds %struct.GCheader* %143, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %140, %union.GCObject** %144, align 4 + %145 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %146 = load %struct.global_State** %g, align 4 ; [#uses=1] + %147 = getelementptr inbounds %struct.global_State* %146, i32 0, i32 11 ; [#uses=1] + %148 = load %union.GCObject** %147, align 4 ; [#uses=1] + %149 = getelementptr inbounds %union.GCObject* %148, i32 0, i32 0 ; [#uses=1] + %150 = bitcast %struct.lua_State* %149 to %struct.GCheader* ; [#uses=1] + %151 = getelementptr inbounds %struct.GCheader* %150, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %145, %union.GCObject** %151, align 4 + %152 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %153 = load %struct.global_State** %g, align 4 ; [#uses=1] + %154 = getelementptr inbounds %struct.global_State* %153, i32 0, i32 11 ; [#uses=1] + store %union.GCObject* %152, %union.GCObject** %154, align 4 + br label %155 + +; <label>:155 ; preds = %133, %125 + br label %156 + +; <label>:156 ; preds = %155, %82 + br label %157 + +; <label>:157 ; preds = %156, %36 + br label %10 + +; <label>:158 ; preds = %10 + %159 = load i32* %deadmem, align 4 ; [#uses=1] + ret i32 %159 +} + +; [#uses=1] +define hidden void @_Z13luaC_callGCTMP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + br label %2 + +; <label>:2 ; preds = %9, %0 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 11 ; [#uses=1] + %7 = load %union.GCObject** %6, align 4 ; [#uses=1] + %8 = icmp ne %union.GCObject* %7, null ; [#uses=1] + br i1 %8, label %9, label %11 + +; <label>:9 ; preds = %2 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z4GCTMP9lua_State(%struct.lua_State* %10) + br label %2 + +; <label>:11 ; preds = %2 + ret void +} + +; [#uses=2] +define internal void @_Z4GCTMP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %g = alloca %struct.global_State*, align 4 ; [#uses=12] + %o = alloca %union.GCObject*, align 4 ; [#uses=6] + %udata = alloca %union.Udata*, align 4 ; [#uses=7] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %oldah = alloca i8, align 1 ; [#uses=2] + %oldt = alloca i32, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 11 ; [#uses=1] + %7 = load %union.GCObject** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %union.GCObject* %7, i32 0, i32 0 ; [#uses=1] + %9 = bitcast %struct.lua_State* %8 to %struct.GCheader* ; [#uses=1] + %10 = getelementptr inbounds %struct.GCheader* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %union.GCObject** %10, align 4 ; [#uses=1] + store %union.GCObject* %11, %union.GCObject** %o, align 4 + %12 = load %union.GCObject** %o, align 4 ; [#uses=1] + %13 = getelementptr inbounds %union.GCObject* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast %struct.lua_State* %13 to %union.Udata* ; [#uses=1] + store %union.Udata* %14, %union.Udata** %udata, align 4 + %15 = load %union.GCObject** %o, align 4 ; [#uses=1] + %16 = load %struct.global_State** %g, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.global_State* %16, i32 0, i32 11 ; [#uses=1] + %18 = load %union.GCObject** %17, align 4 ; [#uses=1] + %19 = icmp eq %union.GCObject* %15, %18 ; [#uses=1] + br i1 %19, label %20, label %23 + +; <label>:20 ; preds = %0 + %21 = load %struct.global_State** %g, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 11 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %22, align 4 + br label %34 + +; <label>:23 ; preds = %0 + %24 = load %union.Udata** %udata, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.Udata* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %4* %25, i32 0, i32 0 ; [#uses=1] + %27 = load %union.GCObject** %26, align 4 ; [#uses=1] + %28 = load %struct.global_State** %g, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.global_State* %28, i32 0, i32 11 ; [#uses=1] + %30 = load %union.GCObject** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.GCObject* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to %struct.GCheader* ; [#uses=1] + %33 = getelementptr inbounds %struct.GCheader* %32, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %27, %union.GCObject** %33, align 4 + br label %34 + +; <label>:34 ; preds = %23, %20 + %35 = load %struct.global_State** %g, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.global_State* %35, i32 0, i32 21 ; [#uses=1] + %37 = load %struct.lua_State** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 0 ; [#uses=1] + %39 = load %union.GCObject** %38, align 4 ; [#uses=1] + %40 = load %union.Udata** %udata, align 4 ; [#uses=1] + %41 = getelementptr inbounds %union.Udata* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %4* %41, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %39, %union.GCObject** %42, align 4 + %43 = load %union.GCObject** %o, align 4 ; [#uses=1] + %44 = load %struct.global_State** %g, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.global_State* %44, i32 0, i32 21 ; [#uses=1] + %46 = load %struct.lua_State** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_State* %46, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %43, %union.GCObject** %47, align 4 + %48 = load %union.GCObject** %o, align 4 ; [#uses=1] + %49 = getelementptr inbounds %union.GCObject* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast %struct.lua_State* %49 to %struct.GCheader* ; [#uses=1] + %51 = getelementptr inbounds %struct.GCheader* %50, i32 0, i32 2 ; [#uses=1] + %52 = load i8* %51, align 1 ; [#uses=1] + %53 = zext i8 %52 to i32 ; [#uses=1] + %54 = and i32 %53, 248 ; [#uses=1] + %55 = load %struct.global_State** %g, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.global_State* %55, i32 0, i32 3 ; [#uses=1] + %57 = load i8* %56, align 1 ; [#uses=1] + %58 = zext i8 %57 to i32 ; [#uses=1] + %59 = and i32 %58, 3 ; [#uses=1] + %60 = trunc i32 %59 to i8 ; [#uses=1] + %61 = zext i8 %60 to i32 ; [#uses=1] + %62 = or i32 %54, %61 ; [#uses=1] + %63 = trunc i32 %62 to i8 ; [#uses=1] + %64 = load %union.GCObject** %o, align 4 ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %struct.GCheader* ; [#uses=1] + %67 = getelementptr inbounds %struct.GCheader* %66, i32 0, i32 2 ; [#uses=1] + store i8 %63, i8* %67, align 1 + %68 = load %union.Udata** %udata, align 4 ; [#uses=1] + %69 = getelementptr inbounds %union.Udata* %68, i32 0, i32 0 ; [#uses=1] + %70 = getelementptr inbounds %4* %69, i32 0, i32 3 ; [#uses=1] + %71 = load %struct.Table** %70, align 4 ; [#uses=1] + %72 = icmp eq %struct.Table* %71, null ; [#uses=1] + br i1 %72, label %73, label %74 + +; <label>:73 ; preds = %34 + br label %99 + +; <label>:74 ; preds = %34 + %75 = load %union.Udata** %udata, align 4 ; [#uses=1] + %76 = getelementptr inbounds %union.Udata* %75, i32 0, i32 0 ; [#uses=1] + %77 = getelementptr inbounds %4* %76, i32 0, i32 3 ; [#uses=1] + %78 = load %struct.Table** %77, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.Table* %78, i32 0, i32 3 ; [#uses=1] + %80 = load i8* %79, align 1 ; [#uses=1] + %81 = zext i8 %80 to i32 ; [#uses=1] + %82 = and i32 %81, 4 ; [#uses=1] + %83 = icmp ne i32 %82, 0 ; [#uses=1] + br i1 %83, label %84, label %85 + +; <label>:84 ; preds = %74 + br label %97 + +; <label>:85 ; preds = %74 + %86 = load %union.Udata** %udata, align 4 ; [#uses=1] + %87 = getelementptr inbounds %union.Udata* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %4* %87, i32 0, i32 3 ; [#uses=1] + %89 = load %struct.Table** %88, align 4 ; [#uses=1] + %90 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.lua_State* %90, i32 0, i32 6 ; [#uses=1] + %92 = load %struct.global_State** %91, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.global_State* %92, i32 0, i32 24 ; [#uses=1] + %94 = getelementptr inbounds [17 x %union.TString*]* %93, i32 0, i32 2 ; [#uses=1] + %95 = load %union.TString** %94 ; [#uses=1] + %96 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %89, i32 2, %union.TString* %95) ; [#uses=1] + br label %97 + +; <label>:97 ; preds = %85, %84 + %98 = phi %struct.lua_TValue* [ null, %84 ], [ %96, %85 ] ; [#uses=1] + br label %99 + +; <label>:99 ; preds = %97, %73 + %100 = phi %struct.lua_TValue* [ null, %73 ], [ %98, %97 ] ; [#uses=1] + store %struct.lua_TValue* %100, %struct.lua_TValue** %tm, align 4 + %101 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %102 = icmp ne %struct.lua_TValue* %101, null ; [#uses=1] + br i1 %102, label %103, label %160 + +; <label>:103 ; preds = %99 + %104 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_State* %104, i32 0, i32 18 ; [#uses=1] + %106 = load i8* %105, align 1 ; [#uses=1] + store i8 %106, i8* %oldah, align 1 + %107 = load %struct.global_State** %g, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.global_State* %107, i32 0, i32 13 ; [#uses=1] + %109 = load i32* %108, align 4 ; [#uses=1] + store i32 %109, i32* %oldt, align 4 + %110 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.lua_State* %110, i32 0, i32 18 ; [#uses=1] + store i8 0, i8* %111, align 1 + %112 = load %struct.global_State** %g, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.global_State* %112, i32 0, i32 14 ; [#uses=1] + %114 = load i32* %113, align 4 ; [#uses=1] + %115 = mul i32 2, %114 ; [#uses=1] + %116 = load %struct.global_State** %g, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.global_State* %116, i32 0, i32 13 ; [#uses=1] + store i32 %115, i32* %117, align 4 + %118 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + store %struct.lua_TValue* %118, %struct.lua_TValue** %o2, align 4 + %119 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_State* %119, i32 0, i32 4 ; [#uses=1] + %121 = load %struct.lua_TValue** %120, align 4 ; [#uses=1] + store %struct.lua_TValue* %121, %struct.lua_TValue** %o1, align 4 + %122 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_TValue* %122, i32 0, i32 0 ; [#uses=1] + %124 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %125 = getelementptr inbounds %struct.lua_TValue* %124, i32 0, i32 0 ; [#uses=1] + %126 = bitcast %union.anon* %123 to i8* ; [#uses=1] + %127 = bitcast %union.anon* %125 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %126, i8* %127, i32 8, i32 4, i1 false) + %128 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.lua_TValue* %128, i32 0, i32 1 ; [#uses=1] + %130 = load i32* %129, align 4 ; [#uses=1] + %131 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.lua_TValue* %131, i32 0, i32 1 ; [#uses=1] + store i32 %130, i32* %132, align 4 + %133 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %134 = getelementptr inbounds %struct.lua_State* %133, i32 0, i32 4 ; [#uses=1] + %135 = load %struct.lua_TValue** %134, align 4 ; [#uses=1] + %136 = getelementptr inbounds %struct.lua_TValue* %135, i32 1 ; [#uses=1] + store %struct.lua_TValue* %136, %struct.lua_TValue** %i_o, align 4 + %137 = load %union.Udata** %udata, align 4 ; [#uses=1] + %138 = bitcast %union.Udata* %137 to %union.GCObject* ; [#uses=1] + %139 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %140 = getelementptr inbounds %struct.lua_TValue* %139, i32 0, i32 0 ; [#uses=1] + %141 = getelementptr inbounds %union.anon* %140, i32 0, i32 0 ; [#uses=1] + %142 = bitcast double* %141 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %138, %union.GCObject** %142, align 4 + %143 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %144 = getelementptr inbounds %struct.lua_TValue* %143, i32 0, i32 1 ; [#uses=1] + store i32 7, i32* %144, align 4 + %145 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.lua_State* %145, i32 0, i32 4 ; [#uses=2] + %147 = load %struct.lua_TValue** %146, align 4 ; [#uses=1] + %148 = getelementptr inbounds %struct.lua_TValue* %147, i32 2 ; [#uses=1] + store %struct.lua_TValue* %148, %struct.lua_TValue** %146, align 4 + %149 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %150 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %151 = getelementptr inbounds %struct.lua_State* %150, i32 0, i32 4 ; [#uses=1] + %152 = load %struct.lua_TValue** %151, align 4 ; [#uses=1] + %153 = getelementptr inbounds %struct.lua_TValue* %152, i32 -2 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %149, %struct.lua_TValue* %153, i32 0) + %154 = load i8* %oldah, align 1 ; [#uses=1] + %155 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.lua_State* %155, i32 0, i32 18 ; [#uses=1] + store i8 %154, i8* %156, align 1 + %157 = load i32* %oldt, align 4 ; [#uses=1] + %158 = load %struct.global_State** %g, align 4 ; [#uses=1] + %159 = getelementptr inbounds %struct.global_State* %158, i32 0, i32 13 ; [#uses=1] + store i32 %157, i32* %159, align 4 + br label %160 + +; <label>:160 ; preds = %103, %99 + ret void +} + +; [#uses=1] +define hidden void @_Z12luaC_freeallP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %g = alloca %struct.global_State*, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 3 ; [#uses=1] + store i8 67, i8* %6, align 1 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.global_State** %g, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 6 ; [#uses=1] + %10 = call %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %7, %union.GCObject** %9, i32 -3) ; [#uses=0] + store i32 0, i32* %i, align 4 + br label %11 + +; <label>:11 ; preds = %27, %0 + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %struct.stringtable* %14, i32 0, i32 2 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = icmp slt i32 %12, %16 ; [#uses=1] + br i1 %17, label %18, label %30 + +; <label>:18 ; preds = %11 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load i32* %i, align 4 ; [#uses=1] + %21 = load %struct.global_State** %g, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %struct.stringtable* %22, i32 0, i32 0 ; [#uses=1] + %24 = load %union.GCObject*** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.GCObject** %24, i32 %20 ; [#uses=1] + %26 = call %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %19, %union.GCObject** %25, i32 -3) ; [#uses=0] + br label %27 + +; <label>:27 ; preds = %18 + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = add nsw i32 %28, 1 ; [#uses=1] + store i32 %29, i32* %i, align 4 + br label %11 + +; <label>:30 ; preds = %11 + ret void +} + +; [#uses=5] +define internal %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %L, %union.GCObject** %p, i32 %count) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca %union.GCObject**, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=3] + %curr = alloca %union.GCObject*, align 4 ; [#uses=11] + %g = alloca %struct.global_State*, align 4 ; [#uses=5] + %deadmask = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.GCObject** %p, %union.GCObject*** %2, align 4 + store i32 %count, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + store %struct.global_State* %6, %struct.global_State** %g, align 4 + %7 = load %struct.global_State** %g, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 3 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = zext i8 %9 to i32 ; [#uses=1] + %11 = xor i32 %10, 3 ; [#uses=1] + store i32 %11, i32* %deadmask, align 4 + br label %12 + +; <label>:12 ; preds = %95, %0 + %13 = load %union.GCObject*** %2, align 4 ; [#uses=1] + %14 = load %union.GCObject** %13 ; [#uses=2] + store %union.GCObject* %14, %union.GCObject** %curr, align 4 + %15 = icmp ne %union.GCObject* %14, null ; [#uses=1] + br i1 %15, label %16, label %20 + +; <label>:16 ; preds = %12 + %17 = load i32* %3, align 4 ; [#uses=2] + %18 = add i32 %17, -1 ; [#uses=1] + store i32 %18, i32* %3, align 4 + %19 = icmp ugt i32 %17, 0 ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %16, %12 + %21 = phi i1 [ false, %12 ], [ %19, %16 ] ; [#uses=1] + br i1 %21, label %22, label %96 + +; <label>:22 ; preds = %20 + %23 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %24 = getelementptr inbounds %union.GCObject* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast %struct.lua_State* %24 to %struct.GCheader* ; [#uses=1] + %26 = getelementptr inbounds %struct.GCheader* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i8* %26, align 1 ; [#uses=1] + %28 = zext i8 %27 to i32 ; [#uses=1] + %29 = icmp eq i32 %28, 8 ; [#uses=1] + br i1 %29, label %30, label %36 + +; <label>:30 ; preds = %22 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %33 = getelementptr inbounds %union.GCObject* %32, i32 0, i32 0 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 24 ; [#uses=1] + %35 = call %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %31, %union.GCObject** %34, i32 -3) ; [#uses=0] + br label %36 + +; <label>:36 ; preds = %30, %22 + %37 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.GCObject* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.lua_State* %38 to %struct.GCheader* ; [#uses=1] + %40 = getelementptr inbounds %struct.GCheader* %39, i32 0, i32 2 ; [#uses=1] + %41 = load i8* %40, align 1 ; [#uses=1] + %42 = zext i8 %41 to i32 ; [#uses=1] + %43 = xor i32 %42, 3 ; [#uses=1] + %44 = load i32* %deadmask, align 4 ; [#uses=1] + %45 = and i32 %43, %44 ; [#uses=1] + %46 = icmp ne i32 %45, 0 ; [#uses=1] + br i1 %46, label %47, label %72 + +; <label>:47 ; preds = %36 + %48 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %49 = getelementptr inbounds %union.GCObject* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast %struct.lua_State* %49 to %struct.GCheader* ; [#uses=1] + %51 = getelementptr inbounds %struct.GCheader* %50, i32 0, i32 2 ; [#uses=1] + %52 = load i8* %51, align 1 ; [#uses=1] + %53 = zext i8 %52 to i32 ; [#uses=1] + %54 = and i32 %53, 248 ; [#uses=1] + %55 = load %struct.global_State** %g, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.global_State* %55, i32 0, i32 3 ; [#uses=1] + %57 = load i8* %56, align 1 ; [#uses=1] + %58 = zext i8 %57 to i32 ; [#uses=1] + %59 = and i32 %58, 3 ; [#uses=1] + %60 = trunc i32 %59 to i8 ; [#uses=1] + %61 = zext i8 %60 to i32 ; [#uses=1] + %62 = or i32 %54, %61 ; [#uses=1] + %63 = trunc i32 %62 to i8 ; [#uses=1] + %64 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %struct.GCheader* ; [#uses=1] + %67 = getelementptr inbounds %struct.GCheader* %66, i32 0, i32 2 ; [#uses=1] + store i8 %63, i8* %67, align 1 + %68 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %69 = getelementptr inbounds %union.GCObject* %68, i32 0, i32 0 ; [#uses=1] + %70 = bitcast %struct.lua_State* %69 to %struct.GCheader* ; [#uses=1] + %71 = getelementptr inbounds %struct.GCheader* %70, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %71, %union.GCObject*** %2, align 4 + br label %95 + +; <label>:72 ; preds = %36 + %73 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %74 = getelementptr inbounds %union.GCObject* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast %struct.lua_State* %74 to %struct.GCheader* ; [#uses=1] + %76 = getelementptr inbounds %struct.GCheader* %75, i32 0, i32 0 ; [#uses=1] + %77 = load %union.GCObject** %76, align 4 ; [#uses=1] + %78 = load %union.GCObject*** %2, align 4 ; [#uses=1] + store %union.GCObject* %77, %union.GCObject** %78 + %79 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %80 = load %struct.global_State** %g, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.global_State* %80, i32 0, i32 6 ; [#uses=1] + %82 = load %union.GCObject** %81, align 4 ; [#uses=1] + %83 = icmp eq %union.GCObject* %79, %82 ; [#uses=1] + br i1 %83, label %84, label %92 + +; <label>:84 ; preds = %72 + %85 = load %union.GCObject** %curr, align 4 ; [#uses=1] + %86 = getelementptr inbounds %union.GCObject* %85, i32 0, i32 0 ; [#uses=1] + %87 = bitcast %struct.lua_State* %86 to %struct.GCheader* ; [#uses=1] + %88 = getelementptr inbounds %struct.GCheader* %87, i32 0, i32 0 ; [#uses=1] + %89 = load %union.GCObject** %88, align 4 ; [#uses=1] + %90 = load %struct.global_State** %g, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.global_State* %90, i32 0, i32 6 ; [#uses=1] + store %union.GCObject* %89, %union.GCObject** %91, align 4 + br label %92 + +; <label>:92 ; preds = %84, %72 + %93 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %94 = load %union.GCObject** %curr, align 4 ; [#uses=1] + call void @_Z7freeobjP9lua_StateP8GCObject(%struct.lua_State* %93, %union.GCObject* %94) + br label %95 + +; <label>:95 ; preds = %92, %47 + br label %12 + +; <label>:96 ; preds = %20 + %97 = load %union.GCObject*** %2, align 4 ; [#uses=1] + ret %union.GCObject** %97 +} + +; [#uses=16] +define hidden void @_Z9luaC_stepP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %g = alloca %struct.global_State*, align 4 ; [#uses=16] + %lim = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 18 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = mul i32 10, %7 ; [#uses=1] + store i32 %8, i32* %lim, align 4 + %9 = load i32* %lim, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %12 + +; <label>:11 ; preds = %0 + store i32 2147483646, i32* %lim, align 4 + br label %12 + +; <label>:12 ; preds = %11, %0 + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 14 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = load %struct.global_State** %g, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.global_State* %16, i32 0, i32 13 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = sub i32 %15, %18 ; [#uses=1] + %20 = load %struct.global_State** %g, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.global_State* %20, i32 0, i32 16 ; [#uses=2] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = add i32 %22, %19 ; [#uses=1] + store i32 %23, i32* %21, align 4 + br label %24 + +; <label>:24 ; preds = %36, %12 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = call i32 @_Z10singlestepP9lua_State(%struct.lua_State* %25) ; [#uses=1] + %27 = load i32* %lim, align 4 ; [#uses=1] + %28 = sub nsw i32 %27, %26 ; [#uses=1] + store i32 %28, i32* %lim, align 4 + %29 = load %struct.global_State** %g, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.global_State* %29, i32 0, i32 4 ; [#uses=1] + %31 = load i8* %30, align 1 ; [#uses=1] + %32 = zext i8 %31 to i32 ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %35 + +; <label>:34 ; preds = %24 + br label %39 + +; <label>:35 ; preds = %24 + br label %36 + +; <label>:36 ; preds = %35 + %37 = load i32* %lim, align 4 ; [#uses=1] + %38 = icmp sgt i32 %37, 0 ; [#uses=1] + br i1 %38, label %24, label %39 + +; <label>:39 ; preds = %36, %34 + %40 = load %struct.global_State** %g, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.global_State* %40, i32 0, i32 4 ; [#uses=1] + %42 = load i8* %41, align 1 ; [#uses=1] + %43 = zext i8 %42 to i32 ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %68 + +; <label>:45 ; preds = %39 + %46 = load %struct.global_State** %g, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.global_State* %46, i32 0, i32 16 ; [#uses=1] + %48 = load i32* %47, align 4 ; [#uses=1] + %49 = icmp ult i32 %48, 1024 ; [#uses=1] + br i1 %49, label %50, label %57 + +; <label>:50 ; preds = %45 + %51 = load %struct.global_State** %g, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.global_State* %51, i32 0, i32 14 ; [#uses=1] + %53 = load i32* %52, align 4 ; [#uses=1] + %54 = add i32 %53, 1024 ; [#uses=1] + %55 = load %struct.global_State** %g, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.global_State* %55, i32 0, i32 13 ; [#uses=1] + store i32 %54, i32* %56, align 4 + br label %67 + +; <label>:57 ; preds = %45 + %58 = load %struct.global_State** %g, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.global_State* %58, i32 0, i32 16 ; [#uses=2] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = sub i32 %60, 1024 ; [#uses=1] + store i32 %61, i32* %59, align 4 + %62 = load %struct.global_State** %g, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.global_State* %62, i32 0, i32 14 ; [#uses=1] + %64 = load i32* %63, align 4 ; [#uses=1] + %65 = load %struct.global_State** %g, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.global_State* %65, i32 0, i32 13 ; [#uses=1] + store i32 %64, i32* %66, align 4 + br label %67 + +; <label>:67 ; preds = %57, %50 + br label %79 + +; <label>:68 ; preds = %39 + %69 = load %struct.global_State** %g, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.global_State* %69, i32 0, i32 15 ; [#uses=1] + %71 = load i32* %70, align 4 ; [#uses=1] + %72 = udiv i32 %71, 100 ; [#uses=1] + %73 = load %struct.global_State** %g, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.global_State* %73, i32 0, i32 17 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + %76 = mul i32 %72, %75 ; [#uses=1] + %77 = load %struct.global_State** %g, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.global_State* %77, i32 0, i32 13 ; [#uses=1] + store i32 %76, i32* %78, align 4 + br label %79 + +; <label>:79 ; preds = %68, %67 + ret void +} + +; [#uses=3] +define internal i32 @_Z10singlestepP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=9] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %g = alloca %struct.global_State*, align 4 ; [#uses=24] + %old = alloca i32, align 4 ; [#uses=2] + %old1 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + %6 = load %struct.global_State** %g, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.global_State* %6, i32 0, i32 4 ; [#uses=1] + %8 = load i8* %7, align 1 ; [#uses=1] + %9 = zext i8 %8 to i32 ; [#uses=1] + switch i32 %9, label %110 [ + i32 0, label %10 + i32 1, label %12 + i32 2, label %22 + i32 3, label %58 + i32 4, label %88 + ] + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8markrootP9lua_State(%struct.lua_State* %11) + store i32 0, i32* %1 + br label %111 + +; <label>:12 ; preds = %0 + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 8 ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = icmp ne %union.GCObject* %15, null ; [#uses=1] + br i1 %16, label %17, label %20 + +; <label>:17 ; preds = %12 + %18 = load %struct.global_State** %g, align 4 ; [#uses=1] + %19 = call i32 @_Z13propagatemarkP12global_State(%struct.global_State* %18) ; [#uses=1] + store i32 %19, i32* %1 + br label %111 + +; <label>:20 ; preds = %12 + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z6atomicP9lua_State(%struct.lua_State* %21) + store i32 0, i32* %1 + br label %111 + +; <label>:22 ; preds = %0 + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.global_State* %23, i32 0, i32 14 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + store i32 %25, i32* %old, align 4 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load %struct.global_State** %g, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.global_State* %27, i32 0, i32 5 ; [#uses=2] + %29 = load i32* %28, align 4 ; [#uses=2] + %30 = add nsw i32 %29, 1 ; [#uses=1] + store i32 %30, i32* %28, align 4 + %31 = load %struct.global_State** %g, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.global_State* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %struct.stringtable* %32, i32 0, i32 0 ; [#uses=1] + %34 = load %union.GCObject*** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %union.GCObject** %34, i32 %29 ; [#uses=1] + %36 = call %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %26, %union.GCObject** %35, i32 -3) ; [#uses=0] + %37 = load %struct.global_State** %g, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 5 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = load %struct.global_State** %g, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.global_State* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %struct.stringtable* %41, i32 0, i32 2 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = icmp sge i32 %39, %43 ; [#uses=1] + br i1 %44, label %45, label %48 + +; <label>:45 ; preds = %22 + %46 = load %struct.global_State** %g, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.global_State* %46, i32 0, i32 4 ; [#uses=1] + store i8 3, i8* %47, align 1 + br label %48 + +; <label>:48 ; preds = %45, %22 + %49 = load i32* %old, align 4 ; [#uses=1] + %50 = load %struct.global_State** %g, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.global_State* %50, i32 0, i32 14 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = sub i32 %49, %52 ; [#uses=1] + %54 = load %struct.global_State** %g, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.global_State* %54, i32 0, i32 15 ; [#uses=2] + %56 = load i32* %55, align 4 ; [#uses=1] + %57 = sub i32 %56, %53 ; [#uses=1] + store i32 %57, i32* %55, align 4 + store i32 10, i32* %1 + br label %111 + +; <label>:58 ; preds = %0 + %59 = load %struct.global_State** %g, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.global_State* %59, i32 0, i32 14 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + store i32 %61, i32* %old1, align 4 + %62 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %63 = load %struct.global_State** %g, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.global_State* %63, i32 0, i32 7 ; [#uses=1] + %65 = load %union.GCObject*** %64, align 4 ; [#uses=1] + %66 = call %union.GCObject** @_Z9sweeplistP9lua_StatePP8GCObjectj(%struct.lua_State* %62, %union.GCObject** %65, i32 40) ; [#uses=1] + %67 = load %struct.global_State** %g, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.global_State* %67, i32 0, i32 7 ; [#uses=1] + store %union.GCObject** %66, %union.GCObject*** %68, align 4 + %69 = load %struct.global_State** %g, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.global_State* %69, i32 0, i32 7 ; [#uses=1] + %71 = load %union.GCObject*** %70, align 4 ; [#uses=1] + %72 = load %union.GCObject** %71 ; [#uses=1] + %73 = icmp eq %union.GCObject* %72, null ; [#uses=1] + br i1 %73, label %74, label %78 + +; <label>:74 ; preds = %58 + %75 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10checkSizesP9lua_State(%struct.lua_State* %75) + %76 = load %struct.global_State** %g, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.global_State* %76, i32 0, i32 4 ; [#uses=1] + store i8 4, i8* %77, align 1 + br label %78 + +; <label>:78 ; preds = %74, %58 + %79 = load i32* %old1, align 4 ; [#uses=1] + %80 = load %struct.global_State** %g, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.global_State* %80, i32 0, i32 14 ; [#uses=1] + %82 = load i32* %81, align 4 ; [#uses=1] + %83 = sub i32 %79, %82 ; [#uses=1] + %84 = load %struct.global_State** %g, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.global_State* %84, i32 0, i32 15 ; [#uses=2] + %86 = load i32* %85, align 4 ; [#uses=1] + %87 = sub i32 %86, %83 ; [#uses=1] + store i32 %87, i32* %85, align 4 + store i32 400, i32* %1 + br label %111 + +; <label>:88 ; preds = %0 + %89 = load %struct.global_State** %g, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.global_State* %89, i32 0, i32 11 ; [#uses=1] + %91 = load %union.GCObject** %90, align 4 ; [#uses=1] + %92 = icmp ne %union.GCObject* %91, null ; [#uses=1] + br i1 %92, label %93, label %105 + +; <label>:93 ; preds = %88 + %94 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z4GCTMP9lua_State(%struct.lua_State* %94) + %95 = load %struct.global_State** %g, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.global_State* %95, i32 0, i32 15 ; [#uses=1] + %97 = load i32* %96, align 4 ; [#uses=1] + %98 = icmp ugt i32 %97, 100 ; [#uses=1] + br i1 %98, label %99, label %104 + +; <label>:99 ; preds = %93 + %100 = load %struct.global_State** %g, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.global_State* %100, i32 0, i32 15 ; [#uses=2] + %102 = load i32* %101, align 4 ; [#uses=1] + %103 = sub i32 %102, 100 ; [#uses=1] + store i32 %103, i32* %101, align 4 + br label %104 + +; <label>:104 ; preds = %99, %93 + store i32 100, i32* %1 + br label %111 + +; <label>:105 ; preds = %88 + %106 = load %struct.global_State** %g, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.global_State* %106, i32 0, i32 4 ; [#uses=1] + store i8 0, i8* %107, align 1 + %108 = load %struct.global_State** %g, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.global_State* %108, i32 0, i32 16 ; [#uses=1] + store i32 0, i32* %109, align 4 + store i32 0, i32* %1 + br label %111 + +; <label>:110 ; preds = %0 + store i32 0, i32* %1 + br label %111 + +; <label>:111 ; preds = %110, %105, %104, %78, %48, %20, %17, %10 + %112 = load i32* %1 ; [#uses=1] + ret i32 %112 +} + +; [#uses=1] +define hidden void @_Z11luaC_fullgcP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %g = alloca %struct.global_State*, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 4 ; [#uses=1] + %7 = load i8* %6, align 1 ; [#uses=1] + %8 = zext i8 %7 to i32 ; [#uses=1] + %9 = icmp sle i32 %8, 1 ; [#uses=1] + br i1 %9, label %10, label %25 + +; <label>:10 ; preds = %0 + %11 = load %struct.global_State** %g, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 5 ; [#uses=1] + store i32 0, i32* %12, align 4 + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 6 ; [#uses=1] + %15 = load %struct.global_State** %g, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.global_State* %15, i32 0, i32 7 ; [#uses=1] + store %union.GCObject** %14, %union.GCObject*** %16, align 4 + %17 = load %struct.global_State** %g, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.global_State* %17, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %18, align 4 + %19 = load %struct.global_State** %g, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.global_State* %19, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %20, align 4 + %21 = load %struct.global_State** %g, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 10 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %22, align 4 + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.global_State* %23, i32 0, i32 4 ; [#uses=1] + store i8 2, i8* %24, align 1 + br label %25 + +; <label>:25 ; preds = %10, %0 + br label %26 + +; <label>:26 ; preds = %32, %25 + %27 = load %struct.global_State** %g, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.global_State* %27, i32 0, i32 4 ; [#uses=1] + %29 = load i8* %28, align 1 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + %31 = icmp ne i32 %30, 4 ; [#uses=1] + br i1 %31, label %32, label %35 + +; <label>:32 ; preds = %26 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = call i32 @_Z10singlestepP9lua_State(%struct.lua_State* %33) ; [#uses=0] + br label %26 + +; <label>:35 ; preds = %26 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z8markrootP9lua_State(%struct.lua_State* %36) + br label %37 + +; <label>:37 ; preds = %43, %35 + %38 = load %struct.global_State** %g, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.global_State* %38, i32 0, i32 4 ; [#uses=1] + %40 = load i8* %39, align 1 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = icmp ne i32 %41, 0 ; [#uses=1] + br i1 %42, label %43, label %46 + +; <label>:43 ; preds = %37 + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %45 = call i32 @_Z10singlestepP9lua_State(%struct.lua_State* %44) ; [#uses=0] + br label %37 + +; <label>:46 ; preds = %37 + %47 = load %struct.global_State** %g, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.global_State* %47, i32 0, i32 15 ; [#uses=1] + %49 = load i32* %48, align 4 ; [#uses=1] + %50 = udiv i32 %49, 100 ; [#uses=1] + %51 = load %struct.global_State** %g, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.global_State* %51, i32 0, i32 17 ; [#uses=1] + %53 = load i32* %52, align 4 ; [#uses=1] + %54 = mul i32 %50, %53 ; [#uses=1] + %55 = load %struct.global_State** %g, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.global_State* %55, i32 0, i32 13 ; [#uses=1] + store i32 %54, i32* %56, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z8markrootP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %g = alloca %struct.global_State*, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %6, align 4 + %7 = load %struct.global_State** %g, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %8, align 4 + %9 = load %struct.global_State** %g, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.global_State* %9, i32 0, i32 10 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %10, align 4 + %11 = load %struct.global_State** %g, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 21 ; [#uses=1] + %13 = load %struct.lua_State** %12, align 4 ; [#uses=1] + %14 = bitcast %struct.lua_State* %13 to %union.GCObject* ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.GCheader* ; [#uses=1] + %17 = getelementptr inbounds %struct.GCheader* %16, i32 0, i32 2 ; [#uses=1] + %18 = load i8* %17, align 1 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + %20 = and i32 %19, 3 ; [#uses=1] + %21 = icmp ne i32 %20, 0 ; [#uses=1] + br i1 %21, label %22, label %28 + +; <label>:22 ; preds = %0 + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = load %struct.global_State** %g, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.global_State* %24, i32 0, i32 21 ; [#uses=1] + %26 = load %struct.lua_State** %25, align 4 ; [#uses=1] + %27 = bitcast %struct.lua_State* %26 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %23, %union.GCObject* %27) + br label %28 + +; <label>:28 ; preds = %22, %0 + %29 = load %struct.global_State** %g, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.global_State* %29, i32 0, i32 21 ; [#uses=1] + %31 = load %struct.lua_State** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 22 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 0, i32 1 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = icmp sge i32 %34, 4 ; [#uses=1] + br i1 %35, label %36, label %62 + +; <label>:36 ; preds = %28 + %37 = load %struct.global_State** %g, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 21 ; [#uses=1] + %39 = load %struct.lua_State** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 22 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %union.anon* %41, i32 0, i32 0 ; [#uses=1] + %43 = bitcast double* %42 to %union.GCObject** ; [#uses=1] + %44 = load %union.GCObject** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.GCObject* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.lua_State* %45 to %struct.GCheader* ; [#uses=1] + %47 = getelementptr inbounds %struct.GCheader* %46, i32 0, i32 2 ; [#uses=1] + %48 = load i8* %47, align 1 ; [#uses=1] + %49 = zext i8 %48 to i32 ; [#uses=1] + %50 = and i32 %49, 3 ; [#uses=1] + %51 = icmp ne i32 %50, 0 ; [#uses=1] + br i1 %51, label %52, label %62 + +; <label>:52 ; preds = %36 + %53 = load %struct.global_State** %g, align 4 ; [#uses=1] + %54 = load %struct.global_State** %g, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.global_State* %54, i32 0, i32 21 ; [#uses=1] + %56 = load %struct.lua_State** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_State* %56, i32 0, i32 22 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 0 ; [#uses=1] + %59 = getelementptr inbounds %union.anon* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast double* %59 to %union.GCObject** ; [#uses=1] + %61 = load %union.GCObject** %60, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %53, %union.GCObject* %61) + br label %62 + +; <label>:62 ; preds = %52, %36, %28 + %63 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_State* %63, i32 0, i32 6 ; [#uses=1] + %65 = load %struct.global_State** %64, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.global_State* %65, i32 0, i32 20 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_TValue* %66, i32 0, i32 1 ; [#uses=1] + %68 = load i32* %67, align 4 ; [#uses=1] + %69 = icmp sge i32 %68, 4 ; [#uses=1] + br i1 %69, label %70, label %96 + +; <label>:70 ; preds = %62 + %71 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_State* %71, i32 0, i32 6 ; [#uses=1] + %73 = load %struct.global_State** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.global_State* %73, i32 0, i32 20 ; [#uses=1] + %75 = getelementptr inbounds %struct.lua_TValue* %74, i32 0, i32 0 ; [#uses=1] + %76 = getelementptr inbounds %union.anon* %75, i32 0, i32 0 ; [#uses=1] + %77 = bitcast double* %76 to %union.GCObject** ; [#uses=1] + %78 = load %union.GCObject** %77, align 4 ; [#uses=1] + %79 = getelementptr inbounds %union.GCObject* %78, i32 0, i32 0 ; [#uses=1] + %80 = bitcast %struct.lua_State* %79 to %struct.GCheader* ; [#uses=1] + %81 = getelementptr inbounds %struct.GCheader* %80, i32 0, i32 2 ; [#uses=1] + %82 = load i8* %81, align 1 ; [#uses=1] + %83 = zext i8 %82 to i32 ; [#uses=1] + %84 = and i32 %83, 3 ; [#uses=1] + %85 = icmp ne i32 %84, 0 ; [#uses=1] + br i1 %85, label %86, label %96 + +; <label>:86 ; preds = %70 + %87 = load %struct.global_State** %g, align 4 ; [#uses=1] + %88 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.lua_State* %88, i32 0, i32 6 ; [#uses=1] + %90 = load %struct.global_State** %89, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.global_State* %90, i32 0, i32 20 ; [#uses=1] + %92 = getelementptr inbounds %struct.lua_TValue* %91, i32 0, i32 0 ; [#uses=1] + %93 = getelementptr inbounds %union.anon* %92, i32 0, i32 0 ; [#uses=1] + %94 = bitcast double* %93 to %union.GCObject** ; [#uses=1] + %95 = load %union.GCObject** %94, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %87, %union.GCObject* %95) + br label %96 + +; <label>:96 ; preds = %86, %70, %62 + %97 = load %struct.global_State** %g, align 4 ; [#uses=1] + call void @_Z6markmtP12global_State(%struct.global_State* %97) + %98 = load %struct.global_State** %g, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.global_State* %98, i32 0, i32 4 ; [#uses=1] + store i8 1, i8* %99, align 1 + ret void +} + +; [#uses=11] +define hidden void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %L, %union.GCObject* %o, %union.GCObject* %v) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %union.GCObject*, align 4 ; [#uses=3] + %3 = alloca %union.GCObject*, align 4 ; [#uses=2] + %g = alloca %struct.global_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.GCObject* %o, %union.GCObject** %2, align 4 + store %union.GCObject* %v, %union.GCObject** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + store %struct.global_State* %6, %struct.global_State** %g, align 4 + %7 = load %struct.global_State** %g, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 4 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = zext i8 %9 to i32 ; [#uses=1] + %11 = icmp eq i32 %10, 1 ; [#uses=1] + br i1 %11, label %12, label %15 + +; <label>:12 ; preds = %0 + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = load %union.GCObject** %3, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %13, %union.GCObject* %14) + br label %36 + +; <label>:15 ; preds = %0 + %16 = load %union.GCObject** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %struct.GCheader* ; [#uses=1] + %19 = getelementptr inbounds %struct.GCheader* %18, i32 0, i32 2 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = and i32 %21, 248 ; [#uses=1] + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.global_State* %23, i32 0, i32 3 ; [#uses=1] + %25 = load i8* %24, align 1 ; [#uses=1] + %26 = zext i8 %25 to i32 ; [#uses=1] + %27 = and i32 %26, 3 ; [#uses=1] + %28 = trunc i32 %27 to i8 ; [#uses=1] + %29 = zext i8 %28 to i32 ; [#uses=1] + %30 = or i32 %22, %29 ; [#uses=1] + %31 = trunc i32 %30 to i8 ; [#uses=1] + %32 = load %union.GCObject** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %union.GCObject* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast %struct.lua_State* %33 to %struct.GCheader* ; [#uses=1] + %35 = getelementptr inbounds %struct.GCheader* %34, i32 0, i32 2 ; [#uses=1] + store i8 %31, i8* %35, align 1 + br label %36 + +; <label>:36 ; preds = %15, %12 + ret void +} + +; [#uses=23] +define internal void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %g, %union.GCObject* %o) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=12] + %2 = alloca %union.GCObject*, align 4 ; [#uses=17] + %mt = alloca %struct.Table*, align 4 ; [#uses=4] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=6] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store %union.GCObject* %o, %union.GCObject** %2, align 4 + %3 = load %union.GCObject** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %union.GCObject* %3, i32 0, i32 0 ; [#uses=1] + %5 = bitcast %struct.lua_State* %4 to %struct.GCheader* ; [#uses=1] + %6 = getelementptr inbounds %struct.GCheader* %5, i32 0, i32 2 ; [#uses=2] + %7 = load i8* %6, align 1 ; [#uses=1] + %8 = zext i8 %7 to i32 ; [#uses=1] + %9 = and i32 %8, 252 ; [#uses=1] + %10 = trunc i32 %9 to i8 ; [#uses=1] + store i8 %10, i8* %6, align 1 + %11 = load %union.GCObject** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.GCObject* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %struct.lua_State* %12 to %struct.GCheader* ; [#uses=1] + %14 = getelementptr inbounds %struct.GCheader* %13, i32 0, i32 1 ; [#uses=1] + %15 = load i8* %14, align 1 ; [#uses=1] + %16 = zext i8 %15 to i32 ; [#uses=1] + switch i32 %16, label %171 [ + i32 4, label %17 + i32 7, label %18 + i32 10, label %75 + i32 6, label %127 + i32 5, label %139 + i32 8, label %150 + i32 9, label %160 + ] + +; <label>:17 ; preds = %0 + br label %172 + +; <label>:18 ; preds = %0 + %19 = load %union.GCObject** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.Udata* ; [#uses=1] + %22 = getelementptr inbounds %union.Udata* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %4* %22, i32 0, i32 3 ; [#uses=1] + %24 = load %struct.Table** %23, align 4 ; [#uses=1] + store %struct.Table* %24, %struct.Table** %mt, align 4 + %25 = load %union.GCObject** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %union.GCObject* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast %struct.lua_State* %26 to %struct.GCheader* ; [#uses=1] + %28 = getelementptr inbounds %struct.GCheader* %27, i32 0, i32 2 ; [#uses=2] + %29 = load i8* %28, align 1 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + %31 = or i32 %30, 4 ; [#uses=1] + %32 = trunc i32 %31 to i8 ; [#uses=1] + store i8 %32, i8* %28, align 1 + %33 = load %struct.Table** %mt, align 4 ; [#uses=1] + %34 = icmp ne %struct.Table* %33, null ; [#uses=1] + br i1 %34, label %35, label %50 + +; <label>:35 ; preds = %18 + %36 = load %struct.Table** %mt, align 4 ; [#uses=1] + %37 = bitcast %struct.Table* %36 to %union.GCObject* ; [#uses=1] + %38 = getelementptr inbounds %union.GCObject* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %struct.lua_State* %38 to %struct.GCheader* ; [#uses=1] + %40 = getelementptr inbounds %struct.GCheader* %39, i32 0, i32 2 ; [#uses=1] + %41 = load i8* %40, align 1 ; [#uses=1] + %42 = zext i8 %41 to i32 ; [#uses=1] + %43 = and i32 %42, 3 ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %49 + +; <label>:45 ; preds = %35 + %46 = load %struct.global_State** %1, align 4 ; [#uses=1] + %47 = load %struct.Table** %mt, align 4 ; [#uses=1] + %48 = bitcast %struct.Table* %47 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %46, %union.GCObject* %48) + br label %49 + +; <label>:49 ; preds = %45, %35 + br label %50 + +; <label>:50 ; preds = %49, %18 + %51 = load %union.GCObject** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.GCObject* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast %struct.lua_State* %52 to %union.Udata* ; [#uses=1] + %54 = getelementptr inbounds %union.Udata* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %4* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.Table** %55, align 4 ; [#uses=1] + %57 = bitcast %struct.Table* %56 to %union.GCObject* ; [#uses=1] + %58 = getelementptr inbounds %union.GCObject* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast %struct.lua_State* %58 to %struct.GCheader* ; [#uses=1] + %60 = getelementptr inbounds %struct.GCheader* %59, i32 0, i32 2 ; [#uses=1] + %61 = load i8* %60, align 1 ; [#uses=1] + %62 = zext i8 %61 to i32 ; [#uses=1] + %63 = and i32 %62, 3 ; [#uses=1] + %64 = icmp ne i32 %63, 0 ; [#uses=1] + br i1 %64, label %65, label %74 + +; <label>:65 ; preds = %50 + %66 = load %struct.global_State** %1, align 4 ; [#uses=1] + %67 = load %union.GCObject** %2, align 4 ; [#uses=1] + %68 = getelementptr inbounds %union.GCObject* %67, i32 0, i32 0 ; [#uses=1] + %69 = bitcast %struct.lua_State* %68 to %union.Udata* ; [#uses=1] + %70 = getelementptr inbounds %union.Udata* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %4* %70, i32 0, i32 4 ; [#uses=1] + %72 = load %struct.Table** %71, align 4 ; [#uses=1] + %73 = bitcast %struct.Table* %72 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %66, %union.GCObject* %73) + br label %74 + +; <label>:74 ; preds = %65, %50 + br label %172 + +; <label>:75 ; preds = %0 + %76 = load %union.GCObject** %2, align 4 ; [#uses=1] + %77 = getelementptr inbounds %union.GCObject* %76, i32 0, i32 0 ; [#uses=1] + %78 = bitcast %struct.lua_State* %77 to %struct.UpVal* ; [#uses=1] + store %struct.UpVal* %78, %struct.UpVal** %uv, align 4 + %79 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.UpVal* %79, i32 0, i32 3 ; [#uses=1] + %81 = load %struct.lua_TValue** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_TValue* %81, i32 0, i32 1 ; [#uses=1] + %83 = load i32* %82, align 4 ; [#uses=1] + %84 = icmp sge i32 %83, 4 ; [#uses=1] + br i1 %84, label %85, label %109 + +; <label>:85 ; preds = %75 + %86 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.UpVal* %86, i32 0, i32 3 ; [#uses=1] + %88 = load %struct.lua_TValue** %87, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.lua_TValue* %88, i32 0, i32 0 ; [#uses=1] + %90 = getelementptr inbounds %union.anon* %89, i32 0, i32 0 ; [#uses=1] + %91 = bitcast double* %90 to %union.GCObject** ; [#uses=1] + %92 = load %union.GCObject** %91, align 4 ; [#uses=1] + %93 = getelementptr inbounds %union.GCObject* %92, i32 0, i32 0 ; [#uses=1] + %94 = bitcast %struct.lua_State* %93 to %struct.GCheader* ; [#uses=1] + %95 = getelementptr inbounds %struct.GCheader* %94, i32 0, i32 2 ; [#uses=1] + %96 = load i8* %95, align 1 ; [#uses=1] + %97 = zext i8 %96 to i32 ; [#uses=1] + %98 = and i32 %97, 3 ; [#uses=1] + %99 = icmp ne i32 %98, 0 ; [#uses=1] + br i1 %99, label %100, label %109 + +; <label>:100 ; preds = %85 + %101 = load %struct.global_State** %1, align 4 ; [#uses=1] + %102 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.UpVal* %102, i32 0, i32 3 ; [#uses=1] + %104 = load %struct.lua_TValue** %103, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_TValue* %104, i32 0, i32 0 ; [#uses=1] + %106 = getelementptr inbounds %union.anon* %105, i32 0, i32 0 ; [#uses=1] + %107 = bitcast double* %106 to %union.GCObject** ; [#uses=1] + %108 = load %union.GCObject** %107, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %101, %union.GCObject* %108) + br label %109 + +; <label>:109 ; preds = %100, %85, %75 + %110 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.UpVal* %110, i32 0, i32 3 ; [#uses=1] + %112 = load %struct.lua_TValue** %111, align 4 ; [#uses=1] + %113 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.UpVal* %113, i32 0, i32 4 ; [#uses=1] + %115 = getelementptr inbounds %0* %114, i32 0, i32 0 ; [#uses=1] + %116 = icmp eq %struct.lua_TValue* %112, %115 ; [#uses=1] + br i1 %116, label %117, label %126 + +; <label>:117 ; preds = %109 + %118 = load %union.GCObject** %2, align 4 ; [#uses=1] + %119 = getelementptr inbounds %union.GCObject* %118, i32 0, i32 0 ; [#uses=1] + %120 = bitcast %struct.lua_State* %119 to %struct.GCheader* ; [#uses=1] + %121 = getelementptr inbounds %struct.GCheader* %120, i32 0, i32 2 ; [#uses=2] + %122 = load i8* %121, align 1 ; [#uses=1] + %123 = zext i8 %122 to i32 ; [#uses=1] + %124 = or i32 %123, 4 ; [#uses=1] + %125 = trunc i32 %124 to i8 ; [#uses=1] + store i8 %125, i8* %121, align 1 + br label %126 + +; <label>:126 ; preds = %117, %109 + br label %172 + +; <label>:127 ; preds = %0 + %128 = load %struct.global_State** %1, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.global_State* %128, i32 0, i32 8 ; [#uses=1] + %130 = load %union.GCObject** %129, align 4 ; [#uses=1] + %131 = load %union.GCObject** %2, align 4 ; [#uses=1] + %132 = getelementptr inbounds %union.GCObject* %131, i32 0, i32 0 ; [#uses=1] + %133 = bitcast %struct.lua_State* %132 to %union.Closure* ; [#uses=1] + %134 = getelementptr inbounds %union.Closure* %133, i32 0, i32 0 ; [#uses=1] + %135 = getelementptr inbounds %struct.CClosure* %134, i32 0, i32 5 ; [#uses=1] + store %union.GCObject* %130, %union.GCObject** %135, align 4 + %136 = load %union.GCObject** %2, align 4 ; [#uses=1] + %137 = load %struct.global_State** %1, align 4 ; [#uses=1] + %138 = getelementptr inbounds %struct.global_State* %137, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %136, %union.GCObject** %138, align 4 + br label %172 + +; <label>:139 ; preds = %0 + %140 = load %struct.global_State** %1, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.global_State* %140, i32 0, i32 8 ; [#uses=1] + %142 = load %union.GCObject** %141, align 4 ; [#uses=1] + %143 = load %union.GCObject** %2, align 4 ; [#uses=1] + %144 = getelementptr inbounds %union.GCObject* %143, i32 0, i32 0 ; [#uses=1] + %145 = bitcast %struct.lua_State* %144 to %struct.Table* ; [#uses=1] + %146 = getelementptr inbounds %struct.Table* %145, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* %142, %union.GCObject** %146, align 4 + %147 = load %union.GCObject** %2, align 4 ; [#uses=1] + %148 = load %struct.global_State** %1, align 4 ; [#uses=1] + %149 = getelementptr inbounds %struct.global_State* %148, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %147, %union.GCObject** %149, align 4 + br label %172 + +; <label>:150 ; preds = %0 + %151 = load %struct.global_State** %1, align 4 ; [#uses=1] + %152 = getelementptr inbounds %struct.global_State* %151, i32 0, i32 8 ; [#uses=1] + %153 = load %union.GCObject** %152, align 4 ; [#uses=1] + %154 = load %union.GCObject** %2, align 4 ; [#uses=1] + %155 = getelementptr inbounds %union.GCObject* %154, i32 0, i32 0 ; [#uses=1] + %156 = getelementptr inbounds %struct.lua_State* %155, i32 0, i32 25 ; [#uses=1] + store %union.GCObject* %153, %union.GCObject** %156, align 4 + %157 = load %union.GCObject** %2, align 4 ; [#uses=1] + %158 = load %struct.global_State** %1, align 4 ; [#uses=1] + %159 = getelementptr inbounds %struct.global_State* %158, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %157, %union.GCObject** %159, align 4 + br label %172 + +; <label>:160 ; preds = %0 + %161 = load %struct.global_State** %1, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.global_State* %161, i32 0, i32 8 ; [#uses=1] + %163 = load %union.GCObject** %162, align 4 ; [#uses=1] + %164 = load %union.GCObject** %2, align 4 ; [#uses=1] + %165 = getelementptr inbounds %union.GCObject* %164, i32 0, i32 0 ; [#uses=1] + %166 = bitcast %struct.lua_State* %165 to %struct.Proto* ; [#uses=1] + %167 = getelementptr inbounds %struct.Proto* %166, i32 0, i32 18 ; [#uses=1] + store %union.GCObject* %163, %union.GCObject** %167, align 4 + %168 = load %union.GCObject** %2, align 4 ; [#uses=1] + %169 = load %struct.global_State** %1, align 4 ; [#uses=1] + %170 = getelementptr inbounds %struct.global_State* %169, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %168, %union.GCObject** %170, align 4 + br label %172 + +; <label>:171 ; preds = %0 + br label %172 + +; <label>:172 ; preds = %171, %160, %150, %139, %127, %126, %74, %17 + ret void +} + +; [#uses=6] +define hidden void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %L, %struct.Table* %t) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.Table*, align 4 ; [#uses=3] + %g = alloca %struct.global_State*, align 4 ; [#uses=3] + %o = alloca %union.GCObject*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + %6 = load %struct.Table** %2, align 4 ; [#uses=1] + %7 = bitcast %struct.Table* %6 to %union.GCObject* ; [#uses=1] + store %union.GCObject* %7, %union.GCObject** %o, align 4 + %8 = load %union.GCObject** %o, align 4 ; [#uses=1] + %9 = getelementptr inbounds %union.GCObject* %8, i32 0, i32 0 ; [#uses=1] + %10 = bitcast %struct.lua_State* %9 to %struct.GCheader* ; [#uses=1] + %11 = getelementptr inbounds %struct.GCheader* %10, i32 0, i32 2 ; [#uses=2] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = and i32 %13, 251 ; [#uses=1] + %15 = trunc i32 %14 to i8 ; [#uses=1] + store i8 %15, i8* %11, align 1 + %16 = load %struct.global_State** %g, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.global_State* %16, i32 0, i32 9 ; [#uses=1] + %18 = load %union.GCObject** %17, align 4 ; [#uses=1] + %19 = load %struct.Table** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Table* %19, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* %18, %union.GCObject** %20, align 4 + %21 = load %union.GCObject** %o, align 4 ; [#uses=1] + %22 = load %struct.global_State** %g, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.global_State* %22, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* %21, %union.GCObject** %23, align 4 + ret void +} + +; [#uses=6] +define hidden void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %L, %union.GCObject* %o, i8 zeroext %tt) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %union.GCObject*, align 4 ; [#uses=5] + %3 = alloca i8, align 1 ; [#uses=2] + %g = alloca %struct.global_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.GCObject* %o, %union.GCObject** %2, align 4 + store i8 %tt, i8* %3, align 1 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.global_State** %5, align 4 ; [#uses=1] + store %struct.global_State* %6, %struct.global_State** %g, align 4 + %7 = load %struct.global_State** %g, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 6 ; [#uses=1] + %9 = load %union.GCObject** %8, align 4 ; [#uses=1] + %10 = load %union.GCObject** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %union.GCObject* %10, i32 0, i32 0 ; [#uses=1] + %12 = bitcast %struct.lua_State* %11 to %struct.GCheader* ; [#uses=1] + %13 = getelementptr inbounds %struct.GCheader* %12, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %9, %union.GCObject** %13, align 4 + %14 = load %union.GCObject** %2, align 4 ; [#uses=1] + %15 = load %struct.global_State** %g, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.global_State* %15, i32 0, i32 6 ; [#uses=1] + store %union.GCObject* %14, %union.GCObject** %16, align 4 + %17 = load %struct.global_State** %g, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.global_State* %17, i32 0, i32 3 ; [#uses=1] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + %21 = and i32 %20, 3 ; [#uses=1] + %22 = trunc i32 %21 to i8 ; [#uses=1] + %23 = load %union.GCObject** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %union.GCObject* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast %struct.lua_State* %24 to %struct.GCheader* ; [#uses=1] + %26 = getelementptr inbounds %struct.GCheader* %25, i32 0, i32 2 ; [#uses=1] + store i8 %22, i8* %26, align 1 + %27 = load i8* %3, align 1 ; [#uses=1] + %28 = load %union.GCObject** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %union.GCObject* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast %struct.lua_State* %29 to %struct.GCheader* ; [#uses=1] + %31 = getelementptr inbounds %struct.GCheader* %30, i32 0, i32 1 ; [#uses=1] + store i8 %27, i8* %31, align 1 + ret void +} + +; [#uses=1] +define hidden void @_Z14luaC_linkupvalP9lua_StateP5UpVal(%struct.lua_State* %L, %struct.UpVal* %uv) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.UpVal*, align 4 ; [#uses=7] + %g = alloca %struct.global_State*, align 4 ; [#uses=5] + %o = alloca %union.GCObject*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.UpVal* %uv, %struct.UpVal** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + %6 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %7 = bitcast %struct.UpVal* %6 to %union.GCObject* ; [#uses=1] + store %union.GCObject* %7, %union.GCObject** %o, align 4 + %8 = load %struct.global_State** %g, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 6 ; [#uses=1] + %10 = load %union.GCObject** %9, align 4 ; [#uses=1] + %11 = load %union.GCObject** %o, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.GCObject* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %struct.lua_State* %12 to %struct.GCheader* ; [#uses=1] + %14 = getelementptr inbounds %struct.GCheader* %13, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %10, %union.GCObject** %14, align 4 + %15 = load %union.GCObject** %o, align 4 ; [#uses=1] + %16 = load %struct.global_State** %g, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.global_State* %16, i32 0, i32 6 ; [#uses=1] + store %union.GCObject* %15, %union.GCObject** %17, align 4 + %18 = load %union.GCObject** %o, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.GCObject* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.lua_State* %19 to %struct.GCheader* ; [#uses=1] + %21 = getelementptr inbounds %struct.GCheader* %20, i32 0, i32 2 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + %24 = and i32 %23, 4 ; [#uses=1] + %25 = icmp ne i32 %24, 0 ; [#uses=1] + br i1 %25, label %115, label %26 + +; <label>:26 ; preds = %0 + %27 = load %union.GCObject** %o, align 4 ; [#uses=1] + %28 = getelementptr inbounds %union.GCObject* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast %struct.lua_State* %28 to %struct.GCheader* ; [#uses=1] + %30 = getelementptr inbounds %struct.GCheader* %29, i32 0, i32 2 ; [#uses=1] + %31 = load i8* %30, align 1 ; [#uses=1] + %32 = zext i8 %31 to i32 ; [#uses=1] + %33 = and i32 %32, 3 ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %115, label %35 + +; <label>:35 ; preds = %26 + %36 = load %struct.global_State** %g, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.global_State* %36, i32 0, i32 4 ; [#uses=1] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = icmp eq i32 %39, 1 ; [#uses=1] + br i1 %40, label %41, label %93 + +; <label>:41 ; preds = %35 + %42 = load %union.GCObject** %o, align 4 ; [#uses=1] + %43 = getelementptr inbounds %union.GCObject* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast %struct.lua_State* %43 to %struct.GCheader* ; [#uses=1] + %45 = getelementptr inbounds %struct.GCheader* %44, i32 0, i32 2 ; [#uses=2] + %46 = load i8* %45, align 1 ; [#uses=1] + %47 = zext i8 %46 to i32 ; [#uses=1] + %48 = or i32 %47, 4 ; [#uses=1] + %49 = trunc i32 %48 to i8 ; [#uses=1] + store i8 %49, i8* %45, align 1 + %50 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.UpVal* %50, i32 0, i32 3 ; [#uses=1] + %52 = load %struct.lua_TValue** %51, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 0, i32 1 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = icmp sge i32 %54, 4 ; [#uses=1] + br i1 %55, label %56, label %92 + +; <label>:56 ; preds = %41 + %57 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.UpVal* %57, i32 0, i32 3 ; [#uses=1] + %59 = load %struct.lua_TValue** %58, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_TValue* %59, i32 0, i32 0 ; [#uses=1] + %61 = getelementptr inbounds %union.anon* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast double* %61 to %union.GCObject** ; [#uses=1] + %63 = load %union.GCObject** %62, align 4 ; [#uses=1] + %64 = getelementptr inbounds %union.GCObject* %63, i32 0, i32 0 ; [#uses=1] + %65 = bitcast %struct.lua_State* %64 to %struct.GCheader* ; [#uses=1] + %66 = getelementptr inbounds %struct.GCheader* %65, i32 0, i32 2 ; [#uses=1] + %67 = load i8* %66, align 1 ; [#uses=1] + %68 = zext i8 %67 to i32 ; [#uses=1] + %69 = and i32 %68, 3 ; [#uses=1] + %70 = icmp ne i32 %69, 0 ; [#uses=1] + br i1 %70, label %71, label %92 + +; <label>:71 ; preds = %56 + %72 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %73 = bitcast %struct.UpVal* %72 to %union.GCObject* ; [#uses=1] + %74 = getelementptr inbounds %union.GCObject* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast %struct.lua_State* %74 to %struct.GCheader* ; [#uses=1] + %76 = getelementptr inbounds %struct.GCheader* %75, i32 0, i32 2 ; [#uses=1] + %77 = load i8* %76, align 1 ; [#uses=1] + %78 = zext i8 %77 to i32 ; [#uses=1] + %79 = and i32 %78, 4 ; [#uses=1] + %80 = icmp ne i32 %79, 0 ; [#uses=1] + br i1 %80, label %81, label %92 + +; <label>:81 ; preds = %71 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %83 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %84 = bitcast %struct.UpVal* %83 to %union.GCObject* ; [#uses=1] + %85 = load %struct.UpVal** %2, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.UpVal* %85, i32 0, i32 3 ; [#uses=1] + %87 = load %struct.lua_TValue** %86, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 0 ; [#uses=1] + %89 = getelementptr inbounds %union.anon* %88, i32 0, i32 0 ; [#uses=1] + %90 = bitcast double* %89 to %union.GCObject** ; [#uses=1] + %91 = load %union.GCObject** %90, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %82, %union.GCObject* %84, %union.GCObject* %91) + br label %92 + +; <label>:92 ; preds = %81, %71, %56, %41 + br label %114 + +; <label>:93 ; preds = %35 + %94 = load %union.GCObject** %o, align 4 ; [#uses=1] + %95 = getelementptr inbounds %union.GCObject* %94, i32 0, i32 0 ; [#uses=1] + %96 = bitcast %struct.lua_State* %95 to %struct.GCheader* ; [#uses=1] + %97 = getelementptr inbounds %struct.GCheader* %96, i32 0, i32 2 ; [#uses=1] + %98 = load i8* %97, align 1 ; [#uses=1] + %99 = zext i8 %98 to i32 ; [#uses=1] + %100 = and i32 %99, 248 ; [#uses=1] + %101 = load %struct.global_State** %g, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.global_State* %101, i32 0, i32 3 ; [#uses=1] + %103 = load i8* %102, align 1 ; [#uses=1] + %104 = zext i8 %103 to i32 ; [#uses=1] + %105 = and i32 %104, 3 ; [#uses=1] + %106 = trunc i32 %105 to i8 ; [#uses=1] + %107 = zext i8 %106 to i32 ; [#uses=1] + %108 = or i32 %100, %107 ; [#uses=1] + %109 = trunc i32 %108 to i8 ; [#uses=1] + %110 = load %union.GCObject** %o, align 4 ; [#uses=1] + %111 = getelementptr inbounds %union.GCObject* %110, i32 0, i32 0 ; [#uses=1] + %112 = bitcast %struct.lua_State* %111 to %struct.GCheader* ; [#uses=1] + %113 = getelementptr inbounds %struct.GCheader* %112, i32 0, i32 2 ; [#uses=1] + store i8 %109, i8* %113, align 1 + br label %114 + +; <label>:114 ; preds = %93, %92 + br label %115 + +; <label>:115 ; preds = %114, %26, %0 + ret void +} + +; [#uses=2] +define internal void @_Z6markmtP12global_State(%struct.global_State* %g) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=7] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store i32 0, i32* %i, align 4 + br label %2 + +; <label>:2 ; preds = %36, %0 + %3 = load i32* %i, align 4 ; [#uses=1] + %4 = icmp slt i32 %3, 9 ; [#uses=1] + br i1 %4, label %5, label %39 + +; <label>:5 ; preds = %2 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load %struct.global_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.global_State* %7, i32 0, i32 23 ; [#uses=1] + %9 = getelementptr inbounds [9 x %struct.Table*]* %8, i32 0, i32 %6 ; [#uses=1] + %10 = load %struct.Table** %9 ; [#uses=1] + %11 = icmp ne %struct.Table* %10, null ; [#uses=1] + br i1 %11, label %12, label %35 + +; <label>:12 ; preds = %5 + %13 = load i32* %i, align 4 ; [#uses=1] + %14 = load %struct.global_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.global_State* %14, i32 0, i32 23 ; [#uses=1] + %16 = getelementptr inbounds [9 x %struct.Table*]* %15, i32 0, i32 %13 ; [#uses=1] + %17 = load %struct.Table** %16 ; [#uses=1] + %18 = bitcast %struct.Table* %17 to %union.GCObject* ; [#uses=1] + %19 = getelementptr inbounds %union.GCObject* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.lua_State* %19 to %struct.GCheader* ; [#uses=1] + %21 = getelementptr inbounds %struct.GCheader* %20, i32 0, i32 2 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + %24 = and i32 %23, 3 ; [#uses=1] + %25 = icmp ne i32 %24, 0 ; [#uses=1] + br i1 %25, label %26, label %34 + +; <label>:26 ; preds = %12 + %27 = load %struct.global_State** %1, align 4 ; [#uses=1] + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = load %struct.global_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.global_State* %29, i32 0, i32 23 ; [#uses=1] + %31 = getelementptr inbounds [9 x %struct.Table*]* %30, i32 0, i32 %28 ; [#uses=1] + %32 = load %struct.Table** %31 ; [#uses=1] + %33 = bitcast %struct.Table* %32 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %27, %union.GCObject* %33) + br label %34 + +; <label>:34 ; preds = %26, %12 + br label %35 + +; <label>:35 ; preds = %34, %5 + br label %36 + +; <label>:36 ; preds = %35 + %37 = load i32* %i, align 4 ; [#uses=1] + %38 = add nsw i32 %37, 1 ; [#uses=1] + store i32 %38, i32* %i, align 4 + br label %2 + +; <label>:39 ; preds = %2 + ret void +} + +; [#uses=2] +define internal i32 @_Z13propagatemarkP12global_State(%struct.global_State* %g) { + %1 = alloca i32, align 4 ; [#uses=6] + %2 = alloca %struct.global_State*, align 4 ; [#uses=12] + %o = alloca %union.GCObject*, align 4 ; [#uses=10] + %h = alloca %struct.Table*, align 4 ; [#uses=5] + %cl = alloca %union.Closure*, align 4 ; [#uses=6] + %th = alloca %struct.lua_State*, align 4 ; [#uses=6] + %p = alloca %struct.Proto*, align 4 ; [#uses=9] + store %struct.global_State* %g, %struct.global_State** %2, align 4 + %3 = load %struct.global_State** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.global_State* %3, i32 0, i32 8 ; [#uses=1] + %5 = load %union.GCObject** %4, align 4 ; [#uses=1] + store %union.GCObject* %5, %union.GCObject** %o, align 4 + %6 = load %union.GCObject** %o, align 4 ; [#uses=1] + %7 = getelementptr inbounds %union.GCObject* %6, i32 0, i32 0 ; [#uses=1] + %8 = bitcast %struct.lua_State* %7 to %struct.GCheader* ; [#uses=1] + %9 = getelementptr inbounds %struct.GCheader* %8, i32 0, i32 2 ; [#uses=2] + %10 = load i8* %9, align 1 ; [#uses=1] + %11 = zext i8 %10 to i32 ; [#uses=1] + %12 = or i32 %11, 4 ; [#uses=1] + %13 = trunc i32 %12 to i8 ; [#uses=1] + store i8 %13, i8* %9, align 1 + %14 = load %union.GCObject** %o, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.GCheader* ; [#uses=1] + %17 = getelementptr inbounds %struct.GCheader* %16, i32 0, i32 1 ; [#uses=1] + %18 = load i8* %17, align 1 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + switch i32 %19, label %170 [ + i32 5, label %20 + i32 6, label %55 + i32 8, label %93 + i32 9, label %129 + ] + +; <label>:20 ; preds = %0 + %21 = load %union.GCObject** %o, align 4 ; [#uses=1] + %22 = getelementptr inbounds %union.GCObject* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %struct.lua_State* %22 to %struct.Table* ; [#uses=1] + store %struct.Table* %23, %struct.Table** %h, align 4 + %24 = load %struct.Table** %h, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Table* %24, i32 0, i32 9 ; [#uses=1] + %26 = load %union.GCObject** %25, align 4 ; [#uses=1] + %27 = load %struct.global_State** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.global_State* %27, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %26, %union.GCObject** %28, align 4 + %29 = load %struct.global_State** %2, align 4 ; [#uses=1] + %30 = load %struct.Table** %h, align 4 ; [#uses=1] + %31 = call i32 @_Z13traversetableP12global_StateP5Table(%struct.global_State* %29, %struct.Table* %30) ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %42 + +; <label>:33 ; preds = %20 + %34 = load %union.GCObject** %o, align 4 ; [#uses=1] + %35 = getelementptr inbounds %union.GCObject* %34, i32 0, i32 0 ; [#uses=1] + %36 = bitcast %struct.lua_State* %35 to %struct.GCheader* ; [#uses=1] + %37 = getelementptr inbounds %struct.GCheader* %36, i32 0, i32 2 ; [#uses=2] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = and i32 %39, 251 ; [#uses=1] + %41 = trunc i32 %40 to i8 ; [#uses=1] + store i8 %41, i8* %37, align 1 + br label %42 + +; <label>:42 ; preds = %33, %20 + %43 = load %struct.Table** %h, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.Table* %43, i32 0, i32 10 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = mul i32 12, %45 ; [#uses=1] + %47 = add i32 32, %46 ; [#uses=1] + %48 = load %struct.Table** %h, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Table* %48, i32 0, i32 4 ; [#uses=1] + %50 = load i8* %49, align 1 ; [#uses=1] + %51 = zext i8 %50 to i32 ; [#uses=1] + %52 = shl i32 1, %51 ; [#uses=1] + %53 = mul i32 28, %52 ; [#uses=1] + %54 = add i32 %47, %53 ; [#uses=1] + store i32 %54, i32* %1 + br label %171 + +; <label>:55 ; preds = %0 + %56 = load %union.GCObject** %o, align 4 ; [#uses=1] + %57 = getelementptr inbounds %union.GCObject* %56, i32 0, i32 0 ; [#uses=1] + %58 = bitcast %struct.lua_State* %57 to %union.Closure* ; [#uses=1] + store %union.Closure* %58, %union.Closure** %cl, align 4 + %59 = load %union.Closure** %cl, align 4 ; [#uses=1] + %60 = getelementptr inbounds %union.Closure* %59, i32 0, i32 0 ; [#uses=1] + %61 = getelementptr inbounds %struct.CClosure* %60, i32 0, i32 5 ; [#uses=1] + %62 = load %union.GCObject** %61, align 4 ; [#uses=1] + %63 = load %struct.global_State** %2, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.global_State* %63, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %62, %union.GCObject** %64, align 4 + %65 = load %struct.global_State** %2, align 4 ; [#uses=1] + %66 = load %union.Closure** %cl, align 4 ; [#uses=1] + call void @_Z15traverseclosureP12global_StateP7Closure(%struct.global_State* %65, %union.Closure* %66) + %67 = load %union.Closure** %cl, align 4 ; [#uses=1] + %68 = getelementptr inbounds %union.Closure* %67, i32 0, i32 0 ; [#uses=1] + %69 = getelementptr inbounds %struct.CClosure* %68, i32 0, i32 3 ; [#uses=1] + %70 = load i8* %69, align 1 ; [#uses=1] + %71 = icmp ne i8 %70, 0 ; [#uses=1] + br i1 %71, label %72, label %81 + +; <label>:72 ; preds = %55 + %73 = load %union.Closure** %cl, align 4 ; [#uses=1] + %74 = getelementptr inbounds %union.Closure* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %struct.CClosure* %74, i32 0, i32 4 ; [#uses=1] + %76 = load i8* %75, align 1 ; [#uses=1] + %77 = zext i8 %76 to i32 ; [#uses=1] + %78 = sub nsw i32 %77, 1 ; [#uses=1] + %79 = mul i32 12, %78 ; [#uses=1] + %80 = add nsw i32 32, %79 ; [#uses=1] + br label %91 + +; <label>:81 ; preds = %55 + %82 = load %union.Closure** %cl, align 4 ; [#uses=1] + %83 = getelementptr inbounds %union.Closure* %82, i32 0, i32 0 ; [#uses=1] + %84 = bitcast %struct.CClosure* %83 to %struct.LClosure* ; [#uses=1] + %85 = getelementptr inbounds %struct.LClosure* %84, i32 0, i32 4 ; [#uses=1] + %86 = load i8* %85, align 1 ; [#uses=1] + %87 = zext i8 %86 to i32 ; [#uses=1] + %88 = sub nsw i32 %87, 1 ; [#uses=1] + %89 = mul i32 4, %88 ; [#uses=1] + %90 = add nsw i32 24, %89 ; [#uses=1] + br label %91 + +; <label>:91 ; preds = %81, %72 + %92 = phi i32 [ %80, %72 ], [ %90, %81 ] ; [#uses=1] + store i32 %92, i32* %1 + br label %171 + +; <label>:93 ; preds = %0 + %94 = load %union.GCObject** %o, align 4 ; [#uses=1] + %95 = getelementptr inbounds %union.GCObject* %94, i32 0, i32 0 ; [#uses=1] + store %struct.lua_State* %95, %struct.lua_State** %th, align 4 + %96 = load %struct.lua_State** %th, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_State* %96, i32 0, i32 25 ; [#uses=1] + %98 = load %union.GCObject** %97, align 4 ; [#uses=1] + %99 = load %struct.global_State** %2, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.global_State* %99, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %98, %union.GCObject** %100, align 4 + %101 = load %struct.global_State** %2, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.global_State* %101, i32 0, i32 9 ; [#uses=1] + %103 = load %union.GCObject** %102, align 4 ; [#uses=1] + %104 = load %struct.lua_State** %th, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_State* %104, i32 0, i32 25 ; [#uses=1] + store %union.GCObject* %103, %union.GCObject** %105, align 4 + %106 = load %union.GCObject** %o, align 4 ; [#uses=1] + %107 = load %struct.global_State** %2, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.global_State* %107, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* %106, %union.GCObject** %108, align 4 + %109 = load %union.GCObject** %o, align 4 ; [#uses=1] + %110 = getelementptr inbounds %union.GCObject* %109, i32 0, i32 0 ; [#uses=1] + %111 = bitcast %struct.lua_State* %110 to %struct.GCheader* ; [#uses=1] + %112 = getelementptr inbounds %struct.GCheader* %111, i32 0, i32 2 ; [#uses=2] + %113 = load i8* %112, align 1 ; [#uses=1] + %114 = zext i8 %113 to i32 ; [#uses=1] + %115 = and i32 %114, 251 ; [#uses=1] + %116 = trunc i32 %115 to i8 ; [#uses=1] + store i8 %116, i8* %112, align 1 + %117 = load %struct.global_State** %2, align 4 ; [#uses=1] + %118 = load %struct.lua_State** %th, align 4 ; [#uses=1] + call void @_Z13traversestackP12global_StateP9lua_State(%struct.global_State* %117, %struct.lua_State* %118) + %119 = load %struct.lua_State** %th, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_State* %119, i32 0, i32 13 ; [#uses=1] + %121 = load i32* %120, align 4 ; [#uses=1] + %122 = mul i32 12, %121 ; [#uses=1] + %123 = add i32 112, %122 ; [#uses=1] + %124 = load %struct.lua_State** %th, align 4 ; [#uses=1] + %125 = getelementptr inbounds %struct.lua_State* %124, i32 0, i32 14 ; [#uses=1] + %126 = load i32* %125, align 4 ; [#uses=1] + %127 = mul i32 24, %126 ; [#uses=1] + %128 = add i32 %123, %127 ; [#uses=1] + store i32 %128, i32* %1 + br label %171 + +; <label>:129 ; preds = %0 + %130 = load %union.GCObject** %o, align 4 ; [#uses=1] + %131 = getelementptr inbounds %union.GCObject* %130, i32 0, i32 0 ; [#uses=1] + %132 = bitcast %struct.lua_State* %131 to %struct.Proto* ; [#uses=1] + store %struct.Proto* %132, %struct.Proto** %p, align 4 + %133 = load %struct.Proto** %p, align 4 ; [#uses=1] + %134 = getelementptr inbounds %struct.Proto* %133, i32 0, i32 18 ; [#uses=1] + %135 = load %union.GCObject** %134, align 4 ; [#uses=1] + %136 = load %struct.global_State** %2, align 4 ; [#uses=1] + %137 = getelementptr inbounds %struct.global_State* %136, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %135, %union.GCObject** %137, align 4 + %138 = load %struct.global_State** %2, align 4 ; [#uses=1] + %139 = load %struct.Proto** %p, align 4 ; [#uses=1] + call void @_Z13traverseprotoP12global_StateP5Proto(%struct.global_State* %138, %struct.Proto* %139) + %140 = load %struct.Proto** %p, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.Proto* %140, i32 0, i32 12 ; [#uses=1] + %142 = load i32* %141, align 4 ; [#uses=1] + %143 = mul i32 4, %142 ; [#uses=1] + %144 = add i32 76, %143 ; [#uses=1] + %145 = load %struct.Proto** %p, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.Proto* %145, i32 0, i32 14 ; [#uses=1] + %147 = load i32* %146, align 4 ; [#uses=1] + %148 = mul i32 4, %147 ; [#uses=1] + %149 = add i32 %144, %148 ; [#uses=1] + %150 = load %struct.Proto** %p, align 4 ; [#uses=1] + %151 = getelementptr inbounds %struct.Proto* %150, i32 0, i32 11 ; [#uses=1] + %152 = load i32* %151, align 4 ; [#uses=1] + %153 = mul i32 12, %152 ; [#uses=1] + %154 = add i32 %149, %153 ; [#uses=1] + %155 = load %struct.Proto** %p, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.Proto* %155, i32 0, i32 13 ; [#uses=1] + %157 = load i32* %156, align 4 ; [#uses=1] + %158 = mul i32 4, %157 ; [#uses=1] + %159 = add i32 %154, %158 ; [#uses=1] + %160 = load %struct.Proto** %p, align 4 ; [#uses=1] + %161 = getelementptr inbounds %struct.Proto* %160, i32 0, i32 15 ; [#uses=1] + %162 = load i32* %161, align 4 ; [#uses=1] + %163 = mul i32 12, %162 ; [#uses=1] + %164 = add i32 %159, %163 ; [#uses=1] + %165 = load %struct.Proto** %p, align 4 ; [#uses=1] + %166 = getelementptr inbounds %struct.Proto* %165, i32 0, i32 10 ; [#uses=1] + %167 = load i32* %166, align 4 ; [#uses=1] + %168 = mul i32 4, %167 ; [#uses=1] + %169 = add i32 %164, %168 ; [#uses=1] + store i32 %169, i32* %1 + br label %171 + +; <label>:170 ; preds = %0 + store i32 0, i32* %1 + br label %171 + +; <label>:171 ; preds = %170, %129, %93, %91, %42 + %172 = load i32* %1 ; [#uses=1] + ret i32 %172 +} + +; [#uses=1] +define internal void @_Z6atomicP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %g = alloca %struct.global_State*, align 4 ; [#uses=24] + %udsize = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + call void @_Z12remarkupvalsP12global_State(%struct.global_State* %5) + %6 = load %struct.global_State** %g, align 4 ; [#uses=1] + %7 = call i32 @_Z12propagateallP12global_State(%struct.global_State* %6) ; [#uses=0] + %8 = load %struct.global_State** %g, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 10 ; [#uses=1] + %10 = load %union.GCObject** %9, align 4 ; [#uses=1] + %11 = load %struct.global_State** %g, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %10, %union.GCObject** %12, align 4 + %13 = load %struct.global_State** %g, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 10 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %14, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %union.GCObject* ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %struct.GCheader* ; [#uses=1] + %19 = getelementptr inbounds %struct.GCheader* %18, i32 0, i32 2 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = and i32 %21, 3 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %28 + +; <label>:24 ; preds = %0 + %25 = load %struct.global_State** %g, align 4 ; [#uses=1] + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = bitcast %struct.lua_State* %26 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %25, %union.GCObject* %27) + br label %28 + +; <label>:28 ; preds = %24, %0 + %29 = load %struct.global_State** %g, align 4 ; [#uses=1] + call void @_Z6markmtP12global_State(%struct.global_State* %29) + %30 = load %struct.global_State** %g, align 4 ; [#uses=1] + %31 = call i32 @_Z12propagateallP12global_State(%struct.global_State* %30) ; [#uses=0] + %32 = load %struct.global_State** %g, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.global_State* %32, i32 0, i32 9 ; [#uses=1] + %34 = load %union.GCObject** %33, align 4 ; [#uses=1] + %35 = load %struct.global_State** %g, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.global_State* %35, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* %34, %union.GCObject** %36, align 4 + %37 = load %struct.global_State** %g, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %38, align 4 + %39 = load %struct.global_State** %g, align 4 ; [#uses=1] + %40 = call i32 @_Z12propagateallP12global_State(%struct.global_State* %39) ; [#uses=0] + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = call i32 @_Z18luaC_separateudataP9lua_Statei(%struct.lua_State* %41, i32 0) ; [#uses=1] + store i32 %42, i32* %udsize, align 4 + %43 = load %struct.global_State** %g, align 4 ; [#uses=1] + call void @_Z7marktmuP12global_State(%struct.global_State* %43) + %44 = load %struct.global_State** %g, align 4 ; [#uses=1] + %45 = call i32 @_Z12propagateallP12global_State(%struct.global_State* %44) ; [#uses=1] + %46 = load i32* %udsize, align 4 ; [#uses=1] + %47 = add i32 %46, %45 ; [#uses=1] + store i32 %47, i32* %udsize, align 4 + %48 = load %struct.global_State** %g, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.global_State* %48, i32 0, i32 10 ; [#uses=1] + %50 = load %union.GCObject** %49, align 4 ; [#uses=1] + call void @_Z10cleartableP8GCObject(%union.GCObject* %50) + %51 = load %struct.global_State** %g, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.global_State* %51, i32 0, i32 3 ; [#uses=1] + %53 = load i8* %52, align 1 ; [#uses=1] + %54 = zext i8 %53 to i32 ; [#uses=1] + %55 = xor i32 %54, 3 ; [#uses=1] + %56 = trunc i32 %55 to i8 ; [#uses=1] + %57 = load %struct.global_State** %g, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.global_State* %57, i32 0, i32 3 ; [#uses=1] + store i8 %56, i8* %58, align 1 + %59 = load %struct.global_State** %g, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.global_State* %59, i32 0, i32 5 ; [#uses=1] + store i32 0, i32* %60, align 4 + %61 = load %struct.global_State** %g, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.global_State* %61, i32 0, i32 6 ; [#uses=1] + %63 = load %struct.global_State** %g, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.global_State* %63, i32 0, i32 7 ; [#uses=1] + store %union.GCObject** %62, %union.GCObject*** %64, align 4 + %65 = load %struct.global_State** %g, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.global_State* %65, i32 0, i32 4 ; [#uses=1] + store i8 2, i8* %66, align 1 + %67 = load %struct.global_State** %g, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.global_State* %67, i32 0, i32 14 ; [#uses=1] + %69 = load i32* %68, align 4 ; [#uses=1] + %70 = load i32* %udsize, align 4 ; [#uses=1] + %71 = sub i32 %69, %70 ; [#uses=1] + %72 = load %struct.global_State** %g, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.global_State* %72, i32 0, i32 15 ; [#uses=1] + store i32 %71, i32* %73, align 4 + ret void +} + +; [#uses=1] +define internal void @_Z10checkSizesP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %g = alloca %struct.global_State*, align 4 ; [#uses=11] + %newsize = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.global_State** %g, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 0 ; [#uses=1] + %7 = getelementptr inbounds %struct.stringtable* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = load %struct.global_State** %g, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.global_State* %9, i32 0, i32 0 ; [#uses=1] + %11 = getelementptr inbounds %struct.stringtable* %10, i32 0, i32 2 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = sdiv i32 %12, 4 ; [#uses=1] + %14 = icmp ult i32 %8, %13 ; [#uses=1] + br i1 %14, label %15, label %28 + +; <label>:15 ; preds = %0 + %16 = load %struct.global_State** %g, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.global_State* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %struct.stringtable* %17, i32 0, i32 2 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp sgt i32 %19, 64 ; [#uses=1] + br i1 %20, label %21, label %28 + +; <label>:21 ; preds = %15 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.global_State* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %struct.stringtable* %24, i32 0, i32 2 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = sdiv i32 %26, 2 ; [#uses=1] + call void @_Z11luaS_resizeP9lua_Statei(%struct.lua_State* %22, i32 %27) + br label %28 + +; <label>:28 ; preds = %21, %15, %0 + %29 = load %struct.global_State** %g, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.global_State* %29, i32 0, i32 12 ; [#uses=1] + %31 = getelementptr inbounds %struct.Mbuffer* %30, i32 0, i32 2 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + %33 = icmp ugt i32 %32, 64 ; [#uses=1] + br i1 %33, label %34, label %69 + +; <label>:34 ; preds = %28 + %35 = load %struct.global_State** %g, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.global_State* %35, i32 0, i32 12 ; [#uses=1] + %37 = getelementptr inbounds %struct.Mbuffer* %36, i32 0, i32 2 ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = udiv i32 %38, 2 ; [#uses=1] + store i32 %39, i32* %newsize, align 4 + %40 = load i32* %newsize, align 4 ; [#uses=1] + %41 = add i32 %40, 1 ; [#uses=1] + %42 = icmp ule i32 %41, -3 ; [#uses=1] + br i1 %42, label %43, label %57 + +; <label>:43 ; preds = %34 + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %45 = load %struct.global_State** %g, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.global_State* %45, i32 0, i32 12 ; [#uses=1] + %47 = getelementptr inbounds %struct.Mbuffer* %46, i32 0, i32 0 ; [#uses=1] + %48 = load i8** %47, align 4 ; [#uses=1] + %49 = load %struct.global_State** %g, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.global_State* %49, i32 0, i32 12 ; [#uses=1] + %51 = getelementptr inbounds %struct.Mbuffer* %50, i32 0, i32 2 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = mul i32 %52, 1 ; [#uses=1] + %54 = load i32* %newsize, align 4 ; [#uses=1] + %55 = mul i32 %54, 1 ; [#uses=1] + %56 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %44, i8* %48, i32 %53, i32 %55) ; [#uses=1] + br label %60 + +; <label>:57 ; preds = %34 + %58 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %59 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %58) ; [#uses=1] + br label %60 + +; <label>:60 ; preds = %57, %43 + %61 = phi i8* [ %56, %43 ], [ %59, %57 ] ; [#uses=1] + %62 = load %struct.global_State** %g, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.global_State* %62, i32 0, i32 12 ; [#uses=1] + %64 = getelementptr inbounds %struct.Mbuffer* %63, i32 0, i32 0 ; [#uses=1] + store i8* %61, i8** %64, align 4 + %65 = load i32* %newsize, align 4 ; [#uses=1] + %66 = load %struct.global_State** %g, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.global_State* %66, i32 0, i32 12 ; [#uses=1] + %68 = getelementptr inbounds %struct.Mbuffer* %67, i32 0, i32 2 ; [#uses=1] + store i32 %65, i32* %68, align 4 + br label %69 + +; <label>:69 ; preds = %60, %28 + ret void +} + +; [#uses=1] +define internal void @_Z12remarkupvalsP12global_State(%struct.global_State* %g) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=4] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=9] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + %2 = load %struct.global_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.global_State* %2, i32 0, i32 22 ; [#uses=1] + %4 = getelementptr inbounds %struct.UpVal* %3, i32 0, i32 4 ; [#uses=1] + %5 = getelementptr inbounds %0* %4, i32 0, i32 0 ; [#uses=1] + %6 = bitcast %struct.lua_TValue* %5 to %13* ; [#uses=1] + %7 = getelementptr inbounds %13* %6, i32 0, i32 1 ; [#uses=1] + %8 = load %struct.UpVal** %7, align 4 ; [#uses=1] + store %struct.UpVal* %8, %struct.UpVal** %uv, align 4 + br label %9 + +; <label>:9 ; preds = %67, %0 + %10 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %11 = load %struct.global_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 22 ; [#uses=1] + %13 = icmp ne %struct.UpVal* %10, %12 ; [#uses=1] + br i1 %13, label %14, label %74 + +; <label>:14 ; preds = %9 + %15 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %16 = bitcast %struct.UpVal* %15 to %union.GCObject* ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %struct.GCheader* ; [#uses=1] + %19 = getelementptr inbounds %struct.GCheader* %18, i32 0, i32 2 ; [#uses=1] + %20 = load i8* %19, align 1 ; [#uses=1] + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = and i32 %21, 4 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %66, label %24 + +; <label>:24 ; preds = %14 + %25 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %26 = bitcast %struct.UpVal* %25 to %union.GCObject* ; [#uses=1] + %27 = getelementptr inbounds %union.GCObject* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast %struct.lua_State* %27 to %struct.GCheader* ; [#uses=1] + %29 = getelementptr inbounds %struct.GCheader* %28, i32 0, i32 2 ; [#uses=1] + %30 = load i8* %29, align 1 ; [#uses=1] + %31 = zext i8 %30 to i32 ; [#uses=1] + %32 = and i32 %31, 3 ; [#uses=1] + %33 = icmp ne i32 %32, 0 ; [#uses=1] + br i1 %33, label %66, label %34 + +; <label>:34 ; preds = %24 + %35 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.UpVal* %35, i32 0, i32 3 ; [#uses=1] + %37 = load %struct.lua_TValue** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 1 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = icmp sge i32 %39, 4 ; [#uses=1] + br i1 %40, label %41, label %65 + +; <label>:41 ; preds = %34 + %42 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.UpVal* %42, i32 0, i32 3 ; [#uses=1] + %44 = load %struct.lua_TValue** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %union.anon* %45, i32 0, i32 0 ; [#uses=1] + %47 = bitcast double* %46 to %union.GCObject** ; [#uses=1] + %48 = load %union.GCObject** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %union.GCObject* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast %struct.lua_State* %49 to %struct.GCheader* ; [#uses=1] + %51 = getelementptr inbounds %struct.GCheader* %50, i32 0, i32 2 ; [#uses=1] + %52 = load i8* %51, align 1 ; [#uses=1] + %53 = zext i8 %52 to i32 ; [#uses=1] + %54 = and i32 %53, 3 ; [#uses=1] + %55 = icmp ne i32 %54, 0 ; [#uses=1] + br i1 %55, label %56, label %65 + +; <label>:56 ; preds = %41 + %57 = load %struct.global_State** %1, align 4 ; [#uses=1] + %58 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.UpVal* %58, i32 0, i32 3 ; [#uses=1] + %60 = load %struct.lua_TValue** %59, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 0 ; [#uses=1] + %62 = getelementptr inbounds %union.anon* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast double* %62 to %union.GCObject** ; [#uses=1] + %64 = load %union.GCObject** %63, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %57, %union.GCObject* %64) + br label %65 + +; <label>:65 ; preds = %56, %41, %34 + br label %66 + +; <label>:66 ; preds = %65, %24, %14 + br label %67 + +; <label>:67 ; preds = %66 + %68 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.UpVal* %68, i32 0, i32 4 ; [#uses=1] + %70 = getelementptr inbounds %0* %69, i32 0, i32 0 ; [#uses=1] + %71 = bitcast %struct.lua_TValue* %70 to %13* ; [#uses=1] + %72 = getelementptr inbounds %13* %71, i32 0, i32 1 ; [#uses=1] + %73 = load %struct.UpVal** %72, align 4 ; [#uses=1] + store %struct.UpVal* %73, %struct.UpVal** %uv, align 4 + br label %9 + +; <label>:74 ; preds = %9 + ret void +} + +; [#uses=4] +define internal i32 @_Z12propagateallP12global_State(%struct.global_State* %g) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=3] + %m = alloca i32, align 4 ; [#uses=4] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store i32 0, i32* %m, align 4 + br label %2 + +; <label>:2 ; preds = %7, %0 + %3 = load %struct.global_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.global_State* %3, i32 0, i32 8 ; [#uses=1] + %5 = load %union.GCObject** %4, align 4 ; [#uses=1] + %6 = icmp ne %union.GCObject* %5, null ; [#uses=1] + br i1 %6, label %7, label %12 + +; <label>:7 ; preds = %2 + %8 = load %struct.global_State** %1, align 4 ; [#uses=1] + %9 = call i32 @_Z13propagatemarkP12global_State(%struct.global_State* %8) ; [#uses=1] + %10 = load i32* %m, align 4 ; [#uses=1] + %11 = add i32 %10, %9 ; [#uses=1] + store i32 %11, i32* %m, align 4 + br label %2 + +; <label>:12 ; preds = %2 + %13 = load i32* %m, align 4 ; [#uses=1] + ret i32 %13 +} + +; [#uses=1] +define internal void @_Z7marktmuP12global_State(%struct.global_State* %g) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=5] + %u = alloca %union.GCObject*, align 4 ; [#uses=8] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + %2 = load %struct.global_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.global_State* %2, i32 0, i32 11 ; [#uses=1] + %4 = load %union.GCObject** %3, align 4 ; [#uses=1] + store %union.GCObject* %4, %union.GCObject** %u, align 4 + %5 = load %union.GCObject** %u, align 4 ; [#uses=1] + %6 = icmp ne %union.GCObject* %5, null ; [#uses=1] + br i1 %6, label %7, label %43 + +; <label>:7 ; preds = %0 + br label %8 + +; <label>:8 ; preds = %36, %7 + %9 = load %union.GCObject** %u, align 4 ; [#uses=1] + %10 = getelementptr inbounds %union.GCObject* %9, i32 0, i32 0 ; [#uses=1] + %11 = bitcast %struct.lua_State* %10 to %struct.GCheader* ; [#uses=1] + %12 = getelementptr inbounds %struct.GCheader* %11, i32 0, i32 0 ; [#uses=1] + %13 = load %union.GCObject** %12, align 4 ; [#uses=1] + store %union.GCObject* %13, %union.GCObject** %u, align 4 + %14 = load %union.GCObject** %u, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.GCheader* ; [#uses=1] + %17 = getelementptr inbounds %struct.GCheader* %16, i32 0, i32 2 ; [#uses=1] + %18 = load i8* %17, align 1 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + %20 = and i32 %19, 248 ; [#uses=1] + %21 = load %struct.global_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 3 ; [#uses=1] + %23 = load i8* %22, align 1 ; [#uses=1] + %24 = zext i8 %23 to i32 ; [#uses=1] + %25 = and i32 %24, 3 ; [#uses=1] + %26 = trunc i32 %25 to i8 ; [#uses=1] + %27 = zext i8 %26 to i32 ; [#uses=1] + %28 = or i32 %20, %27 ; [#uses=1] + %29 = trunc i32 %28 to i8 ; [#uses=1] + %30 = load %union.GCObject** %u, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.GCObject* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to %struct.GCheader* ; [#uses=1] + %33 = getelementptr inbounds %struct.GCheader* %32, i32 0, i32 2 ; [#uses=1] + store i8 %29, i8* %33, align 1 + %34 = load %struct.global_State** %1, align 4 ; [#uses=1] + %35 = load %union.GCObject** %u, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %34, %union.GCObject* %35) + br label %36 + +; <label>:36 ; preds = %8 + %37 = load %union.GCObject** %u, align 4 ; [#uses=1] + %38 = load %struct.global_State** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.global_State* %38, i32 0, i32 11 ; [#uses=1] + %40 = load %union.GCObject** %39, align 4 ; [#uses=1] + %41 = icmp ne %union.GCObject* %37, %40 ; [#uses=1] + br i1 %41, label %8, label %42 + +; <label>:42 ; preds = %36 + br label %43 + +; <label>:43 ; preds = %42, %0 + ret void +} + +; [#uses=1] +define internal void @_Z10cleartableP8GCObject(%union.GCObject* %l) { + %1 = alloca %union.GCObject*, align 4 ; [#uses=4] + %h = alloca %struct.Table*, align 4 ; [#uses=7] + %i = alloca i32, align 4 ; [#uses=8] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %n = alloca %struct.Node*, align 4 ; [#uses=6] + store %union.GCObject* %l, %union.GCObject** %1, align 4 + br label %2 + +; <label>:2 ; preds = %76, %0 + %3 = load %union.GCObject** %1, align 4 ; [#uses=1] + %4 = icmp ne %union.GCObject* %3, null ; [#uses=1] + br i1 %4, label %5, label %80 + +; <label>:5 ; preds = %2 + %6 = load %union.GCObject** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %union.GCObject* %6, i32 0, i32 0 ; [#uses=1] + %8 = bitcast %struct.lua_State* %7 to %struct.Table* ; [#uses=1] + store %struct.Table* %8, %struct.Table** %h, align 4 + %9 = load %struct.Table** %h, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Table* %9, i32 0, i32 10 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + store i32 %11, i32* %i, align 4 + %12 = load %struct.Table** %h, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Table* %12, i32 0, i32 2 ; [#uses=1] + %14 = load i8* %13, align 1 ; [#uses=1] + %15 = zext i8 %14 to i32 ; [#uses=1] + %16 = and i32 %15, 16 ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %37 + +; <label>:18 ; preds = %5 + br label %19 + +; <label>:19 ; preds = %35, %18 + %20 = load i32* %i, align 4 ; [#uses=2] + %21 = add nsw i32 %20, -1 ; [#uses=1] + store i32 %21, i32* %i, align 4 + %22 = icmp ne i32 %20, 0 ; [#uses=1] + br i1 %22, label %23, label %36 + +; <label>:23 ; preds = %19 + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = load %struct.Table** %h, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Table* %25, i32 0, i32 6 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 %24 ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %o, align 4 + %29 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %30 = call i32 @_Z9isclearedPK10lua_TValuei(%struct.lua_TValue* %29, i32 0) ; [#uses=1] + %31 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %31, label %32, label %35 + +; <label>:32 ; preds = %23 + %33 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %34, align 4 + br label %35 + +; <label>:35 ; preds = %32, %23 + br label %19 + +; <label>:36 ; preds = %19 + br label %37 + +; <label>:37 ; preds = %36, %5 + %38 = load %struct.Table** %h, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Table* %38, i32 0, i32 4 ; [#uses=1] + %40 = load i8* %39, align 1 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = shl i32 1, %41 ; [#uses=1] + store i32 %42, i32* %i, align 4 + br label %43 + +; <label>:43 ; preds = %75, %37 + %44 = load i32* %i, align 4 ; [#uses=2] + %45 = add nsw i32 %44, -1 ; [#uses=1] + store i32 %45, i32* %i, align 4 + %46 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %46, label %47, label %76 + +; <label>:47 ; preds = %43 + %48 = load i32* %i, align 4 ; [#uses=1] + %49 = load %struct.Table** %h, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Table* %49, i32 0, i32 7 ; [#uses=1] + %51 = load %struct.Node** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Node* %51, i32 %48 ; [#uses=1] + store %struct.Node* %52, %struct.Node** %n, align 4 + %53 = load %struct.Node** %n, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Node* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 1 ; [#uses=1] + %56 = load i32* %55, align 4 ; [#uses=1] + %57 = icmp eq i32 %56, 0 ; [#uses=1] + br i1 %57, label %75, label %58 + +; <label>:58 ; preds = %47 + %59 = load %struct.Node** %n, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.Node* %59, i32 0, i32 1 ; [#uses=1] + %61 = getelementptr inbounds %union.TKey* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast %1* %61 to %struct.lua_TValue* ; [#uses=1] + %63 = call i32 @_Z9isclearedPK10lua_TValuei(%struct.lua_TValue* %62, i32 1) ; [#uses=1] + %64 = icmp ne i32 %63, 0 ; [#uses=1] + br i1 %64, label %70, label %65 + +; <label>:65 ; preds = %58 + %66 = load %struct.Node** %n, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Node* %66, i32 0, i32 0 ; [#uses=1] + %68 = call i32 @_Z9isclearedPK10lua_TValuei(%struct.lua_TValue* %67, i32 0) ; [#uses=1] + %69 = icmp ne i32 %68, 0 ; [#uses=1] + br i1 %69, label %70, label %75 + +; <label>:70 ; preds = %65, %58 + %71 = load %struct.Node** %n, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.Node* %71, i32 0, i32 0 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %72, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %73, align 4 + %74 = load %struct.Node** %n, align 4 ; [#uses=1] + call void @_Z11removeentryP4Node(%struct.Node* %74) + br label %75 + +; <label>:75 ; preds = %70, %65, %47 + br label %43 + +; <label>:76 ; preds = %43 + %77 = load %struct.Table** %h, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.Table* %77, i32 0, i32 9 ; [#uses=1] + %79 = load %union.GCObject** %78, align 4 ; [#uses=1] + store %union.GCObject* %79, %union.GCObject** %1, align 4 + br label %2 + +; <label>:80 ; preds = %2 + ret void +} + +; [#uses=3] +define internal i32 @_Z9isclearedPK10lua_TValuei(%struct.lua_TValue* %o, i32 %iskey) nounwind { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_TValue* %o, %struct.lua_TValue** %2, align 4 + store i32 %iskey, i32* %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp sge i32 %6, 4 ; [#uses=1] + br i1 %7, label %9, label %8 + +; <label>:8 ; preds = %0 + store i32 0, i32* %1 + br label %70 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 1 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 4 ; [#uses=1] + br i1 %13, label %14, label %28 + +; <label>:14 ; preds = %9 + %15 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.TString* ; [#uses=1] + %22 = getelementptr inbounds %union.TString* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %struct.anon* %22, i32 0, i32 2 ; [#uses=2] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = and i32 %25, 252 ; [#uses=1] + %27 = trunc i32 %26 to i8 ; [#uses=1] + store i8 %27, i8* %23, align 1 + store i32 0, i32* %1 + br label %70 + +; <label>:28 ; preds = %9 + %29 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast double* %31 to %union.GCObject** ; [#uses=1] + %33 = load %union.GCObject** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %union.GCObject* %33, i32 0, i32 0 ; [#uses=1] + %35 = bitcast %struct.lua_State* %34 to %struct.GCheader* ; [#uses=1] + %36 = getelementptr inbounds %struct.GCheader* %35, i32 0, i32 2 ; [#uses=1] + %37 = load i8* %36, align 1 ; [#uses=1] + %38 = zext i8 %37 to i32 ; [#uses=1] + %39 = and i32 %38, 3 ; [#uses=1] + %40 = icmp ne i32 %39, 0 ; [#uses=1] + br i1 %40, label %67, label %41 + +; <label>:41 ; preds = %28 + %42 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 1 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = icmp eq i32 %44, 7 ; [#uses=1] + br i1 %45, label %46, label %65 + +; <label>:46 ; preds = %41 + %47 = load i32* %3, align 4 ; [#uses=1] + %48 = icmp ne i32 %47, 0 ; [#uses=1] + br i1 %48, label %63, label %49 + +; <label>:49 ; preds = %46 + %50 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %union.anon* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast double* %52 to %union.GCObject** ; [#uses=1] + %54 = load %union.GCObject** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %union.GCObject* %54, i32 0, i32 0 ; [#uses=1] + %56 = bitcast %struct.lua_State* %55 to %union.Udata* ; [#uses=1] + %57 = getelementptr inbounds %union.Udata* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %4* %57, i32 0, i32 2 ; [#uses=1] + %59 = load i8* %58, align 1 ; [#uses=1] + %60 = zext i8 %59 to i32 ; [#uses=1] + %61 = and i32 %60, 8 ; [#uses=1] + %62 = icmp ne i32 %61, 0 ; [#uses=1] + br label %63 + +; <label>:63 ; preds = %49, %46 + %64 = phi i1 [ false, %46 ], [ %62, %49 ] ; [#uses=1] + br label %65 + +; <label>:65 ; preds = %63, %41 + %66 = phi i1 [ false, %41 ], [ %64, %63 ] ; [#uses=1] + br label %67 + +; <label>:67 ; preds = %65, %28 + %68 = phi i1 [ true, %28 ], [ %66, %65 ] ; [#uses=1] + %69 = zext i1 %68 to i32 ; [#uses=1] + store i32 %69, i32* %1 + br label %70 + +; <label>:70 ; preds = %67, %14, %8 + %71 = load i32* %1 ; [#uses=1] + ret i32 %71 +} + +; [#uses=2] +define internal void @_Z11removeentryP4Node(%struct.Node* %n) nounwind { + %1 = alloca %struct.Node*, align 4 ; [#uses=3] + store %struct.Node* %n, %struct.Node** %1, align 4 + %2 = load %struct.Node** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.Node* %2, i32 0, i32 1 ; [#uses=1] + %4 = getelementptr inbounds %union.TKey* %3, i32 0, i32 0 ; [#uses=1] + %5 = getelementptr inbounds %1* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp sge i32 %6, 4 ; [#uses=1] + br i1 %7, label %8, label %13 + +; <label>:8 ; preds = %0 + %9 = load %struct.Node** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Node* %9, i32 0, i32 1 ; [#uses=1] + %11 = getelementptr inbounds %union.TKey* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %1* %11, i32 0, i32 1 ; [#uses=1] + store i32 11, i32* %12, align 4 + br label %13 + +; <label>:13 ; preds = %8, %0 + ret void +} + +; [#uses=1] +define internal i32 @_Z13traversetableP12global_StateP5Table(%struct.global_State* %g, %struct.Table* %h) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.global_State*, align 4 ; [#uses=8] + %3 = alloca %struct.Table*, align 4 ; [#uses=17] + %i = alloca i32, align 4 ; [#uses=10] + %weakkey = alloca i32, align 4 ; [#uses=7] + %weakvalue = alloca i32, align 4 ; [#uses=8] + %mode = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %n = alloca %struct.Node*, align 4 ; [#uses=9] + store %struct.global_State* %g, %struct.global_State** %2, align 4 + store %struct.Table* %h, %struct.Table** %3, align 4 + store i32 0, i32* %weakkey, align 4 + store i32 0, i32* %weakvalue, align 4 + %4 = load %struct.Table** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Table* %4, i32 0, i32 5 ; [#uses=1] + %6 = load %struct.Table** %5, align 4 ; [#uses=1] + %7 = icmp ne %struct.Table* %6, null ; [#uses=1] + br i1 %7, label %8, label %27 + +; <label>:8 ; preds = %0 + %9 = load %struct.Table** %3, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Table* %9, i32 0, i32 5 ; [#uses=1] + %11 = load %struct.Table** %10, align 4 ; [#uses=1] + %12 = bitcast %struct.Table* %11 to %union.GCObject* ; [#uses=1] + %13 = getelementptr inbounds %union.GCObject* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast %struct.lua_State* %13 to %struct.GCheader* ; [#uses=1] + %15 = getelementptr inbounds %struct.GCheader* %14, i32 0, i32 2 ; [#uses=1] + %16 = load i8* %15, align 1 ; [#uses=1] + %17 = zext i8 %16 to i32 ; [#uses=1] + %18 = and i32 %17, 3 ; [#uses=1] + %19 = icmp ne i32 %18, 0 ; [#uses=1] + br i1 %19, label %20, label %26 + +; <label>:20 ; preds = %8 + %21 = load %struct.global_State** %2, align 4 ; [#uses=1] + %22 = load %struct.Table** %3, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Table* %22, i32 0, i32 5 ; [#uses=1] + %24 = load %struct.Table** %23, align 4 ; [#uses=1] + %25 = bitcast %struct.Table* %24 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %21, %union.GCObject* %25) + br label %26 + +; <label>:26 ; preds = %20, %8 + br label %27 + +; <label>:27 ; preds = %26, %0 + %28 = load %struct.Table** %3, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Table* %28, i32 0, i32 5 ; [#uses=1] + %30 = load %struct.Table** %29, align 4 ; [#uses=1] + %31 = icmp eq %struct.Table* %30, null ; [#uses=1] + br i1 %31, label %32, label %33 + +; <label>:32 ; preds = %27 + br label %54 + +; <label>:33 ; preds = %27 + %34 = load %struct.Table** %3, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Table* %34, i32 0, i32 5 ; [#uses=1] + %36 = load %struct.Table** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Table* %36, i32 0, i32 3 ; [#uses=1] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = and i32 %39, 8 ; [#uses=1] + %41 = icmp ne i32 %40, 0 ; [#uses=1] + br i1 %41, label %42, label %43 + +; <label>:42 ; preds = %33 + br label %52 + +; <label>:43 ; preds = %33 + %44 = load %struct.Table** %3, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.Table* %44, i32 0, i32 5 ; [#uses=1] + %46 = load %struct.Table** %45, align 4 ; [#uses=1] + %47 = load %struct.global_State** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.global_State* %47, i32 0, i32 24 ; [#uses=1] + %49 = getelementptr inbounds [17 x %union.TString*]* %48, i32 0, i32 3 ; [#uses=1] + %50 = load %union.TString** %49 ; [#uses=1] + %51 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %46, i32 3, %union.TString* %50) ; [#uses=1] + br label %52 + +; <label>:52 ; preds = %43, %42 + %53 = phi %struct.lua_TValue* [ null, %42 ], [ %51, %43 ] ; [#uses=1] + br label %54 + +; <label>:54 ; preds = %52, %32 + %55 = phi %struct.lua_TValue* [ null, %32 ], [ %53, %52 ] ; [#uses=1] + store %struct.lua_TValue* %55, %struct.lua_TValue** %mode, align 4 + %56 = load %struct.lua_TValue** %mode, align 4 ; [#uses=1] + %57 = icmp ne %struct.lua_TValue* %56, null ; [#uses=1] + br i1 %57, label %58, label %123 + +; <label>:58 ; preds = %54 + %59 = load %struct.lua_TValue** %mode, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.lua_TValue* %59, i32 0, i32 1 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + %62 = icmp eq i32 %61, 4 ; [#uses=1] + br i1 %62, label %63, label %123 + +; <label>:63 ; preds = %58 + %64 = load %struct.lua_TValue** %mode, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_TValue* %64, i32 0, i32 0 ; [#uses=1] + %66 = getelementptr inbounds %union.anon* %65, i32 0, i32 0 ; [#uses=1] + %67 = bitcast double* %66 to %union.GCObject** ; [#uses=1] + %68 = load %union.GCObject** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds %union.GCObject* %68, i32 0, i32 0 ; [#uses=1] + %70 = bitcast %struct.lua_State* %69 to %union.TString* ; [#uses=1] + %71 = getelementptr inbounds %union.TString* %70, i32 1 ; [#uses=1] + %72 = bitcast %union.TString* %71 to i8* ; [#uses=1] + %73 = call i8* @strchr(i8* %72, i32 107) ; [#uses=1] + %74 = icmp ne i8* %73, null ; [#uses=1] + %75 = zext i1 %74 to i32 ; [#uses=1] + store i32 %75, i32* %weakkey, align 4 + %76 = load %struct.lua_TValue** %mode, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_TValue* %76, i32 0, i32 0 ; [#uses=1] + %78 = getelementptr inbounds %union.anon* %77, i32 0, i32 0 ; [#uses=1] + %79 = bitcast double* %78 to %union.GCObject** ; [#uses=1] + %80 = load %union.GCObject** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %union.GCObject* %80, i32 0, i32 0 ; [#uses=1] + %82 = bitcast %struct.lua_State* %81 to %union.TString* ; [#uses=1] + %83 = getelementptr inbounds %union.TString* %82, i32 1 ; [#uses=1] + %84 = bitcast %union.TString* %83 to i8* ; [#uses=1] + %85 = call i8* @strchr(i8* %84, i32 118) ; [#uses=1] + %86 = icmp ne i8* %85, null ; [#uses=1] + %87 = zext i1 %86 to i32 ; [#uses=1] + store i32 %87, i32* %weakvalue, align 4 + %88 = load i32* %weakkey, align 4 ; [#uses=1] + %89 = icmp ne i32 %88, 0 ; [#uses=1] + br i1 %89, label %93, label %90 + +; <label>:90 ; preds = %63 + %91 = load i32* %weakvalue, align 4 ; [#uses=1] + %92 = icmp ne i32 %91, 0 ; [#uses=1] + br i1 %92, label %93, label %122 + +; <label>:93 ; preds = %90, %63 + %94 = load %struct.Table** %3, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.Table* %94, i32 0, i32 2 ; [#uses=2] + %96 = load i8* %95, align 1 ; [#uses=1] + %97 = zext i8 %96 to i32 ; [#uses=1] + %98 = and i32 %97, -25 ; [#uses=1] + %99 = trunc i32 %98 to i8 ; [#uses=1] + store i8 %99, i8* %95, align 1 + %100 = load i32* %weakkey, align 4 ; [#uses=1] + %101 = shl i32 %100, 3 ; [#uses=1] + %102 = load i32* %weakvalue, align 4 ; [#uses=1] + %103 = shl i32 %102, 4 ; [#uses=1] + %104 = or i32 %101, %103 ; [#uses=1] + %105 = trunc i32 %104 to i8 ; [#uses=1] + %106 = zext i8 %105 to i32 ; [#uses=1] + %107 = load %struct.Table** %3, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.Table* %107, i32 0, i32 2 ; [#uses=2] + %109 = load i8* %108, align 1 ; [#uses=1] + %110 = zext i8 %109 to i32 ; [#uses=1] + %111 = or i32 %110, %106 ; [#uses=1] + %112 = trunc i32 %111 to i8 ; [#uses=1] + store i8 %112, i8* %108, align 1 + %113 = load %struct.global_State** %2, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.global_State* %113, i32 0, i32 10 ; [#uses=1] + %115 = load %union.GCObject** %114, align 4 ; [#uses=1] + %116 = load %struct.Table** %3, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.Table* %116, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* %115, %union.GCObject** %117, align 4 + %118 = load %struct.Table** %3, align 4 ; [#uses=1] + %119 = bitcast %struct.Table* %118 to %union.GCObject* ; [#uses=1] + %120 = load %struct.global_State** %2, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.global_State* %120, i32 0, i32 10 ; [#uses=1] + store %union.GCObject* %119, %union.GCObject** %121, align 4 + br label %122 + +; <label>:122 ; preds = %93, %90 + br label %123 + +; <label>:123 ; preds = %122, %58, %54 + %124 = load i32* %weakkey, align 4 ; [#uses=1] + %125 = icmp ne i32 %124, 0 ; [#uses=1] + br i1 %125, label %126, label %130 + +; <label>:126 ; preds = %123 + %127 = load i32* %weakvalue, align 4 ; [#uses=1] + %128 = icmp ne i32 %127, 0 ; [#uses=1] + br i1 %128, label %129, label %130 + +; <label>:129 ; preds = %126 + store i32 1, i32* %1 + br label %281 + +; <label>:130 ; preds = %126, %123 + %131 = load i32* %weakvalue, align 4 ; [#uses=1] + %132 = icmp ne i32 %131, 0 ; [#uses=1] + br i1 %132, label %180, label %133 + +; <label>:133 ; preds = %130 + %134 = load %struct.Table** %3, align 4 ; [#uses=1] + %135 = getelementptr inbounds %struct.Table* %134, i32 0, i32 10 ; [#uses=1] + %136 = load i32* %135, align 4 ; [#uses=1] + store i32 %136, i32* %i, align 4 + br label %137 + +; <label>:137 ; preds = %178, %133 + %138 = load i32* %i, align 4 ; [#uses=2] + %139 = add nsw i32 %138, -1 ; [#uses=1] + store i32 %139, i32* %i, align 4 + %140 = icmp ne i32 %138, 0 ; [#uses=1] + br i1 %140, label %141, label %179 + +; <label>:141 ; preds = %137 + %142 = load i32* %i, align 4 ; [#uses=1] + %143 = load %struct.Table** %3, align 4 ; [#uses=1] + %144 = getelementptr inbounds %struct.Table* %143, i32 0, i32 6 ; [#uses=1] + %145 = load %struct.lua_TValue** %144, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.lua_TValue* %145, i32 %142 ; [#uses=1] + %147 = getelementptr inbounds %struct.lua_TValue* %146, i32 0, i32 1 ; [#uses=1] + %148 = load i32* %147, align 4 ; [#uses=1] + %149 = icmp sge i32 %148, 4 ; [#uses=1] + br i1 %149, label %150, label %178 + +; <label>:150 ; preds = %141 + %151 = load i32* %i, align 4 ; [#uses=1] + %152 = load %struct.Table** %3, align 4 ; [#uses=1] + %153 = getelementptr inbounds %struct.Table* %152, i32 0, i32 6 ; [#uses=1] + %154 = load %struct.lua_TValue** %153, align 4 ; [#uses=1] + %155 = getelementptr inbounds %struct.lua_TValue* %154, i32 %151 ; [#uses=1] + %156 = getelementptr inbounds %struct.lua_TValue* %155, i32 0, i32 0 ; [#uses=1] + %157 = getelementptr inbounds %union.anon* %156, i32 0, i32 0 ; [#uses=1] + %158 = bitcast double* %157 to %union.GCObject** ; [#uses=1] + %159 = load %union.GCObject** %158, align 4 ; [#uses=1] + %160 = getelementptr inbounds %union.GCObject* %159, i32 0, i32 0 ; [#uses=1] + %161 = bitcast %struct.lua_State* %160 to %struct.GCheader* ; [#uses=1] + %162 = getelementptr inbounds %struct.GCheader* %161, i32 0, i32 2 ; [#uses=1] + %163 = load i8* %162, align 1 ; [#uses=1] + %164 = zext i8 %163 to i32 ; [#uses=1] + %165 = and i32 %164, 3 ; [#uses=1] + %166 = icmp ne i32 %165, 0 ; [#uses=1] + br i1 %166, label %167, label %178 + +; <label>:167 ; preds = %150 + %168 = load %struct.global_State** %2, align 4 ; [#uses=1] + %169 = load i32* %i, align 4 ; [#uses=1] + %170 = load %struct.Table** %3, align 4 ; [#uses=1] + %171 = getelementptr inbounds %struct.Table* %170, i32 0, i32 6 ; [#uses=1] + %172 = load %struct.lua_TValue** %171, align 4 ; [#uses=1] + %173 = getelementptr inbounds %struct.lua_TValue* %172, i32 %169 ; [#uses=1] + %174 = getelementptr inbounds %struct.lua_TValue* %173, i32 0, i32 0 ; [#uses=1] + %175 = getelementptr inbounds %union.anon* %174, i32 0, i32 0 ; [#uses=1] + %176 = bitcast double* %175 to %union.GCObject** ; [#uses=1] + %177 = load %union.GCObject** %176, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %168, %union.GCObject* %177) + br label %178 + +; <label>:178 ; preds = %167, %150, %141 + br label %137 + +; <label>:179 ; preds = %137 + br label %180 + +; <label>:180 ; preds = %179, %130 + %181 = load %struct.Table** %3, align 4 ; [#uses=1] + %182 = getelementptr inbounds %struct.Table* %181, i32 0, i32 4 ; [#uses=1] + %183 = load i8* %182, align 1 ; [#uses=1] + %184 = zext i8 %183 to i32 ; [#uses=1] + %185 = shl i32 1, %184 ; [#uses=1] + store i32 %185, i32* %i, align 4 + br label %186 + +; <label>:186 ; preds = %271, %180 + %187 = load i32* %i, align 4 ; [#uses=2] + %188 = add nsw i32 %187, -1 ; [#uses=1] + store i32 %188, i32* %i, align 4 + %189 = icmp ne i32 %187, 0 ; [#uses=1] + br i1 %189, label %190, label %272 + +; <label>:190 ; preds = %186 + %191 = load i32* %i, align 4 ; [#uses=1] + %192 = load %struct.Table** %3, align 4 ; [#uses=1] + %193 = getelementptr inbounds %struct.Table* %192, i32 0, i32 7 ; [#uses=1] + %194 = load %struct.Node** %193, align 4 ; [#uses=1] + %195 = getelementptr inbounds %struct.Node* %194, i32 %191 ; [#uses=1] + store %struct.Node* %195, %struct.Node** %n, align 4 + %196 = load %struct.Node** %n, align 4 ; [#uses=1] + %197 = getelementptr inbounds %struct.Node* %196, i32 0, i32 0 ; [#uses=1] + %198 = getelementptr inbounds %struct.lua_TValue* %197, i32 0, i32 1 ; [#uses=1] + %199 = load i32* %198, align 4 ; [#uses=1] + %200 = icmp eq i32 %199, 0 ; [#uses=1] + br i1 %200, label %201, label %203 + +; <label>:201 ; preds = %190 + %202 = load %struct.Node** %n, align 4 ; [#uses=1] + call void @_Z11removeentryP4Node(%struct.Node* %202) + br label %271 + +; <label>:203 ; preds = %190 + %204 = load i32* %weakkey, align 4 ; [#uses=1] + %205 = icmp ne i32 %204, 0 ; [#uses=1] + br i1 %205, label %238, label %206 + +; <label>:206 ; preds = %203 + %207 = load %struct.Node** %n, align 4 ; [#uses=1] + %208 = getelementptr inbounds %struct.Node* %207, i32 0, i32 1 ; [#uses=1] + %209 = getelementptr inbounds %union.TKey* %208, i32 0, i32 0 ; [#uses=1] + %210 = getelementptr inbounds %1* %209, i32 0, i32 1 ; [#uses=1] + %211 = load i32* %210, align 4 ; [#uses=1] + %212 = icmp sge i32 %211, 4 ; [#uses=1] + br i1 %212, label %213, label %237 + +; <label>:213 ; preds = %206 + %214 = load %struct.Node** %n, align 4 ; [#uses=1] + %215 = getelementptr inbounds %struct.Node* %214, i32 0, i32 1 ; [#uses=1] + %216 = getelementptr inbounds %union.TKey* %215, i32 0, i32 0 ; [#uses=1] + %217 = getelementptr inbounds %1* %216, i32 0, i32 0 ; [#uses=1] + %218 = getelementptr inbounds %union.anon* %217, i32 0, i32 0 ; [#uses=1] + %219 = bitcast double* %218 to %union.GCObject** ; [#uses=1] + %220 = load %union.GCObject** %219, align 4 ; [#uses=1] + %221 = getelementptr inbounds %union.GCObject* %220, i32 0, i32 0 ; [#uses=1] + %222 = bitcast %struct.lua_State* %221 to %struct.GCheader* ; [#uses=1] + %223 = getelementptr inbounds %struct.GCheader* %222, i32 0, i32 2 ; [#uses=1] + %224 = load i8* %223, align 1 ; [#uses=1] + %225 = zext i8 %224 to i32 ; [#uses=1] + %226 = and i32 %225, 3 ; [#uses=1] + %227 = icmp ne i32 %226, 0 ; [#uses=1] + br i1 %227, label %228, label %237 + +; <label>:228 ; preds = %213 + %229 = load %struct.global_State** %2, align 4 ; [#uses=1] + %230 = load %struct.Node** %n, align 4 ; [#uses=1] + %231 = getelementptr inbounds %struct.Node* %230, i32 0, i32 1 ; [#uses=1] + %232 = getelementptr inbounds %union.TKey* %231, i32 0, i32 0 ; [#uses=1] + %233 = getelementptr inbounds %1* %232, i32 0, i32 0 ; [#uses=1] + %234 = getelementptr inbounds %union.anon* %233, i32 0, i32 0 ; [#uses=1] + %235 = bitcast double* %234 to %union.GCObject** ; [#uses=1] + %236 = load %union.GCObject** %235, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %229, %union.GCObject* %236) + br label %237 + +; <label>:237 ; preds = %228, %213, %206 + br label %238 + +; <label>:238 ; preds = %237, %203 + %239 = load i32* %weakvalue, align 4 ; [#uses=1] + %240 = icmp ne i32 %239, 0 ; [#uses=1] + br i1 %240, label %270, label %241 + +; <label>:241 ; preds = %238 + %242 = load %struct.Node** %n, align 4 ; [#uses=1] + %243 = getelementptr inbounds %struct.Node* %242, i32 0, i32 0 ; [#uses=1] + %244 = getelementptr inbounds %struct.lua_TValue* %243, i32 0, i32 1 ; [#uses=1] + %245 = load i32* %244, align 4 ; [#uses=1] + %246 = icmp sge i32 %245, 4 ; [#uses=1] + br i1 %246, label %247, label %269 + +; <label>:247 ; preds = %241 + %248 = load %struct.Node** %n, align 4 ; [#uses=1] + %249 = getelementptr inbounds %struct.Node* %248, i32 0, i32 0 ; [#uses=1] + %250 = getelementptr inbounds %struct.lua_TValue* %249, i32 0, i32 0 ; [#uses=1] + %251 = getelementptr inbounds %union.anon* %250, i32 0, i32 0 ; [#uses=1] + %252 = bitcast double* %251 to %union.GCObject** ; [#uses=1] + %253 = load %union.GCObject** %252, align 4 ; [#uses=1] + %254 = getelementptr inbounds %union.GCObject* %253, i32 0, i32 0 ; [#uses=1] + %255 = bitcast %struct.lua_State* %254 to %struct.GCheader* ; [#uses=1] + %256 = getelementptr inbounds %struct.GCheader* %255, i32 0, i32 2 ; [#uses=1] + %257 = load i8* %256, align 1 ; [#uses=1] + %258 = zext i8 %257 to i32 ; [#uses=1] + %259 = and i32 %258, 3 ; [#uses=1] + %260 = icmp ne i32 %259, 0 ; [#uses=1] + br i1 %260, label %261, label %269 + +; <label>:261 ; preds = %247 + %262 = load %struct.global_State** %2, align 4 ; [#uses=1] + %263 = load %struct.Node** %n, align 4 ; [#uses=1] + %264 = getelementptr inbounds %struct.Node* %263, i32 0, i32 0 ; [#uses=1] + %265 = getelementptr inbounds %struct.lua_TValue* %264, i32 0, i32 0 ; [#uses=1] + %266 = getelementptr inbounds %union.anon* %265, i32 0, i32 0 ; [#uses=1] + %267 = bitcast double* %266 to %union.GCObject** ; [#uses=1] + %268 = load %union.GCObject** %267, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %262, %union.GCObject* %268) + br label %269 + +; <label>:269 ; preds = %261, %247, %241 + br label %270 + +; <label>:270 ; preds = %269, %238 + br label %271 + +; <label>:271 ; preds = %270, %201 + br label %186 + +; <label>:272 ; preds = %186 + %273 = load i32* %weakkey, align 4 ; [#uses=1] + %274 = icmp ne i32 %273, 0 ; [#uses=1] + br i1 %274, label %278, label %275 + +; <label>:275 ; preds = %272 + %276 = load i32* %weakvalue, align 4 ; [#uses=1] + %277 = icmp ne i32 %276, 0 ; [#uses=1] + br label %278 + +; <label>:278 ; preds = %275, %272 + %279 = phi i1 [ true, %272 ], [ %277, %275 ] ; [#uses=1] + %280 = zext i1 %279 to i32 ; [#uses=1] + store i32 %280, i32* %1 + br label %281 + +; <label>:281 ; preds = %278, %129 + %282 = load i32* %1 ; [#uses=1] + ret i32 %282 +} + +; [#uses=1] +define internal void @_Z15traverseclosureP12global_StateP7Closure(%struct.global_State* %g, %union.Closure* %cl) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=5] + %2 = alloca %union.Closure*, align 4 ; [#uses=13] + %i = alloca i32, align 4 ; [#uses=7] + %i1 = alloca i32, align 4 ; [#uses=6] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store %union.Closure* %cl, %union.Closure** %2, align 4 + %3 = load %union.Closure** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %union.Closure* %3, i32 0, i32 0 ; [#uses=1] + %5 = getelementptr inbounds %struct.CClosure* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.Table** %5, align 4 ; [#uses=1] + %7 = bitcast %struct.Table* %6 to %union.GCObject* ; [#uses=1] + %8 = getelementptr inbounds %union.GCObject* %7, i32 0, i32 0 ; [#uses=1] + %9 = bitcast %struct.lua_State* %8 to %struct.GCheader* ; [#uses=1] + %10 = getelementptr inbounds %struct.GCheader* %9, i32 0, i32 2 ; [#uses=1] + %11 = load i8* %10, align 1 ; [#uses=1] + %12 = zext i8 %11 to i32 ; [#uses=1] + %13 = and i32 %12, 3 ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %22 + +; <label>:15 ; preds = %0 + %16 = load %struct.global_State** %1, align 4 ; [#uses=1] + %17 = load %union.Closure** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %union.Closure* %17, i32 0, i32 0 ; [#uses=1] + %19 = getelementptr inbounds %struct.CClosure* %18, i32 0, i32 6 ; [#uses=1] + %20 = load %struct.Table** %19, align 4 ; [#uses=1] + %21 = bitcast %struct.Table* %20 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %16, %union.GCObject* %21) + br label %22 + +; <label>:22 ; preds = %15, %0 + %23 = load %union.Closure** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %union.Closure* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %struct.CClosure* %24, i32 0, i32 3 ; [#uses=1] + %26 = load i8* %25, align 1 ; [#uses=1] + %27 = icmp ne i8 %26, 0 ; [#uses=1] + br i1 %27, label %28, label %79 + +; <label>:28 ; preds = %22 + store i32 0, i32* %i, align 4 + br label %29 + +; <label>:29 ; preds = %75, %28 + %30 = load i32* %i, align 4 ; [#uses=1] + %31 = load %union.Closure** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %union.Closure* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %struct.CClosure* %32, i32 0, i32 4 ; [#uses=1] + %34 = load i8* %33, align 1 ; [#uses=1] + %35 = zext i8 %34 to i32 ; [#uses=1] + %36 = icmp slt i32 %30, %35 ; [#uses=1] + br i1 %36, label %37, label %78 + +; <label>:37 ; preds = %29 + %38 = load i32* %i, align 4 ; [#uses=1] + %39 = load %union.Closure** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %union.Closure* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %struct.CClosure* %40, i32 0, i32 8 ; [#uses=1] + %42 = getelementptr inbounds [1 x %struct.lua_TValue]* %41, i32 0, i32 %38 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 1 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = icmp sge i32 %44, 4 ; [#uses=1] + br i1 %45, label %46, label %74 + +; <label>:46 ; preds = %37 + %47 = load i32* %i, align 4 ; [#uses=1] + %48 = load %union.Closure** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %union.Closure* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %struct.CClosure* %49, i32 0, i32 8 ; [#uses=1] + %51 = getelementptr inbounds [1 x %struct.lua_TValue]* %50, i32 0, i32 %47 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 0, i32 0 ; [#uses=1] + %53 = getelementptr inbounds %union.anon* %52, i32 0, i32 0 ; [#uses=1] + %54 = bitcast double* %53 to %union.GCObject** ; [#uses=1] + %55 = load %union.GCObject** %54, align 4 ; [#uses=1] + %56 = getelementptr inbounds %union.GCObject* %55, i32 0, i32 0 ; [#uses=1] + %57 = bitcast %struct.lua_State* %56 to %struct.GCheader* ; [#uses=1] + %58 = getelementptr inbounds %struct.GCheader* %57, i32 0, i32 2 ; [#uses=1] + %59 = load i8* %58, align 1 ; [#uses=1] + %60 = zext i8 %59 to i32 ; [#uses=1] + %61 = and i32 %60, 3 ; [#uses=1] + %62 = icmp ne i32 %61, 0 ; [#uses=1] + br i1 %62, label %63, label %74 + +; <label>:63 ; preds = %46 + %64 = load %struct.global_State** %1, align 4 ; [#uses=1] + %65 = load i32* %i, align 4 ; [#uses=1] + %66 = load %union.Closure** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %union.Closure* %66, i32 0, i32 0 ; [#uses=1] + %68 = getelementptr inbounds %struct.CClosure* %67, i32 0, i32 8 ; [#uses=1] + %69 = getelementptr inbounds [1 x %struct.lua_TValue]* %68, i32 0, i32 %65 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %union.anon* %70, i32 0, i32 0 ; [#uses=1] + %72 = bitcast double* %71 to %union.GCObject** ; [#uses=1] + %73 = load %union.GCObject** %72, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %64, %union.GCObject* %73) + br label %74 + +; <label>:74 ; preds = %63, %46, %37 + br label %75 + +; <label>:75 ; preds = %74 + %76 = load i32* %i, align 4 ; [#uses=1] + %77 = add nsw i32 %76, 1 ; [#uses=1] + store i32 %77, i32* %i, align 4 + br label %29 + +; <label>:78 ; preds = %29 + br label %142 + +; <label>:79 ; preds = %22 + %80 = load %union.Closure** %2, align 4 ; [#uses=1] + %81 = getelementptr inbounds %union.Closure* %80, i32 0, i32 0 ; [#uses=1] + %82 = bitcast %struct.CClosure* %81 to %struct.LClosure* ; [#uses=1] + %83 = getelementptr inbounds %struct.LClosure* %82, i32 0, i32 7 ; [#uses=1] + %84 = load %struct.Proto** %83, align 4 ; [#uses=1] + %85 = bitcast %struct.Proto* %84 to %union.GCObject* ; [#uses=1] + %86 = getelementptr inbounds %union.GCObject* %85, i32 0, i32 0 ; [#uses=1] + %87 = bitcast %struct.lua_State* %86 to %struct.GCheader* ; [#uses=1] + %88 = getelementptr inbounds %struct.GCheader* %87, i32 0, i32 2 ; [#uses=1] + %89 = load i8* %88, align 1 ; [#uses=1] + %90 = zext i8 %89 to i32 ; [#uses=1] + %91 = and i32 %90, 3 ; [#uses=1] + %92 = icmp ne i32 %91, 0 ; [#uses=1] + br i1 %92, label %93, label %101 + +; <label>:93 ; preds = %79 + %94 = load %struct.global_State** %1, align 4 ; [#uses=1] + %95 = load %union.Closure** %2, align 4 ; [#uses=1] + %96 = getelementptr inbounds %union.Closure* %95, i32 0, i32 0 ; [#uses=1] + %97 = bitcast %struct.CClosure* %96 to %struct.LClosure* ; [#uses=1] + %98 = getelementptr inbounds %struct.LClosure* %97, i32 0, i32 7 ; [#uses=1] + %99 = load %struct.Proto** %98, align 4 ; [#uses=1] + %100 = bitcast %struct.Proto* %99 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %94, %union.GCObject* %100) + br label %101 + +; <label>:101 ; preds = %93, %79 + store i32 0, i32* %i1, align 4 + br label %102 + +; <label>:102 ; preds = %138, %101 + %103 = load i32* %i1, align 4 ; [#uses=1] + %104 = load %union.Closure** %2, align 4 ; [#uses=1] + %105 = getelementptr inbounds %union.Closure* %104, i32 0, i32 0 ; [#uses=1] + %106 = bitcast %struct.CClosure* %105 to %struct.LClosure* ; [#uses=1] + %107 = getelementptr inbounds %struct.LClosure* %106, i32 0, i32 4 ; [#uses=1] + %108 = load i8* %107, align 1 ; [#uses=1] + %109 = zext i8 %108 to i32 ; [#uses=1] + %110 = icmp slt i32 %103, %109 ; [#uses=1] + br i1 %110, label %111, label %141 + +; <label>:111 ; preds = %102 + %112 = load i32* %i1, align 4 ; [#uses=1] + %113 = load %union.Closure** %2, align 4 ; [#uses=1] + %114 = getelementptr inbounds %union.Closure* %113, i32 0, i32 0 ; [#uses=1] + %115 = bitcast %struct.CClosure* %114 to %struct.LClosure* ; [#uses=1] + %116 = getelementptr inbounds %struct.LClosure* %115, i32 0, i32 8 ; [#uses=1] + %117 = getelementptr inbounds [1 x %struct.UpVal*]* %116, i32 0, i32 %112 ; [#uses=1] + %118 = load %struct.UpVal** %117 ; [#uses=1] + %119 = bitcast %struct.UpVal* %118 to %union.GCObject* ; [#uses=1] + %120 = getelementptr inbounds %union.GCObject* %119, i32 0, i32 0 ; [#uses=1] + %121 = bitcast %struct.lua_State* %120 to %struct.GCheader* ; [#uses=1] + %122 = getelementptr inbounds %struct.GCheader* %121, i32 0, i32 2 ; [#uses=1] + %123 = load i8* %122, align 1 ; [#uses=1] + %124 = zext i8 %123 to i32 ; [#uses=1] + %125 = and i32 %124, 3 ; [#uses=1] + %126 = icmp ne i32 %125, 0 ; [#uses=1] + br i1 %126, label %127, label %137 + +; <label>:127 ; preds = %111 + %128 = load %struct.global_State** %1, align 4 ; [#uses=1] + %129 = load i32* %i1, align 4 ; [#uses=1] + %130 = load %union.Closure** %2, align 4 ; [#uses=1] + %131 = getelementptr inbounds %union.Closure* %130, i32 0, i32 0 ; [#uses=1] + %132 = bitcast %struct.CClosure* %131 to %struct.LClosure* ; [#uses=1] + %133 = getelementptr inbounds %struct.LClosure* %132, i32 0, i32 8 ; [#uses=1] + %134 = getelementptr inbounds [1 x %struct.UpVal*]* %133, i32 0, i32 %129 ; [#uses=1] + %135 = load %struct.UpVal** %134 ; [#uses=1] + %136 = bitcast %struct.UpVal* %135 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %128, %union.GCObject* %136) + br label %137 + +; <label>:137 ; preds = %127, %111 + br label %138 + +; <label>:138 ; preds = %137 + %139 = load i32* %i1, align 4 ; [#uses=1] + %140 = add nsw i32 %139, 1 ; [#uses=1] + store i32 %140, i32* %i1, align 4 + br label %102 + +; <label>:141 ; preds = %102 + br label %142 + +; <label>:142 ; preds = %141, %78 + ret void +} + +; [#uses=1] +define internal void @_Z13traversestackP12global_StateP9lua_State(%struct.global_State* %g, %struct.lua_State* %l) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=11] + %lim = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=6] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store %struct.lua_State* %l, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 22 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp sge i32 %6, 4 ; [#uses=1] + br i1 %7, label %8, label %30 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_State* %9, i32 0, i32 22 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast double* %12 to %union.GCObject** ; [#uses=1] + %14 = load %union.GCObject** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %struct.GCheader* ; [#uses=1] + %17 = getelementptr inbounds %struct.GCheader* %16, i32 0, i32 2 ; [#uses=1] + %18 = load i8* %17, align 1 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + %20 = and i32 %19, 3 ; [#uses=1] + %21 = icmp ne i32 %20, 0 ; [#uses=1] + br i1 %21, label %22, label %30 + +; <label>:22 ; preds = %8 + %23 = load %struct.global_State** %1, align 4 ; [#uses=1] + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_State* %24, i32 0, i32 22 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %union.anon* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast double* %27 to %union.GCObject** ; [#uses=1] + %29 = load %union.GCObject** %28, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %23, %union.GCObject* %29) + br label %30 + +; <label>:30 ; preds = %22, %8, %0 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 4 ; [#uses=1] + %33 = load %struct.lua_TValue** %32, align 4 ; [#uses=1] + store %struct.lua_TValue* %33, %struct.lua_TValue** %lim, align 4 + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 12 ; [#uses=1] + %36 = load %struct.CallInfo** %35, align 4 ; [#uses=1] + store %struct.CallInfo* %36, %struct.CallInfo** %ci, align 4 + br label %37 + +; <label>:37 ; preds = %54, %30 + %38 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 7 ; [#uses=1] + %41 = load %struct.CallInfo** %40, align 4 ; [#uses=1] + %42 = icmp ule %struct.CallInfo* %38, %41 ; [#uses=1] + br i1 %42, label %43, label %57 + +; <label>:43 ; preds = %37 + %44 = load %struct.lua_TValue** %lim, align 4 ; [#uses=1] + %45 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.CallInfo* %45, i32 0, i32 2 ; [#uses=1] + %47 = load %struct.lua_TValue** %46, align 4 ; [#uses=1] + %48 = icmp ult %struct.lua_TValue* %44, %47 ; [#uses=1] + br i1 %48, label %49, label %53 + +; <label>:49 ; preds = %43 + %50 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.CallInfo* %50, i32 0, i32 2 ; [#uses=1] + %52 = load %struct.lua_TValue** %51, align 4 ; [#uses=1] + store %struct.lua_TValue* %52, %struct.lua_TValue** %lim, align 4 + br label %53 + +; <label>:53 ; preds = %49, %43 + br label %54 + +; <label>:54 ; preds = %53 + %55 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.CallInfo* %55, i32 1 ; [#uses=1] + store %struct.CallInfo* %56, %struct.CallInfo** %ci, align 4 + br label %37 + +; <label>:57 ; preds = %37 + %58 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_State* %58, i32 0, i32 10 ; [#uses=1] + %60 = load %struct.lua_TValue** %59, align 4 ; [#uses=1] + store %struct.lua_TValue* %60, %struct.lua_TValue** %o, align 4 + br label %61 + +; <label>:61 ; preds = %93, %57 + %62 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %63 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_State* %63, i32 0, i32 4 ; [#uses=1] + %65 = load %struct.lua_TValue** %64, align 4 ; [#uses=1] + %66 = icmp ult %struct.lua_TValue* %62, %65 ; [#uses=1] + br i1 %66, label %67, label %96 + +; <label>:67 ; preds = %61 + %68 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.lua_TValue* %68, i32 0, i32 1 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + %71 = icmp sge i32 %70, 4 ; [#uses=1] + br i1 %71, label %72, label %92 + +; <label>:72 ; preds = %67 + %73 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %union.anon* %74, i32 0, i32 0 ; [#uses=1] + %76 = bitcast double* %75 to %union.GCObject** ; [#uses=1] + %77 = load %union.GCObject** %76, align 4 ; [#uses=1] + %78 = getelementptr inbounds %union.GCObject* %77, i32 0, i32 0 ; [#uses=1] + %79 = bitcast %struct.lua_State* %78 to %struct.GCheader* ; [#uses=1] + %80 = getelementptr inbounds %struct.GCheader* %79, i32 0, i32 2 ; [#uses=1] + %81 = load i8* %80, align 1 ; [#uses=1] + %82 = zext i8 %81 to i32 ; [#uses=1] + %83 = and i32 %82, 3 ; [#uses=1] + %84 = icmp ne i32 %83, 0 ; [#uses=1] + br i1 %84, label %85, label %92 + +; <label>:85 ; preds = %72 + %86 = load %struct.global_State** %1, align 4 ; [#uses=1] + %87 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 0 ; [#uses=1] + %89 = getelementptr inbounds %union.anon* %88, i32 0, i32 0 ; [#uses=1] + %90 = bitcast double* %89 to %union.GCObject** ; [#uses=1] + %91 = load %union.GCObject** %90, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %86, %union.GCObject* %91) + br label %92 + +; <label>:92 ; preds = %85, %72, %67 + br label %93 + +; <label>:93 ; preds = %92 + %94 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.lua_TValue* %94, i32 1 ; [#uses=1] + store %struct.lua_TValue* %95, %struct.lua_TValue** %o, align 4 + br label %61 + +; <label>:96 ; preds = %61 + br label %97 + +; <label>:97 ; preds = %104, %96 + %98 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %99 = load %struct.lua_TValue** %lim, align 4 ; [#uses=1] + %100 = icmp ule %struct.lua_TValue* %98, %99 ; [#uses=1] + br i1 %100, label %101, label %107 + +; <label>:101 ; preds = %97 + %102 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.lua_TValue* %102, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %103, align 4 + br label %104 + +; <label>:104 ; preds = %101 + %105 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.lua_TValue* %105, i32 1 ; [#uses=1] + store %struct.lua_TValue* %106, %struct.lua_TValue** %o, align 4 + br label %97 + +; <label>:107 ; preds = %97 + %108 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %109 = load %struct.lua_TValue** %lim, align 4 ; [#uses=1] + call void @_Z15checkstacksizesP9lua_StateP10lua_TValue(%struct.lua_State* %108, %struct.lua_TValue* %109) + ret void +} + +; [#uses=1] +define internal void @_Z13traverseprotoP12global_StateP5Proto(%struct.global_State* %g, %struct.Proto* %f) { + %1 = alloca %struct.global_State*, align 4 ; [#uses=3] + %2 = alloca %struct.Proto*, align 4 ; [#uses=17] + %i = alloca i32, align 4 ; [#uses=26] + store %struct.global_State* %g, %struct.global_State** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + %3 = load %struct.Proto** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Proto* %3, i32 0, i32 9 ; [#uses=1] + %5 = load %union.TString** %4, align 4 ; [#uses=1] + %6 = icmp ne %union.TString* %5, null ; [#uses=1] + br i1 %6, label %7, label %17 + +; <label>:7 ; preds = %0 + %8 = load %struct.Proto** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 9 ; [#uses=1] + %10 = load %union.TString** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %union.TString* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 2 ; [#uses=2] + %13 = load i8* %12, align 1 ; [#uses=1] + %14 = zext i8 %13 to i32 ; [#uses=1] + %15 = and i32 %14, 252 ; [#uses=1] + %16 = trunc i32 %15 to i8 ; [#uses=1] + store i8 %16, i8* %12, align 1 + br label %17 + +; <label>:17 ; preds = %7, %0 + store i32 0, i32* %i, align 4 + br label %18 + +; <label>:18 ; preds = %62, %17 + %19 = load i32* %i, align 4 ; [#uses=1] + %20 = load %struct.Proto** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 11 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = icmp slt i32 %19, %22 ; [#uses=1] + br i1 %23, label %24, label %65 + +; <label>:24 ; preds = %18 + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = load %struct.Proto** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 3 ; [#uses=1] + %28 = load %struct.lua_TValue** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 %25 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 1 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = icmp sge i32 %31, 4 ; [#uses=1] + br i1 %32, label %33, label %61 + +; <label>:33 ; preds = %24 + %34 = load i32* %i, align 4 ; [#uses=1] + %35 = load %struct.Proto** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Proto* %35, i32 0, i32 3 ; [#uses=1] + %37 = load %struct.lua_TValue** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 %34 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %union.anon* %39, i32 0, i32 0 ; [#uses=1] + %41 = bitcast double* %40 to %union.GCObject** ; [#uses=1] + %42 = load %union.GCObject** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %union.GCObject* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast %struct.lua_State* %43 to %struct.GCheader* ; [#uses=1] + %45 = getelementptr inbounds %struct.GCheader* %44, i32 0, i32 2 ; [#uses=1] + %46 = load i8* %45, align 1 ; [#uses=1] + %47 = zext i8 %46 to i32 ; [#uses=1] + %48 = and i32 %47, 3 ; [#uses=1] + %49 = icmp ne i32 %48, 0 ; [#uses=1] + br i1 %49, label %50, label %61 + +; <label>:50 ; preds = %33 + %51 = load %struct.global_State** %1, align 4 ; [#uses=1] + %52 = load i32* %i, align 4 ; [#uses=1] + %53 = load %struct.Proto** %2, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Proto* %53, i32 0, i32 3 ; [#uses=1] + %55 = load %struct.lua_TValue** %54, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_TValue* %55, i32 %52 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %union.anon* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast double* %58 to %union.GCObject** ; [#uses=1] + %60 = load %union.GCObject** %59, align 4 ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %51, %union.GCObject* %60) + br label %61 + +; <label>:61 ; preds = %50, %33, %24 + br label %62 + +; <label>:62 ; preds = %61 + %63 = load i32* %i, align 4 ; [#uses=1] + %64 = add nsw i32 %63, 1 ; [#uses=1] + store i32 %64, i32* %i, align 4 + br label %18 + +; <label>:65 ; preds = %18 + store i32 0, i32* %i, align 4 + br label %66 + +; <label>:66 ; preds = %94, %65 + %67 = load i32* %i, align 4 ; [#uses=1] + %68 = load %struct.Proto** %2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.Proto* %68, i32 0, i32 10 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + %71 = icmp slt i32 %67, %70 ; [#uses=1] + br i1 %71, label %72, label %97 + +; <label>:72 ; preds = %66 + %73 = load i32* %i, align 4 ; [#uses=1] + %74 = load %struct.Proto** %2, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.Proto* %74, i32 0, i32 8 ; [#uses=1] + %76 = load %union.TString*** %75, align 4 ; [#uses=1] + %77 = getelementptr inbounds %union.TString** %76, i32 %73 ; [#uses=1] + %78 = load %union.TString** %77 ; [#uses=1] + %79 = icmp ne %union.TString* %78, null ; [#uses=1] + br i1 %79, label %80, label %93 + +; <label>:80 ; preds = %72 + %81 = load i32* %i, align 4 ; [#uses=1] + %82 = load %struct.Proto** %2, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.Proto* %82, i32 0, i32 8 ; [#uses=1] + %84 = load %union.TString*** %83, align 4 ; [#uses=1] + %85 = getelementptr inbounds %union.TString** %84, i32 %81 ; [#uses=1] + %86 = load %union.TString** %85 ; [#uses=1] + %87 = getelementptr inbounds %union.TString* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %struct.anon* %87, i32 0, i32 2 ; [#uses=2] + %89 = load i8* %88, align 1 ; [#uses=1] + %90 = zext i8 %89 to i32 ; [#uses=1] + %91 = and i32 %90, 252 ; [#uses=1] + %92 = trunc i32 %91 to i8 ; [#uses=1] + store i8 %92, i8* %88, align 1 + br label %93 + +; <label>:93 ; preds = %80, %72 + br label %94 + +; <label>:94 ; preds = %93 + %95 = load i32* %i, align 4 ; [#uses=1] + %96 = add nsw i32 %95, 1 ; [#uses=1] + store i32 %96, i32* %i, align 4 + br label %66 + +; <label>:97 ; preds = %66 + store i32 0, i32* %i, align 4 + br label %98 + +; <label>:98 ; preds = %138, %97 + %99 = load i32* %i, align 4 ; [#uses=1] + %100 = load %struct.Proto** %2, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.Proto* %100, i32 0, i32 14 ; [#uses=1] + %102 = load i32* %101, align 4 ; [#uses=1] + %103 = icmp slt i32 %99, %102 ; [#uses=1] + br i1 %103, label %104, label %141 + +; <label>:104 ; preds = %98 + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = load %struct.Proto** %2, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.Proto* %106, i32 0, i32 5 ; [#uses=1] + %108 = load %struct.Proto*** %107, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.Proto** %108, i32 %105 ; [#uses=1] + %110 = load %struct.Proto** %109 ; [#uses=1] + %111 = icmp ne %struct.Proto* %110, null ; [#uses=1] + br i1 %111, label %112, label %137 + +; <label>:112 ; preds = %104 + %113 = load i32* %i, align 4 ; [#uses=1] + %114 = load %struct.Proto** %2, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.Proto* %114, i32 0, i32 5 ; [#uses=1] + %116 = load %struct.Proto*** %115, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.Proto** %116, i32 %113 ; [#uses=1] + %118 = load %struct.Proto** %117 ; [#uses=1] + %119 = bitcast %struct.Proto* %118 to %union.GCObject* ; [#uses=1] + %120 = getelementptr inbounds %union.GCObject* %119, i32 0, i32 0 ; [#uses=1] + %121 = bitcast %struct.lua_State* %120 to %struct.GCheader* ; [#uses=1] + %122 = getelementptr inbounds %struct.GCheader* %121, i32 0, i32 2 ; [#uses=1] + %123 = load i8* %122, align 1 ; [#uses=1] + %124 = zext i8 %123 to i32 ; [#uses=1] + %125 = and i32 %124, 3 ; [#uses=1] + %126 = icmp ne i32 %125, 0 ; [#uses=1] + br i1 %126, label %127, label %136 + +; <label>:127 ; preds = %112 + %128 = load %struct.global_State** %1, align 4 ; [#uses=1] + %129 = load i32* %i, align 4 ; [#uses=1] + %130 = load %struct.Proto** %2, align 4 ; [#uses=1] + %131 = getelementptr inbounds %struct.Proto* %130, i32 0, i32 5 ; [#uses=1] + %132 = load %struct.Proto*** %131, align 4 ; [#uses=1] + %133 = getelementptr inbounds %struct.Proto** %132, i32 %129 ; [#uses=1] + %134 = load %struct.Proto** %133 ; [#uses=1] + %135 = bitcast %struct.Proto* %134 to %union.GCObject* ; [#uses=1] + call void @_Z16reallymarkobjectP12global_StateP8GCObject(%struct.global_State* %128, %union.GCObject* %135) + br label %136 + +; <label>:136 ; preds = %127, %112 + br label %137 + +; <label>:137 ; preds = %136, %104 + br label %138 + +; <label>:138 ; preds = %137 + %139 = load i32* %i, align 4 ; [#uses=1] + %140 = add nsw i32 %139, 1 ; [#uses=1] + store i32 %140, i32* %i, align 4 + br label %98 + +; <label>:141 ; preds = %98 + store i32 0, i32* %i, align 4 + br label %142 + +; <label>:142 ; preds = %172, %141 + %143 = load i32* %i, align 4 ; [#uses=1] + %144 = load %struct.Proto** %2, align 4 ; [#uses=1] + %145 = getelementptr inbounds %struct.Proto* %144, i32 0, i32 15 ; [#uses=1] + %146 = load i32* %145, align 4 ; [#uses=1] + %147 = icmp slt i32 %143, %146 ; [#uses=1] + br i1 %147, label %148, label %175 + +; <label>:148 ; preds = %142 + %149 = load i32* %i, align 4 ; [#uses=1] + %150 = load %struct.Proto** %2, align 4 ; [#uses=1] + %151 = getelementptr inbounds %struct.Proto* %150, i32 0, i32 7 ; [#uses=1] + %152 = load %struct.LocVar** %151, align 4 ; [#uses=1] + %153 = getelementptr inbounds %struct.LocVar* %152, i32 %149 ; [#uses=1] + %154 = getelementptr inbounds %struct.LocVar* %153, i32 0, i32 0 ; [#uses=1] + %155 = load %union.TString** %154, align 4 ; [#uses=1] + %156 = icmp ne %union.TString* %155, null ; [#uses=1] + br i1 %156, label %157, label %171 + +; <label>:157 ; preds = %148 + %158 = load i32* %i, align 4 ; [#uses=1] + %159 = load %struct.Proto** %2, align 4 ; [#uses=1] + %160 = getelementptr inbounds %struct.Proto* %159, i32 0, i32 7 ; [#uses=1] + %161 = load %struct.LocVar** %160, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.LocVar* %161, i32 %158 ; [#uses=1] + %163 = getelementptr inbounds %struct.LocVar* %162, i32 0, i32 0 ; [#uses=1] + %164 = load %union.TString** %163, align 4 ; [#uses=1] + %165 = getelementptr inbounds %union.TString* %164, i32 0, i32 0 ; [#uses=1] + %166 = getelementptr inbounds %struct.anon* %165, i32 0, i32 2 ; [#uses=2] + %167 = load i8* %166, align 1 ; [#uses=1] + %168 = zext i8 %167 to i32 ; [#uses=1] + %169 = and i32 %168, 252 ; [#uses=1] + %170 = trunc i32 %169 to i8 ; [#uses=1] + store i8 %170, i8* %166, align 1 + br label %171 + +; <label>:171 ; preds = %157, %148 + br label %172 + +; <label>:172 ; preds = %171 + %173 = load i32* %i, align 4 ; [#uses=1] + %174 = add nsw i32 %173, 1 ; [#uses=1] + store i32 %174, i32* %i, align 4 + br label %142 + +; <label>:175 ; preds = %142 + ret void +} + +; [#uses=1] +define internal void @_Z15checkstacksizesP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %max) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %ci_used = alloca i32, align 4 ; [#uses=2] + %s_used = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %max, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 7 ; [#uses=1] + %5 = load %struct.CallInfo** %4, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 12 ; [#uses=1] + %8 = load %struct.CallInfo** %7, align 4 ; [#uses=1] + %9 = ptrtoint %struct.CallInfo* %5 to i32 ; [#uses=1] + %10 = ptrtoint %struct.CallInfo* %8 to i32 ; [#uses=1] + %11 = sub i32 %9, %10 ; [#uses=1] + %12 = sdiv exact i32 %11, 24 ; [#uses=1] + store i32 %12, i32* %ci_used, align 4 + %13 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 10 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = ptrtoint %struct.lua_TValue* %13 to i32 ; [#uses=1] + %18 = ptrtoint %struct.lua_TValue* %16 to i32 ; [#uses=1] + %19 = sub i32 %17, %18 ; [#uses=1] + %20 = sdiv exact i32 %19, 12 ; [#uses=1] + store i32 %20, i32* %s_used, align 4 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 14 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + %24 = icmp sgt i32 %23, 20000 ; [#uses=1] + br i1 %24, label %25, label %26 + +; <label>:25 ; preds = %0 + br label %62 + +; <label>:26 ; preds = %0 + %27 = load i32* %ci_used, align 4 ; [#uses=1] + %28 = mul nsw i32 4, %27 ; [#uses=1] + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 14 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = icmp slt i32 %28, %31 ; [#uses=1] + br i1 %32, label %33, label %44 + +; <label>:33 ; preds = %26 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 14 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp slt i32 16, %36 ; [#uses=1] + br i1 %37, label %38, label %44 + +; <label>:38 ; preds = %33 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 14 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = sdiv i32 %42, 2 ; [#uses=1] + call void @_Z14luaD_reallocCIP9lua_Statei(%struct.lua_State* %39, i32 %43) + br label %44 + +; <label>:44 ; preds = %38, %33, %26 + %45 = load i32* %s_used, align 4 ; [#uses=1] + %46 = mul nsw i32 4, %45 ; [#uses=1] + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 13 ; [#uses=1] + %49 = load i32* %48, align 4 ; [#uses=1] + %50 = icmp slt i32 %46, %49 ; [#uses=1] + br i1 %50, label %51, label %62 + +; <label>:51 ; preds = %44 + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_State* %52, i32 0, i32 13 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = icmp slt i32 90, %54 ; [#uses=1] + br i1 %55, label %56, label %62 + +; <label>:56 ; preds = %51 + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_State* %58, i32 0, i32 13 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = sdiv i32 %60, 2 ; [#uses=1] + call void @_Z17luaD_reallocstackP9lua_Statei(%struct.lua_State* %57, i32 %61) + br label %62 + +; <label>:62 ; preds = %56, %51, %44, %25 + ret void +} + +; [#uses=1] +define internal void @_Z7freeobjP9lua_StateP8GCObject(%struct.lua_State* %L, %union.GCObject* %o) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca %union.GCObject*, align 4 ; [#uses=11] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %union.GCObject* %o, %union.GCObject** %2, align 4 + %3 = load %union.GCObject** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %union.GCObject* %3, i32 0, i32 0 ; [#uses=1] + %5 = bitcast %struct.lua_State* %4 to %struct.GCheader* ; [#uses=1] + %6 = getelementptr inbounds %struct.GCheader* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i8* %6, align 1 ; [#uses=1] + %8 = zext i8 %7 to i32 ; [#uses=1] + switch i32 %8, label %66 [ + i32 9, label %9 + i32 6, label %14 + i32 10, label %19 + i32 5, label %24 + i32 8, label %29 + i32 4, label %33 + i32 7, label %54 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %union.GCObject** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.GCObject* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast %struct.lua_State* %12 to %struct.Proto* ; [#uses=1] + call void @_Z14luaF_freeprotoP9lua_StateP5Proto(%struct.lua_State* %10, %struct.Proto* %13) + br label %67 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = load %union.GCObject** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %union.GCObject* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast %struct.lua_State* %17 to %union.Closure* ; [#uses=1] + call void @_Z16luaF_freeclosureP9lua_StateP7Closure(%struct.lua_State* %15, %union.Closure* %18) + br label %67 + +; <label>:19 ; preds = %0 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = load %union.GCObject** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %union.GCObject* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %struct.lua_State* %22 to %struct.UpVal* ; [#uses=1] + call void @_Z14luaF_freeupvalP9lua_StateP5UpVal(%struct.lua_State* %20, %struct.UpVal* %23) + br label %67 + +; <label>:24 ; preds = %0 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load %union.GCObject** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %union.GCObject* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast %struct.lua_State* %27 to %struct.Table* ; [#uses=1] + call void @_Z9luaH_freeP9lua_StateP5Table(%struct.lua_State* %25, %struct.Table* %28) + br label %67 + +; <label>:29 ; preds = %0 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = load %union.GCObject** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %union.GCObject* %31, i32 0, i32 0 ; [#uses=1] + call void @_Z15luaE_freethreadP9lua_StateS0_(%struct.lua_State* %30, %struct.lua_State* %32) + br label %67 + +; <label>:33 ; preds = %0 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 6 ; [#uses=1] + %36 = load %struct.global_State** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.global_State* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %struct.stringtable* %37, i32 0, i32 1 ; [#uses=2] + %39 = load i32* %38, align 4 ; [#uses=1] + %40 = add i32 %39, -1 ; [#uses=1] + store i32 %40, i32* %38, align 4 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = load %union.GCObject** %2, align 4 ; [#uses=1] + %43 = bitcast %union.GCObject* %42 to i8* ; [#uses=1] + %44 = load %union.GCObject** %2, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.GCObject* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.lua_State* %45 to %union.TString* ; [#uses=1] + %47 = getelementptr inbounds %union.TString* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds %struct.anon* %47, i32 0, i32 5 ; [#uses=1] + %49 = load i32* %48, align 4 ; [#uses=1] + %50 = add i32 %49, 1 ; [#uses=1] + %51 = mul i32 %50, 1 ; [#uses=1] + %52 = add i32 16, %51 ; [#uses=1] + %53 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %41, i8* %43, i32 %52, i32 0) ; [#uses=0] + br label %67 + +; <label>:54 ; preds = %0 + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = load %union.GCObject** %2, align 4 ; [#uses=1] + %57 = bitcast %union.GCObject* %56 to i8* ; [#uses=1] + %58 = load %union.GCObject** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %union.GCObject* %58, i32 0, i32 0 ; [#uses=1] + %60 = bitcast %struct.lua_State* %59 to %union.Udata* ; [#uses=1] + %61 = getelementptr inbounds %union.Udata* %60, i32 0, i32 0 ; [#uses=1] + %62 = getelementptr inbounds %4* %61, i32 0, i32 5 ; [#uses=1] + %63 = load i32* %62, align 4 ; [#uses=1] + %64 = add i32 20, %63 ; [#uses=1] + %65 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %55, i8* %57, i32 %64, i32 0) ; [#uses=0] + br label %67 + +; <label>:66 ; preds = %0 + br label %67 + +; <label>:67 ; preds = %66, %54, %33, %29, %24, %19, %14, %9 + ret void +} + +; [#uses=1] +define hidden void @_Z9luaX_initP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=7] + %ts = alloca %union.TString*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 0, i32* %i, align 4 + br label %2 + +; <label>:2 ; preds = %28, %0 + %3 = load i32* %i, align 4 ; [#uses=1] + %4 = icmp slt i32 %3, 21 ; [#uses=1] + br i1 %4, label %5, label %31 + +; <label>:5 ; preds = %2 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = getelementptr inbounds [32 x i8*]* @luaX_tokens, i32 0, i32 %7 ; [#uses=1] + %9 = load i8** %8 ; [#uses=1] + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = getelementptr inbounds [32 x i8*]* @luaX_tokens, i32 0, i32 %10 ; [#uses=1] + %12 = load i8** %11 ; [#uses=1] + %13 = call i32 @strlen(i8* %12) ; [#uses=1] + %14 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %6, i8* %9, i32 %13) ; [#uses=1] + store %union.TString* %14, %union.TString** %ts, align 4 + %15 = load %union.TString** %ts, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.TString* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %struct.anon* %16, i32 0, i32 2 ; [#uses=2] + %18 = load i8* %17, align 1 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + %20 = or i32 %19, 32 ; [#uses=1] + %21 = trunc i32 %20 to i8 ; [#uses=1] + store i8 %21, i8* %17, align 1 + %22 = load i32* %i, align 4 ; [#uses=1] + %23 = add nsw i32 %22, 1 ; [#uses=1] + %24 = trunc i32 %23 to i8 ; [#uses=1] + %25 = load %union.TString** %ts, align 4 ; [#uses=1] + %26 = getelementptr inbounds %union.TString* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %struct.anon* %26, i32 0, i32 3 ; [#uses=1] + store i8 %24, i8* %27, align 1 + br label %28 + +; <label>:28 ; preds = %5 + %29 = load i32* %i, align 4 ; [#uses=1] + %30 = add nsw i32 %29, 1 ; [#uses=1] + store i32 %30, i32* %i, align 4 + br label %2 + +; <label>:31 ; preds = %2 + ret void +} + +; [#uses=4] +define hidden i8* @_Z14luaX_token2strP8LexStatei(%struct.LexState* %ls, i32 %token) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.LexState*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=6] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store i32 %token, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp slt i32 %4, 257 ; [#uses=1] + br i1 %5, label %6, label %24 + +; <label>:6 ; preds = %0 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = call i32 @iscntrl(i32 %7) nounwind ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %16 + +; <label>:10 ; preds = %6 + %11 = load %struct.LexState** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.LexState* %11, i32 0, i32 6 ; [#uses=1] + %13 = load %struct.lua_State** %12, align 4 ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([9 x i8]* @.str31, i32 0, i32 0), i32 %14) ; [#uses=1] + br label %22 + +; <label>:16 ; preds = %6 + %17 = load %struct.LexState** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.LexState* %17, i32 0, i32 6 ; [#uses=1] + %19 = load %struct.lua_State** %18, align 4 ; [#uses=1] + %20 = load i32* %3, align 4 ; [#uses=1] + %21 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %19, i8* getelementptr inbounds ([3 x i8]* @.str32, i32 0, i32 0), i32 %20) ; [#uses=1] + br label %22 + +; <label>:22 ; preds = %16, %10 + %23 = phi i8* [ %15, %10 ], [ %21, %16 ] ; [#uses=1] + store i8* %23, i8** %1 + br label %29 + +; <label>:24 ; preds = %0 + %25 = load i32* %3, align 4 ; [#uses=1] + %26 = sub nsw i32 %25, 257 ; [#uses=1] + %27 = getelementptr inbounds [32 x i8*]* @luaX_tokens, i32 0, i32 %26 ; [#uses=1] + %28 = load i8** %27 ; [#uses=1] + store i8* %28, i8** %1 + br label %29 + +; <label>:29 ; preds = %24, %22 + %30 = load i8** %1 ; [#uses=1] + ret i8* %30 +} + +; [#uses=2] +declare i32 @iscntrl(i32) nounwind + +; [#uses=11] +define hidden void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %ls, i8* %msg, i32 %token) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=7] + %2 = alloca i8*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=3] + %buff = alloca [80 x i8], align 1 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i8* %msg, i8** %2, align 4 + store i32 %token, i32* %3, align 4 + %4 = getelementptr inbounds [80 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 9 ; [#uses=1] + %7 = load %union.TString** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %union.TString* %7, i32 1 ; [#uses=1] + %9 = bitcast %union.TString* %8 to i8* ; [#uses=1] + call void @_Z12luaO_chunkidPcPKcj(i8* %4, i8* %9, i32 80) + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LexState* %10, i32 0, i32 6 ; [#uses=1] + %12 = load %struct.lua_State** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds [80 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.LexState* %14, i32 0, i32 1 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = load i8** %2, align 4 ; [#uses=1] + %18 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %12, i8* getelementptr inbounds ([10 x i8]* @.str33, i32 0, i32 0), i8* %13, i32 %16, i8* %17) ; [#uses=1] + store i8* %18, i8** %2, align 4 + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %30 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 6 ; [#uses=1] + %24 = load %struct.lua_State** %23, align 4 ; [#uses=1] + %25 = load i8** %2, align 4 ; [#uses=1] + %26 = load %struct.LexState** %1, align 4 ; [#uses=1] + %27 = load i32* %3, align 4 ; [#uses=1] + %28 = call i8* @_Z8txtTokenP8LexStatei(%struct.LexState* %26, i32 %27) ; [#uses=1] + %29 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %24, i8* getelementptr inbounds ([13 x i8]* @.str34, i32 0, i32 0), i8* %25, i8* %28) ; [#uses=0] + br label %30 + +; <label>:30 ; preds = %21, %0 + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.LexState* %31, i32 0, i32 6 ; [#uses=1] + %33 = load %struct.lua_State** %32, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %33, i32 3) + ret void +} + +; [#uses=1] +define internal i8* @_Z8txtTokenP8LexStatei(%struct.LexState* %ls, i32 %token) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.LexState*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store i32 %token, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + switch i32 %4, label %12 [ + i32 285, label %5 + i32 286, label %5 + i32 284, label %5 + ] + +; <label>:5 ; preds = %0, %0, %0 + %6 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %6, i32 0) + %7 = load %struct.LexState** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LexState* %7, i32 0, i32 8 ; [#uses=1] + %9 = load %struct.Mbuffer** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Mbuffer* %9, i32 0, i32 0 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + store i8* %11, i8** %1 + br label %16 + +; <label>:12 ; preds = %0 + %13 = load %struct.LexState** %2, align 4 ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = call i8* @_Z14luaX_token2strP8LexStatei(%struct.LexState* %13, i32 %14) ; [#uses=1] + store i8* %15, i8** %1 + br label %16 + +; <label>:16 ; preds = %12, %5 + %17 = load i8** %1 ; [#uses=1] + ret i8* %17 +} + +; [#uses=13] +define hidden void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %ls, i8* %msg) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i8* %msg, i8** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 3 ; [#uses=1] + %7 = getelementptr inbounds %struct.Token* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %3, i8* %4, i32 %8) + ret void +} + +; [#uses=12] +define hidden %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %ls, i8* %str, i32 %l) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %L = alloca %struct.lua_State*, align 4 ; [#uses=3] + %ts = alloca %union.TString*, align 4 ; [#uses=3] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i8* %str, i8** %2, align 4 + store i32 %l, i32* %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.lua_State** %5, align 4 ; [#uses=1] + store %struct.lua_State* %6, %struct.lua_State** %L, align 4 + %7 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %8 = load i8** %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %7, i8* %8, i32 %9) ; [#uses=1] + store %union.TString* %10, %union.TString** %ts, align 4 + %11 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.LexState* %12, i32 0, i32 5 ; [#uses=1] + %14 = load %struct.FuncState** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 1 ; [#uses=1] + %16 = load %struct.Table** %15, align 4 ; [#uses=1] + %17 = load %union.TString** %ts, align 4 ; [#uses=1] + %18 = call %struct.lua_TValue* @_Z11luaH_setstrP9lua_StateP5TableP7TString(%struct.lua_State* %11, %struct.Table* %16, %union.TString* %17) ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %o, align 4 + %19 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 1 ; [#uses=1] + %21 = load i32* %20, align 4 ; [#uses=1] + %22 = icmp eq i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %31 + +; <label>:23 ; preds = %0 + %24 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %i_o, align 4 + %25 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %union.anon* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast double* %27 to i32* ; [#uses=1] + store i32 1, i32* %28, align 4 + %29 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %30, align 4 + br label %31 + +; <label>:31 ; preds = %23, %0 + %32 = load %union.TString** %ts, align 4 ; [#uses=1] + ret %union.TString* %32 +} + +; [#uses=1] +define hidden void @_Z13luaX_setinputP9lua_StateP8LexStateP3ZioP7TString(%struct.lua_State* %L, %struct.LexState* %ls, %struct.Zio* %z, %union.TString* %source) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.LexState*, align 4 ; [#uses=18] + %3 = alloca %struct.Zio*, align 4 ; [#uses=2] + %4 = alloca %union.TString*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store %struct.Zio* %z, %struct.Zio** %3, align 4 + store %union.TString* %source, %union.TString** %4, align 4 + %5 = load %struct.LexState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 10 ; [#uses=1] + store i8 46, i8* %6, align 1 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.LexState** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 6 ; [#uses=1] + store %struct.lua_State* %7, %struct.lua_State** %9, align 4 + %10 = load %struct.LexState** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LexState* %10, i32 0, i32 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.Token* %11, i32 0, i32 0 ; [#uses=1] + store i32 287, i32* %12, align 4 + %13 = load %struct.Zio** %3, align 4 ; [#uses=1] + %14 = load %struct.LexState** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.LexState* %14, i32 0, i32 7 ; [#uses=1] + store %struct.Zio* %13, %struct.Zio** %15, align 4 + %16 = load %struct.LexState** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 5 ; [#uses=1] + store %struct.FuncState* null, %struct.FuncState** %17, align 4 + %18 = load %struct.LexState** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.LexState* %18, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %19, align 4 + %20 = load %struct.LexState** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.LexState* %20, i32 0, i32 2 ; [#uses=1] + store i32 1, i32* %21, align 4 + %22 = load %union.TString** %4, align 4 ; [#uses=1] + %23 = load %struct.LexState** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LexState* %23, i32 0, i32 9 ; [#uses=1] + store %union.TString* %22, %union.TString** %24, align 4 + %25 = load %struct.LexState** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 6 ; [#uses=1] + %27 = load %struct.lua_State** %26, align 4 ; [#uses=1] + %28 = load %struct.LexState** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.LexState* %28, i32 0, i32 8 ; [#uses=1] + %30 = load %struct.Mbuffer** %29, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.Mbuffer* %30, i32 0, i32 0 ; [#uses=1] + %32 = load i8** %31, align 4 ; [#uses=1] + %33 = load %struct.LexState** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.LexState* %33, i32 0, i32 8 ; [#uses=1] + %35 = load %struct.Mbuffer** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Mbuffer* %35, i32 0, i32 2 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = mul i32 %37, 1 ; [#uses=1] + %39 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %27, i8* %32, i32 %38, i32 32) ; [#uses=1] + %40 = load %struct.LexState** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 8 ; [#uses=1] + %42 = load %struct.Mbuffer** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Mbuffer* %42, i32 0, i32 0 ; [#uses=1] + store i8* %39, i8** %43, align 4 + %44 = load %struct.LexState** %2, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.LexState* %44, i32 0, i32 8 ; [#uses=1] + %46 = load %struct.Mbuffer** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Mbuffer* %46, i32 0, i32 2 ; [#uses=1] + store i32 32, i32* %47, align 4 + %48 = load %struct.LexState** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.LexState* %48, i32 0, i32 7 ; [#uses=1] + %50 = load %struct.Zio** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Zio* %50, i32 0, i32 0 ; [#uses=2] + %52 = load i32* %51, align 4 ; [#uses=2] + %53 = add i32 %52, -1 ; [#uses=1] + store i32 %53, i32* %51, align 4 + %54 = icmp ugt i32 %52, 0 ; [#uses=1] + br i1 %54, label %55, label %64 + +; <label>:55 ; preds = %0 + %56 = load %struct.LexState** %2, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.LexState* %56, i32 0, i32 7 ; [#uses=1] + %58 = load %struct.Zio** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Zio* %58, i32 0, i32 1 ; [#uses=2] + %60 = load i8** %59, align 4 ; [#uses=2] + %61 = getelementptr inbounds i8* %60, i32 1 ; [#uses=1] + store i8* %61, i8** %59, align 4 + %62 = load i8* %60 ; [#uses=1] + %63 = zext i8 %62 to i32 ; [#uses=1] + br label %69 + +; <label>:64 ; preds = %0 + %65 = load %struct.LexState** %2, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.LexState* %65, i32 0, i32 7 ; [#uses=1] + %67 = load %struct.Zio** %66, align 4 ; [#uses=1] + %68 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %67) ; [#uses=1] + br label %69 + +; <label>:69 ; preds = %64, %55 + %70 = phi i32 [ %63, %55 ], [ %68, %64 ] ; [#uses=1] + %71 = load %struct.LexState** %2, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.LexState* %71, i32 0, i32 0 ; [#uses=1] + store i32 %70, i32* %72, align 4 + ret void +} + +; [#uses=25] +define hidden void @_Z9luaX_nextP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=10] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 1 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 2 ; [#uses=1] + store i32 %4, i32* %6, align 4 + %7 = load %struct.LexState** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LexState* %7, i32 0, i32 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Token* %8, i32 0, i32 0 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp ne i32 %10, 287 ; [#uses=1] + br i1 %11, label %12, label %22 + +; <label>:12 ; preds = %0 + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.LexState* %13, i32 0, i32 3 ; [#uses=1] + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.LexState* %15, i32 0, i32 4 ; [#uses=1] + %17 = bitcast %struct.Token* %14 to i8* ; [#uses=1] + %18 = bitcast %struct.Token* %16 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %17, i8* %18, i32 12, i32 4, i1 false) + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.LexState* %19, i32 0, i32 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Token* %20, i32 0, i32 0 ; [#uses=1] + store i32 287, i32* %21, align 4 + br label %31 + +; <label>:22 ; preds = %0 + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.LexState* %24, i32 0, i32 3 ; [#uses=1] + %26 = getelementptr inbounds %struct.Token* %25, i32 0, i32 1 ; [#uses=1] + %27 = call i32 @_Z4llexP8LexStateP7SemInfo(%struct.LexState* %23, %union.anon* %26) ; [#uses=1] + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.LexState* %28, i32 0, i32 3 ; [#uses=1] + %30 = getelementptr inbounds %struct.Token* %29, i32 0, i32 0 ; [#uses=1] + store i32 %27, i32* %30, align 4 + br label %31 + +; <label>:31 ; preds = %22, %12 + ret void +} + +; [#uses=2] +define internal i32 @_Z4llexP8LexStateP7SemInfo(%struct.LexState* %ls, %union.anon* %seminfo) { + %1 = alloca i32, align 4 ; [#uses=22] + %2 = alloca %struct.LexState*, align 4 ; [#uses=101] + %3 = alloca %union.anon*, align 4 ; [#uses=6] + %sep = alloca i32, align 4 ; [#uses=3] + %sep1 = alloca i32, align 4 ; [#uses=4] + %ts = alloca %union.TString*, align 4 ; [#uses=4] + %c = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store %union.anon* %seminfo, %union.anon** %3, align 4 + %4 = load %struct.LexState** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 8 ; [#uses=1] + %6 = load %struct.Mbuffer** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Mbuffer* %6, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %7, align 4 + br label %8 + +; <label>:8 ; preds = %466, %136, %84, %12, %0 + %9 = load %struct.LexState** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 0 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + switch i32 %11, label %438 [ + i32 10, label %12 + i32 13, label %12 + i32 45, label %14 + i32 91, label %137 + i32 61, label %154 + i32 60, label %211 + i32 62, label %268 + i32 126, label %325 + i32 34, label %382 + i32 39, label %382 + i32 46, label %388 + i32 -1, label %437 + ] + +; <label>:12 ; preds = %8, %8 + %13 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z13inclinenumberP8LexState(%struct.LexState* %13) + br label %8 + +; <label>:14 ; preds = %8 + %15 = load %struct.LexState** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.LexState* %15, i32 0, i32 7 ; [#uses=1] + %17 = load %struct.Zio** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Zio* %17, i32 0, i32 0 ; [#uses=2] + %19 = load i32* %18, align 4 ; [#uses=2] + %20 = add i32 %19, -1 ; [#uses=1] + store i32 %20, i32* %18, align 4 + %21 = icmp ugt i32 %19, 0 ; [#uses=1] + br i1 %21, label %22, label %31 + +; <label>:22 ; preds = %14 + %23 = load %struct.LexState** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LexState* %23, i32 0, i32 7 ; [#uses=1] + %25 = load %struct.Zio** %24, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Zio* %25, i32 0, i32 1 ; [#uses=2] + %27 = load i8** %26, align 4 ; [#uses=2] + %28 = getelementptr inbounds i8* %27, i32 1 ; [#uses=1] + store i8* %28, i8** %26, align 4 + %29 = load i8* %27 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + br label %36 + +; <label>:31 ; preds = %14 + %32 = load %struct.LexState** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.LexState* %32, i32 0, i32 7 ; [#uses=1] + %34 = load %struct.Zio** %33, align 4 ; [#uses=1] + %35 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %34) ; [#uses=1] + br label %36 + +; <label>:36 ; preds = %31, %22 + %37 = phi i32 [ %30, %22 ], [ %35, %31 ] ; [#uses=1] + %38 = load %struct.LexState** %2, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.LexState* %38, i32 0, i32 0 ; [#uses=1] + store i32 %37, i32* %39, align 4 + %40 = load %struct.LexState** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = icmp ne i32 %42, 45 ; [#uses=1] + br i1 %43, label %44, label %45 + +; <label>:44 ; preds = %36 + store i32 45, i32* %1 + br label %596 + +; <label>:45 ; preds = %36 + %46 = load %struct.LexState** %2, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.LexState* %46, i32 0, i32 7 ; [#uses=1] + %48 = load %struct.Zio** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Zio* %48, i32 0, i32 0 ; [#uses=2] + %50 = load i32* %49, align 4 ; [#uses=2] + %51 = add i32 %50, -1 ; [#uses=1] + store i32 %51, i32* %49, align 4 + %52 = icmp ugt i32 %50, 0 ; [#uses=1] + br i1 %52, label %53, label %62 + +; <label>:53 ; preds = %45 + %54 = load %struct.LexState** %2, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.LexState* %54, i32 0, i32 7 ; [#uses=1] + %56 = load %struct.Zio** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.Zio* %56, i32 0, i32 1 ; [#uses=2] + %58 = load i8** %57, align 4 ; [#uses=2] + %59 = getelementptr inbounds i8* %58, i32 1 ; [#uses=1] + store i8* %59, i8** %57, align 4 + %60 = load i8* %58 ; [#uses=1] + %61 = zext i8 %60 to i32 ; [#uses=1] + br label %67 + +; <label>:62 ; preds = %45 + %63 = load %struct.LexState** %2, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.LexState* %63, i32 0, i32 7 ; [#uses=1] + %65 = load %struct.Zio** %64, align 4 ; [#uses=1] + %66 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %65) ; [#uses=1] + br label %67 + +; <label>:67 ; preds = %62, %53 + %68 = phi i32 [ %61, %53 ], [ %66, %62 ] ; [#uses=1] + %69 = load %struct.LexState** %2, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.LexState* %69, i32 0, i32 0 ; [#uses=1] + store i32 %68, i32* %70, align 4 + %71 = load %struct.LexState** %2, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.LexState* %71, i32 0, i32 0 ; [#uses=1] + %73 = load i32* %72, align 4 ; [#uses=1] + %74 = icmp eq i32 %73, 91 ; [#uses=1] + br i1 %74, label %75, label %92 + +; <label>:75 ; preds = %67 + %76 = load %struct.LexState** %2, align 4 ; [#uses=1] + %77 = call i32 @_Z8skip_sepP8LexState(%struct.LexState* %76) ; [#uses=1] + store i32 %77, i32* %sep, align 4 + %78 = load %struct.LexState** %2, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.LexState* %78, i32 0, i32 8 ; [#uses=1] + %80 = load %struct.Mbuffer** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.Mbuffer* %80, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %81, align 4 + %82 = load i32* %sep, align 4 ; [#uses=1] + %83 = icmp sge i32 %82, 0 ; [#uses=1] + br i1 %83, label %84, label %91 + +; <label>:84 ; preds = %75 + %85 = load %struct.LexState** %2, align 4 ; [#uses=1] + %86 = load i32* %sep, align 4 ; [#uses=1] + call void @_Z16read_long_stringP8LexStateP7SemInfoi(%struct.LexState* %85, %union.anon* null, i32 %86) + %87 = load %struct.LexState** %2, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.LexState* %87, i32 0, i32 8 ; [#uses=1] + %89 = load %struct.Mbuffer** %88, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.Mbuffer* %89, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %90, align 4 + br label %8 + +; <label>:91 ; preds = %75 + br label %92 + +; <label>:92 ; preds = %91, %67 + br label %93 + +; <label>:93 ; preds = %132, %92 + %94 = load %struct.LexState** %2, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.LexState* %94, i32 0, i32 0 ; [#uses=1] + %96 = load i32* %95, align 4 ; [#uses=1] + %97 = icmp eq i32 %96, 10 ; [#uses=1] + br i1 %97, label %108, label %98 + +; <label>:98 ; preds = %93 + %99 = load %struct.LexState** %2, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.LexState* %99, i32 0, i32 0 ; [#uses=1] + %101 = load i32* %100, align 4 ; [#uses=1] + %102 = icmp eq i32 %101, 13 ; [#uses=1] + br i1 %102, label %108, label %103 + +; <label>:103 ; preds = %98 + %104 = load %struct.LexState** %2, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.LexState* %104, i32 0, i32 0 ; [#uses=1] + %106 = load i32* %105, align 4 ; [#uses=1] + %107 = icmp ne i32 %106, -1 ; [#uses=1] + br label %108 + +; <label>:108 ; preds = %103, %98, %93 + %109 = phi i1 [ false, %98 ], [ false, %93 ], [ %107, %103 ] ; [#uses=1] + br i1 %109, label %110, label %136 + +; <label>:110 ; preds = %108 + %111 = load %struct.LexState** %2, align 4 ; [#uses=1] + %112 = getelementptr inbounds %struct.LexState* %111, i32 0, i32 7 ; [#uses=1] + %113 = load %struct.Zio** %112, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.Zio* %113, i32 0, i32 0 ; [#uses=2] + %115 = load i32* %114, align 4 ; [#uses=2] + %116 = add i32 %115, -1 ; [#uses=1] + store i32 %116, i32* %114, align 4 + %117 = icmp ugt i32 %115, 0 ; [#uses=1] + br i1 %117, label %118, label %127 + +; <label>:118 ; preds = %110 + %119 = load %struct.LexState** %2, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.LexState* %119, i32 0, i32 7 ; [#uses=1] + %121 = load %struct.Zio** %120, align 4 ; [#uses=1] + %122 = getelementptr inbounds %struct.Zio* %121, i32 0, i32 1 ; [#uses=2] + %123 = load i8** %122, align 4 ; [#uses=2] + %124 = getelementptr inbounds i8* %123, i32 1 ; [#uses=1] + store i8* %124, i8** %122, align 4 + %125 = load i8* %123 ; [#uses=1] + %126 = zext i8 %125 to i32 ; [#uses=1] + br label %132 + +; <label>:127 ; preds = %110 + %128 = load %struct.LexState** %2, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.LexState* %128, i32 0, i32 7 ; [#uses=1] + %130 = load %struct.Zio** %129, align 4 ; [#uses=1] + %131 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %130) ; [#uses=1] + br label %132 + +; <label>:132 ; preds = %127, %118 + %133 = phi i32 [ %126, %118 ], [ %131, %127 ] ; [#uses=1] + %134 = load %struct.LexState** %2, align 4 ; [#uses=1] + %135 = getelementptr inbounds %struct.LexState* %134, i32 0, i32 0 ; [#uses=1] + store i32 %133, i32* %135, align 4 + br label %93 + +; <label>:136 ; preds = %108 + br label %8 + +; <label>:137 ; preds = %8 + %138 = load %struct.LexState** %2, align 4 ; [#uses=1] + %139 = call i32 @_Z8skip_sepP8LexState(%struct.LexState* %138) ; [#uses=1] + store i32 %139, i32* %sep1, align 4 + %140 = load i32* %sep1, align 4 ; [#uses=1] + %141 = icmp sge i32 %140, 0 ; [#uses=1] + br i1 %141, label %142, label %146 + +; <label>:142 ; preds = %137 + %143 = load %struct.LexState** %2, align 4 ; [#uses=1] + %144 = load %union.anon** %3, align 4 ; [#uses=1] + %145 = load i32* %sep1, align 4 ; [#uses=1] + call void @_Z16read_long_stringP8LexStateP7SemInfoi(%struct.LexState* %143, %union.anon* %144, i32 %145) + store i32 286, i32* %1 + br label %596 + +; <label>:146 ; preds = %137 + %147 = load i32* %sep1, align 4 ; [#uses=1] + %148 = icmp eq i32 %147, -1 ; [#uses=1] + br i1 %148, label %149, label %150 + +; <label>:149 ; preds = %146 + store i32 91, i32* %1 + br label %596 + +; <label>:150 ; preds = %146 + %151 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %151, i8* getelementptr inbounds ([30 x i8]* @.str35, i32 0, i32 0), i32 286) + br label %152 + +; <label>:152 ; preds = %150 + br label %153 + +; <label>:153 ; preds = %152 + br label %154 + +; <label>:154 ; preds = %153, %8 + %155 = load %struct.LexState** %2, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.LexState* %155, i32 0, i32 7 ; [#uses=1] + %157 = load %struct.Zio** %156, align 4 ; [#uses=1] + %158 = getelementptr inbounds %struct.Zio* %157, i32 0, i32 0 ; [#uses=2] + %159 = load i32* %158, align 4 ; [#uses=2] + %160 = add i32 %159, -1 ; [#uses=1] + store i32 %160, i32* %158, align 4 + %161 = icmp ugt i32 %159, 0 ; [#uses=1] + br i1 %161, label %162, label %171 + +; <label>:162 ; preds = %154 + %163 = load %struct.LexState** %2, align 4 ; [#uses=1] + %164 = getelementptr inbounds %struct.LexState* %163, i32 0, i32 7 ; [#uses=1] + %165 = load %struct.Zio** %164, align 4 ; [#uses=1] + %166 = getelementptr inbounds %struct.Zio* %165, i32 0, i32 1 ; [#uses=2] + %167 = load i8** %166, align 4 ; [#uses=2] + %168 = getelementptr inbounds i8* %167, i32 1 ; [#uses=1] + store i8* %168, i8** %166, align 4 + %169 = load i8* %167 ; [#uses=1] + %170 = zext i8 %169 to i32 ; [#uses=1] + br label %176 + +; <label>:171 ; preds = %154 + %172 = load %struct.LexState** %2, align 4 ; [#uses=1] + %173 = getelementptr inbounds %struct.LexState* %172, i32 0, i32 7 ; [#uses=1] + %174 = load %struct.Zio** %173, align 4 ; [#uses=1] + %175 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %174) ; [#uses=1] + br label %176 + +; <label>:176 ; preds = %171, %162 + %177 = phi i32 [ %170, %162 ], [ %175, %171 ] ; [#uses=1] + %178 = load %struct.LexState** %2, align 4 ; [#uses=1] + %179 = getelementptr inbounds %struct.LexState* %178, i32 0, i32 0 ; [#uses=1] + store i32 %177, i32* %179, align 4 + %180 = load %struct.LexState** %2, align 4 ; [#uses=1] + %181 = getelementptr inbounds %struct.LexState* %180, i32 0, i32 0 ; [#uses=1] + %182 = load i32* %181, align 4 ; [#uses=1] + %183 = icmp ne i32 %182, 61 ; [#uses=1] + br i1 %183, label %184, label %185 + +; <label>:184 ; preds = %176 + store i32 61, i32* %1 + br label %596 + +; <label>:185 ; preds = %176 + %186 = load %struct.LexState** %2, align 4 ; [#uses=1] + %187 = getelementptr inbounds %struct.LexState* %186, i32 0, i32 7 ; [#uses=1] + %188 = load %struct.Zio** %187, align 4 ; [#uses=1] + %189 = getelementptr inbounds %struct.Zio* %188, i32 0, i32 0 ; [#uses=2] + %190 = load i32* %189, align 4 ; [#uses=2] + %191 = add i32 %190, -1 ; [#uses=1] + store i32 %191, i32* %189, align 4 + %192 = icmp ugt i32 %190, 0 ; [#uses=1] + br i1 %192, label %193, label %202 + +; <label>:193 ; preds = %185 + %194 = load %struct.LexState** %2, align 4 ; [#uses=1] + %195 = getelementptr inbounds %struct.LexState* %194, i32 0, i32 7 ; [#uses=1] + %196 = load %struct.Zio** %195, align 4 ; [#uses=1] + %197 = getelementptr inbounds %struct.Zio* %196, i32 0, i32 1 ; [#uses=2] + %198 = load i8** %197, align 4 ; [#uses=2] + %199 = getelementptr inbounds i8* %198, i32 1 ; [#uses=1] + store i8* %199, i8** %197, align 4 + %200 = load i8* %198 ; [#uses=1] + %201 = zext i8 %200 to i32 ; [#uses=1] + br label %207 + +; <label>:202 ; preds = %185 + %203 = load %struct.LexState** %2, align 4 ; [#uses=1] + %204 = getelementptr inbounds %struct.LexState* %203, i32 0, i32 7 ; [#uses=1] + %205 = load %struct.Zio** %204, align 4 ; [#uses=1] + %206 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %205) ; [#uses=1] + br label %207 + +; <label>:207 ; preds = %202, %193 + %208 = phi i32 [ %201, %193 ], [ %206, %202 ] ; [#uses=1] + %209 = load %struct.LexState** %2, align 4 ; [#uses=1] + %210 = getelementptr inbounds %struct.LexState* %209, i32 0, i32 0 ; [#uses=1] + store i32 %208, i32* %210, align 4 + store i32 280, i32* %1 + br label %596 + +; <label>:211 ; preds = %8 + %212 = load %struct.LexState** %2, align 4 ; [#uses=1] + %213 = getelementptr inbounds %struct.LexState* %212, i32 0, i32 7 ; [#uses=1] + %214 = load %struct.Zio** %213, align 4 ; [#uses=1] + %215 = getelementptr inbounds %struct.Zio* %214, i32 0, i32 0 ; [#uses=2] + %216 = load i32* %215, align 4 ; [#uses=2] + %217 = add i32 %216, -1 ; [#uses=1] + store i32 %217, i32* %215, align 4 + %218 = icmp ugt i32 %216, 0 ; [#uses=1] + br i1 %218, label %219, label %228 + +; <label>:219 ; preds = %211 + %220 = load %struct.LexState** %2, align 4 ; [#uses=1] + %221 = getelementptr inbounds %struct.LexState* %220, i32 0, i32 7 ; [#uses=1] + %222 = load %struct.Zio** %221, align 4 ; [#uses=1] + %223 = getelementptr inbounds %struct.Zio* %222, i32 0, i32 1 ; [#uses=2] + %224 = load i8** %223, align 4 ; [#uses=2] + %225 = getelementptr inbounds i8* %224, i32 1 ; [#uses=1] + store i8* %225, i8** %223, align 4 + %226 = load i8* %224 ; [#uses=1] + %227 = zext i8 %226 to i32 ; [#uses=1] + br label %233 + +; <label>:228 ; preds = %211 + %229 = load %struct.LexState** %2, align 4 ; [#uses=1] + %230 = getelementptr inbounds %struct.LexState* %229, i32 0, i32 7 ; [#uses=1] + %231 = load %struct.Zio** %230, align 4 ; [#uses=1] + %232 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %231) ; [#uses=1] + br label %233 + +; <label>:233 ; preds = %228, %219 + %234 = phi i32 [ %227, %219 ], [ %232, %228 ] ; [#uses=1] + %235 = load %struct.LexState** %2, align 4 ; [#uses=1] + %236 = getelementptr inbounds %struct.LexState* %235, i32 0, i32 0 ; [#uses=1] + store i32 %234, i32* %236, align 4 + %237 = load %struct.LexState** %2, align 4 ; [#uses=1] + %238 = getelementptr inbounds %struct.LexState* %237, i32 0, i32 0 ; [#uses=1] + %239 = load i32* %238, align 4 ; [#uses=1] + %240 = icmp ne i32 %239, 61 ; [#uses=1] + br i1 %240, label %241, label %242 + +; <label>:241 ; preds = %233 + store i32 60, i32* %1 + br label %596 + +; <label>:242 ; preds = %233 + %243 = load %struct.LexState** %2, align 4 ; [#uses=1] + %244 = getelementptr inbounds %struct.LexState* %243, i32 0, i32 7 ; [#uses=1] + %245 = load %struct.Zio** %244, align 4 ; [#uses=1] + %246 = getelementptr inbounds %struct.Zio* %245, i32 0, i32 0 ; [#uses=2] + %247 = load i32* %246, align 4 ; [#uses=2] + %248 = add i32 %247, -1 ; [#uses=1] + store i32 %248, i32* %246, align 4 + %249 = icmp ugt i32 %247, 0 ; [#uses=1] + br i1 %249, label %250, label %259 + +; <label>:250 ; preds = %242 + %251 = load %struct.LexState** %2, align 4 ; [#uses=1] + %252 = getelementptr inbounds %struct.LexState* %251, i32 0, i32 7 ; [#uses=1] + %253 = load %struct.Zio** %252, align 4 ; [#uses=1] + %254 = getelementptr inbounds %struct.Zio* %253, i32 0, i32 1 ; [#uses=2] + %255 = load i8** %254, align 4 ; [#uses=2] + %256 = getelementptr inbounds i8* %255, i32 1 ; [#uses=1] + store i8* %256, i8** %254, align 4 + %257 = load i8* %255 ; [#uses=1] + %258 = zext i8 %257 to i32 ; [#uses=1] + br label %264 + +; <label>:259 ; preds = %242 + %260 = load %struct.LexState** %2, align 4 ; [#uses=1] + %261 = getelementptr inbounds %struct.LexState* %260, i32 0, i32 7 ; [#uses=1] + %262 = load %struct.Zio** %261, align 4 ; [#uses=1] + %263 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %262) ; [#uses=1] + br label %264 + +; <label>:264 ; preds = %259, %250 + %265 = phi i32 [ %258, %250 ], [ %263, %259 ] ; [#uses=1] + %266 = load %struct.LexState** %2, align 4 ; [#uses=1] + %267 = getelementptr inbounds %struct.LexState* %266, i32 0, i32 0 ; [#uses=1] + store i32 %265, i32* %267, align 4 + store i32 282, i32* %1 + br label %596 + +; <label>:268 ; preds = %8 + %269 = load %struct.LexState** %2, align 4 ; [#uses=1] + %270 = getelementptr inbounds %struct.LexState* %269, i32 0, i32 7 ; [#uses=1] + %271 = load %struct.Zio** %270, align 4 ; [#uses=1] + %272 = getelementptr inbounds %struct.Zio* %271, i32 0, i32 0 ; [#uses=2] + %273 = load i32* %272, align 4 ; [#uses=2] + %274 = add i32 %273, -1 ; [#uses=1] + store i32 %274, i32* %272, align 4 + %275 = icmp ugt i32 %273, 0 ; [#uses=1] + br i1 %275, label %276, label %285 + +; <label>:276 ; preds = %268 + %277 = load %struct.LexState** %2, align 4 ; [#uses=1] + %278 = getelementptr inbounds %struct.LexState* %277, i32 0, i32 7 ; [#uses=1] + %279 = load %struct.Zio** %278, align 4 ; [#uses=1] + %280 = getelementptr inbounds %struct.Zio* %279, i32 0, i32 1 ; [#uses=2] + %281 = load i8** %280, align 4 ; [#uses=2] + %282 = getelementptr inbounds i8* %281, i32 1 ; [#uses=1] + store i8* %282, i8** %280, align 4 + %283 = load i8* %281 ; [#uses=1] + %284 = zext i8 %283 to i32 ; [#uses=1] + br label %290 + +; <label>:285 ; preds = %268 + %286 = load %struct.LexState** %2, align 4 ; [#uses=1] + %287 = getelementptr inbounds %struct.LexState* %286, i32 0, i32 7 ; [#uses=1] + %288 = load %struct.Zio** %287, align 4 ; [#uses=1] + %289 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %288) ; [#uses=1] + br label %290 + +; <label>:290 ; preds = %285, %276 + %291 = phi i32 [ %284, %276 ], [ %289, %285 ] ; [#uses=1] + %292 = load %struct.LexState** %2, align 4 ; [#uses=1] + %293 = getelementptr inbounds %struct.LexState* %292, i32 0, i32 0 ; [#uses=1] + store i32 %291, i32* %293, align 4 + %294 = load %struct.LexState** %2, align 4 ; [#uses=1] + %295 = getelementptr inbounds %struct.LexState* %294, i32 0, i32 0 ; [#uses=1] + %296 = load i32* %295, align 4 ; [#uses=1] + %297 = icmp ne i32 %296, 61 ; [#uses=1] + br i1 %297, label %298, label %299 + +; <label>:298 ; preds = %290 + store i32 62, i32* %1 + br label %596 + +; <label>:299 ; preds = %290 + %300 = load %struct.LexState** %2, align 4 ; [#uses=1] + %301 = getelementptr inbounds %struct.LexState* %300, i32 0, i32 7 ; [#uses=1] + %302 = load %struct.Zio** %301, align 4 ; [#uses=1] + %303 = getelementptr inbounds %struct.Zio* %302, i32 0, i32 0 ; [#uses=2] + %304 = load i32* %303, align 4 ; [#uses=2] + %305 = add i32 %304, -1 ; [#uses=1] + store i32 %305, i32* %303, align 4 + %306 = icmp ugt i32 %304, 0 ; [#uses=1] + br i1 %306, label %307, label %316 + +; <label>:307 ; preds = %299 + %308 = load %struct.LexState** %2, align 4 ; [#uses=1] + %309 = getelementptr inbounds %struct.LexState* %308, i32 0, i32 7 ; [#uses=1] + %310 = load %struct.Zio** %309, align 4 ; [#uses=1] + %311 = getelementptr inbounds %struct.Zio* %310, i32 0, i32 1 ; [#uses=2] + %312 = load i8** %311, align 4 ; [#uses=2] + %313 = getelementptr inbounds i8* %312, i32 1 ; [#uses=1] + store i8* %313, i8** %311, align 4 + %314 = load i8* %312 ; [#uses=1] + %315 = zext i8 %314 to i32 ; [#uses=1] + br label %321 + +; <label>:316 ; preds = %299 + %317 = load %struct.LexState** %2, align 4 ; [#uses=1] + %318 = getelementptr inbounds %struct.LexState* %317, i32 0, i32 7 ; [#uses=1] + %319 = load %struct.Zio** %318, align 4 ; [#uses=1] + %320 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %319) ; [#uses=1] + br label %321 + +; <label>:321 ; preds = %316, %307 + %322 = phi i32 [ %315, %307 ], [ %320, %316 ] ; [#uses=1] + %323 = load %struct.LexState** %2, align 4 ; [#uses=1] + %324 = getelementptr inbounds %struct.LexState* %323, i32 0, i32 0 ; [#uses=1] + store i32 %322, i32* %324, align 4 + store i32 281, i32* %1 + br label %596 + +; <label>:325 ; preds = %8 + %326 = load %struct.LexState** %2, align 4 ; [#uses=1] + %327 = getelementptr inbounds %struct.LexState* %326, i32 0, i32 7 ; [#uses=1] + %328 = load %struct.Zio** %327, align 4 ; [#uses=1] + %329 = getelementptr inbounds %struct.Zio* %328, i32 0, i32 0 ; [#uses=2] + %330 = load i32* %329, align 4 ; [#uses=2] + %331 = add i32 %330, -1 ; [#uses=1] + store i32 %331, i32* %329, align 4 + %332 = icmp ugt i32 %330, 0 ; [#uses=1] + br i1 %332, label %333, label %342 + +; <label>:333 ; preds = %325 + %334 = load %struct.LexState** %2, align 4 ; [#uses=1] + %335 = getelementptr inbounds %struct.LexState* %334, i32 0, i32 7 ; [#uses=1] + %336 = load %struct.Zio** %335, align 4 ; [#uses=1] + %337 = getelementptr inbounds %struct.Zio* %336, i32 0, i32 1 ; [#uses=2] + %338 = load i8** %337, align 4 ; [#uses=2] + %339 = getelementptr inbounds i8* %338, i32 1 ; [#uses=1] + store i8* %339, i8** %337, align 4 + %340 = load i8* %338 ; [#uses=1] + %341 = zext i8 %340 to i32 ; [#uses=1] + br label %347 + +; <label>:342 ; preds = %325 + %343 = load %struct.LexState** %2, align 4 ; [#uses=1] + %344 = getelementptr inbounds %struct.LexState* %343, i32 0, i32 7 ; [#uses=1] + %345 = load %struct.Zio** %344, align 4 ; [#uses=1] + %346 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %345) ; [#uses=1] + br label %347 + +; <label>:347 ; preds = %342, %333 + %348 = phi i32 [ %341, %333 ], [ %346, %342 ] ; [#uses=1] + %349 = load %struct.LexState** %2, align 4 ; [#uses=1] + %350 = getelementptr inbounds %struct.LexState* %349, i32 0, i32 0 ; [#uses=1] + store i32 %348, i32* %350, align 4 + %351 = load %struct.LexState** %2, align 4 ; [#uses=1] + %352 = getelementptr inbounds %struct.LexState* %351, i32 0, i32 0 ; [#uses=1] + %353 = load i32* %352, align 4 ; [#uses=1] + %354 = icmp ne i32 %353, 61 ; [#uses=1] + br i1 %354, label %355, label %356 + +; <label>:355 ; preds = %347 + store i32 126, i32* %1 + br label %596 + +; <label>:356 ; preds = %347 + %357 = load %struct.LexState** %2, align 4 ; [#uses=1] + %358 = getelementptr inbounds %struct.LexState* %357, i32 0, i32 7 ; [#uses=1] + %359 = load %struct.Zio** %358, align 4 ; [#uses=1] + %360 = getelementptr inbounds %struct.Zio* %359, i32 0, i32 0 ; [#uses=2] + %361 = load i32* %360, align 4 ; [#uses=2] + %362 = add i32 %361, -1 ; [#uses=1] + store i32 %362, i32* %360, align 4 + %363 = icmp ugt i32 %361, 0 ; [#uses=1] + br i1 %363, label %364, label %373 + +; <label>:364 ; preds = %356 + %365 = load %struct.LexState** %2, align 4 ; [#uses=1] + %366 = getelementptr inbounds %struct.LexState* %365, i32 0, i32 7 ; [#uses=1] + %367 = load %struct.Zio** %366, align 4 ; [#uses=1] + %368 = getelementptr inbounds %struct.Zio* %367, i32 0, i32 1 ; [#uses=2] + %369 = load i8** %368, align 4 ; [#uses=2] + %370 = getelementptr inbounds i8* %369, i32 1 ; [#uses=1] + store i8* %370, i8** %368, align 4 + %371 = load i8* %369 ; [#uses=1] + %372 = zext i8 %371 to i32 ; [#uses=1] + br label %378 + +; <label>:373 ; preds = %356 + %374 = load %struct.LexState** %2, align 4 ; [#uses=1] + %375 = getelementptr inbounds %struct.LexState* %374, i32 0, i32 7 ; [#uses=1] + %376 = load %struct.Zio** %375, align 4 ; [#uses=1] + %377 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %376) ; [#uses=1] + br label %378 + +; <label>:378 ; preds = %373, %364 + %379 = phi i32 [ %372, %364 ], [ %377, %373 ] ; [#uses=1] + %380 = load %struct.LexState** %2, align 4 ; [#uses=1] + %381 = getelementptr inbounds %struct.LexState* %380, i32 0, i32 0 ; [#uses=1] + store i32 %379, i32* %381, align 4 + store i32 283, i32* %1 + br label %596 + +; <label>:382 ; preds = %8, %8 + %383 = load %struct.LexState** %2, align 4 ; [#uses=1] + %384 = load %struct.LexState** %2, align 4 ; [#uses=1] + %385 = getelementptr inbounds %struct.LexState* %384, i32 0, i32 0 ; [#uses=1] + %386 = load i32* %385, align 4 ; [#uses=1] + %387 = load %union.anon** %3, align 4 ; [#uses=1] + call void @_Z11read_stringP8LexStateiP7SemInfo(%struct.LexState* %383, i32 %386, %union.anon* %387) + store i32 286, i32* %1 + br label %596 + +; <label>:388 ; preds = %8 + %389 = load %struct.LexState** %2, align 4 ; [#uses=1] + %390 = load %struct.LexState** %2, align 4 ; [#uses=1] + %391 = getelementptr inbounds %struct.LexState* %390, i32 0, i32 0 ; [#uses=1] + %392 = load i32* %391, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %389, i32 %392) + %393 = load %struct.LexState** %2, align 4 ; [#uses=1] + %394 = getelementptr inbounds %struct.LexState* %393, i32 0, i32 7 ; [#uses=1] + %395 = load %struct.Zio** %394, align 4 ; [#uses=1] + %396 = getelementptr inbounds %struct.Zio* %395, i32 0, i32 0 ; [#uses=2] + %397 = load i32* %396, align 4 ; [#uses=2] + %398 = add i32 %397, -1 ; [#uses=1] + store i32 %398, i32* %396, align 4 + %399 = icmp ugt i32 %397, 0 ; [#uses=1] + br i1 %399, label %400, label %409 + +; <label>:400 ; preds = %388 + %401 = load %struct.LexState** %2, align 4 ; [#uses=1] + %402 = getelementptr inbounds %struct.LexState* %401, i32 0, i32 7 ; [#uses=1] + %403 = load %struct.Zio** %402, align 4 ; [#uses=1] + %404 = getelementptr inbounds %struct.Zio* %403, i32 0, i32 1 ; [#uses=2] + %405 = load i8** %404, align 4 ; [#uses=2] + %406 = getelementptr inbounds i8* %405, i32 1 ; [#uses=1] + store i8* %406, i8** %404, align 4 + %407 = load i8* %405 ; [#uses=1] + %408 = zext i8 %407 to i32 ; [#uses=1] + br label %414 + +; <label>:409 ; preds = %388 + %410 = load %struct.LexState** %2, align 4 ; [#uses=1] + %411 = getelementptr inbounds %struct.LexState* %410, i32 0, i32 7 ; [#uses=1] + %412 = load %struct.Zio** %411, align 4 ; [#uses=1] + %413 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %412) ; [#uses=1] + br label %414 + +; <label>:414 ; preds = %409, %400 + %415 = phi i32 [ %408, %400 ], [ %413, %409 ] ; [#uses=1] + %416 = load %struct.LexState** %2, align 4 ; [#uses=1] + %417 = getelementptr inbounds %struct.LexState* %416, i32 0, i32 0 ; [#uses=1] + store i32 %415, i32* %417, align 4 + %418 = load %struct.LexState** %2, align 4 ; [#uses=1] + %419 = call i32 @_Z10check_nextP8LexStatePKc(%struct.LexState* %418, i8* getelementptr inbounds ([2 x i8]* @.str36, i32 0, i32 0)) ; [#uses=1] + %420 = icmp ne i32 %419, 0 ; [#uses=1] + br i1 %420, label %421, label %427 + +; <label>:421 ; preds = %414 + %422 = load %struct.LexState** %2, align 4 ; [#uses=1] + %423 = call i32 @_Z10check_nextP8LexStatePKc(%struct.LexState* %422, i8* getelementptr inbounds ([2 x i8]* @.str36, i32 0, i32 0)) ; [#uses=1] + %424 = icmp ne i32 %423, 0 ; [#uses=1] + br i1 %424, label %425, label %426 + +; <label>:425 ; preds = %421 + store i32 279, i32* %1 + br label %596 + +; <label>:426 ; preds = %421 + store i32 278, i32* %1 + br label %596 + +; <label>:427 ; preds = %414 + %428 = load %struct.LexState** %2, align 4 ; [#uses=1] + %429 = getelementptr inbounds %struct.LexState* %428, i32 0, i32 0 ; [#uses=1] + %430 = load i32* %429, align 4 ; [#uses=1] + %431 = call i32 @isdigit(i32 %430) nounwind ; [#uses=1] + %432 = icmp ne i32 %431, 0 ; [#uses=1] + br i1 %432, label %434, label %433 + +; <label>:433 ; preds = %427 + store i32 46, i32* %1 + br label %596 + +; <label>:434 ; preds = %427 + %435 = load %struct.LexState** %2, align 4 ; [#uses=1] + %436 = load %union.anon** %3, align 4 ; [#uses=1] + call void @_Z12read_numeralP8LexStateP7SemInfo(%struct.LexState* %435, %union.anon* %436) + store i32 284, i32* %1 + br label %596 + +; <label>:437 ; preds = %8 + store i32 287, i32* %1 + br label %596 + +; <label>:438 ; preds = %8 + %439 = load %struct.LexState** %2, align 4 ; [#uses=1] + %440 = getelementptr inbounds %struct.LexState* %439, i32 0, i32 0 ; [#uses=1] + %441 = load i32* %440, align 4 ; [#uses=1] + %442 = call i32 @isspace(i32 %441) nounwind ; [#uses=1] + %443 = icmp ne i32 %442, 0 ; [#uses=1] + br i1 %443, label %444, label %470 + +; <label>:444 ; preds = %438 + %445 = load %struct.LexState** %2, align 4 ; [#uses=1] + %446 = getelementptr inbounds %struct.LexState* %445, i32 0, i32 7 ; [#uses=1] + %447 = load %struct.Zio** %446, align 4 ; [#uses=1] + %448 = getelementptr inbounds %struct.Zio* %447, i32 0, i32 0 ; [#uses=2] + %449 = load i32* %448, align 4 ; [#uses=2] + %450 = add i32 %449, -1 ; [#uses=1] + store i32 %450, i32* %448, align 4 + %451 = icmp ugt i32 %449, 0 ; [#uses=1] + br i1 %451, label %452, label %461 + +; <label>:452 ; preds = %444 + %453 = load %struct.LexState** %2, align 4 ; [#uses=1] + %454 = getelementptr inbounds %struct.LexState* %453, i32 0, i32 7 ; [#uses=1] + %455 = load %struct.Zio** %454, align 4 ; [#uses=1] + %456 = getelementptr inbounds %struct.Zio* %455, i32 0, i32 1 ; [#uses=2] + %457 = load i8** %456, align 4 ; [#uses=2] + %458 = getelementptr inbounds i8* %457, i32 1 ; [#uses=1] + store i8* %458, i8** %456, align 4 + %459 = load i8* %457 ; [#uses=1] + %460 = zext i8 %459 to i32 ; [#uses=1] + br label %466 + +; <label>:461 ; preds = %444 + %462 = load %struct.LexState** %2, align 4 ; [#uses=1] + %463 = getelementptr inbounds %struct.LexState* %462, i32 0, i32 7 ; [#uses=1] + %464 = load %struct.Zio** %463, align 4 ; [#uses=1] + %465 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %464) ; [#uses=1] + br label %466 + +; <label>:466 ; preds = %461, %452 + %467 = phi i32 [ %460, %452 ], [ %465, %461 ] ; [#uses=1] + %468 = load %struct.LexState** %2, align 4 ; [#uses=1] + %469 = getelementptr inbounds %struct.LexState* %468, i32 0, i32 0 ; [#uses=1] + store i32 %467, i32* %469, align 4 + br label %8 + +; <label>:470 ; preds = %438 + %471 = load %struct.LexState** %2, align 4 ; [#uses=1] + %472 = getelementptr inbounds %struct.LexState* %471, i32 0, i32 0 ; [#uses=1] + %473 = load i32* %472, align 4 ; [#uses=1] + %474 = call i32 @isdigit(i32 %473) nounwind ; [#uses=1] + %475 = icmp ne i32 %474, 0 ; [#uses=1] + br i1 %475, label %476, label %479 + +; <label>:476 ; preds = %470 + %477 = load %struct.LexState** %2, align 4 ; [#uses=1] + %478 = load %union.anon** %3, align 4 ; [#uses=1] + call void @_Z12read_numeralP8LexStateP7SemInfo(%struct.LexState* %477, %union.anon* %478) + store i32 284, i32* %1 + br label %596 + +; <label>:479 ; preds = %470 + %480 = load %struct.LexState** %2, align 4 ; [#uses=1] + %481 = getelementptr inbounds %struct.LexState* %480, i32 0, i32 0 ; [#uses=1] + %482 = load i32* %481, align 4 ; [#uses=1] + %483 = call i32 @isalpha(i32 %482) nounwind ; [#uses=1] + %484 = icmp ne i32 %483, 0 ; [#uses=1] + br i1 %484, label %490, label %485 + +; <label>:485 ; preds = %479 + %486 = load %struct.LexState** %2, align 4 ; [#uses=1] + %487 = getelementptr inbounds %struct.LexState* %486, i32 0, i32 0 ; [#uses=1] + %488 = load i32* %487, align 4 ; [#uses=1] + %489 = icmp eq i32 %488, 95 ; [#uses=1] + br i1 %489, label %490, label %566 + +; <label>:490 ; preds = %485, %479 + br label %491 + +; <label>:491 ; preds = %532, %490 + %492 = load %struct.LexState** %2, align 4 ; [#uses=1] + %493 = load %struct.LexState** %2, align 4 ; [#uses=1] + %494 = getelementptr inbounds %struct.LexState* %493, i32 0, i32 0 ; [#uses=1] + %495 = load i32* %494, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %492, i32 %495) + %496 = load %struct.LexState** %2, align 4 ; [#uses=1] + %497 = getelementptr inbounds %struct.LexState* %496, i32 0, i32 7 ; [#uses=1] + %498 = load %struct.Zio** %497, align 4 ; [#uses=1] + %499 = getelementptr inbounds %struct.Zio* %498, i32 0, i32 0 ; [#uses=2] + %500 = load i32* %499, align 4 ; [#uses=2] + %501 = add i32 %500, -1 ; [#uses=1] + store i32 %501, i32* %499, align 4 + %502 = icmp ugt i32 %500, 0 ; [#uses=1] + br i1 %502, label %503, label %512 + +; <label>:503 ; preds = %491 + %504 = load %struct.LexState** %2, align 4 ; [#uses=1] + %505 = getelementptr inbounds %struct.LexState* %504, i32 0, i32 7 ; [#uses=1] + %506 = load %struct.Zio** %505, align 4 ; [#uses=1] + %507 = getelementptr inbounds %struct.Zio* %506, i32 0, i32 1 ; [#uses=2] + %508 = load i8** %507, align 4 ; [#uses=2] + %509 = getelementptr inbounds i8* %508, i32 1 ; [#uses=1] + store i8* %509, i8** %507, align 4 + %510 = load i8* %508 ; [#uses=1] + %511 = zext i8 %510 to i32 ; [#uses=1] + br label %517 + +; <label>:512 ; preds = %491 + %513 = load %struct.LexState** %2, align 4 ; [#uses=1] + %514 = getelementptr inbounds %struct.LexState* %513, i32 0, i32 7 ; [#uses=1] + %515 = load %struct.Zio** %514, align 4 ; [#uses=1] + %516 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %515) ; [#uses=1] + br label %517 + +; <label>:517 ; preds = %512, %503 + %518 = phi i32 [ %511, %503 ], [ %516, %512 ] ; [#uses=1] + %519 = load %struct.LexState** %2, align 4 ; [#uses=1] + %520 = getelementptr inbounds %struct.LexState* %519, i32 0, i32 0 ; [#uses=1] + store i32 %518, i32* %520, align 4 + br label %521 + +; <label>:521 ; preds = %517 + %522 = load %struct.LexState** %2, align 4 ; [#uses=1] + %523 = getelementptr inbounds %struct.LexState* %522, i32 0, i32 0 ; [#uses=1] + %524 = load i32* %523, align 4 ; [#uses=1] + %525 = call i32 @isalnum(i32 %524) nounwind ; [#uses=1] + %526 = icmp ne i32 %525, 0 ; [#uses=1] + br i1 %526, label %532, label %527 + +; <label>:527 ; preds = %521 + %528 = load %struct.LexState** %2, align 4 ; [#uses=1] + %529 = getelementptr inbounds %struct.LexState* %528, i32 0, i32 0 ; [#uses=1] + %530 = load i32* %529, align 4 ; [#uses=1] + %531 = icmp eq i32 %530, 95 ; [#uses=1] + br label %532 + +; <label>:532 ; preds = %527, %521 + %533 = phi i1 [ true, %521 ], [ %531, %527 ] ; [#uses=1] + br i1 %533, label %491, label %534 + +; <label>:534 ; preds = %532 + %535 = load %struct.LexState** %2, align 4 ; [#uses=1] + %536 = load %struct.LexState** %2, align 4 ; [#uses=1] + %537 = getelementptr inbounds %struct.LexState* %536, i32 0, i32 8 ; [#uses=1] + %538 = load %struct.Mbuffer** %537, align 4 ; [#uses=1] + %539 = getelementptr inbounds %struct.Mbuffer* %538, i32 0, i32 0 ; [#uses=1] + %540 = load i8** %539, align 4 ; [#uses=1] + %541 = load %struct.LexState** %2, align 4 ; [#uses=1] + %542 = getelementptr inbounds %struct.LexState* %541, i32 0, i32 8 ; [#uses=1] + %543 = load %struct.Mbuffer** %542, align 4 ; [#uses=1] + %544 = getelementptr inbounds %struct.Mbuffer* %543, i32 0, i32 1 ; [#uses=1] + %545 = load i32* %544, align 4 ; [#uses=1] + %546 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %535, i8* %540, i32 %545) ; [#uses=1] + store %union.TString* %546, %union.TString** %ts, align 4 + %547 = load %union.TString** %ts, align 4 ; [#uses=1] + %548 = getelementptr inbounds %union.TString* %547, i32 0, i32 0 ; [#uses=1] + %549 = getelementptr inbounds %struct.anon* %548, i32 0, i32 3 ; [#uses=1] + %550 = load i8* %549, align 1 ; [#uses=1] + %551 = zext i8 %550 to i32 ; [#uses=1] + %552 = icmp sgt i32 %551, 0 ; [#uses=1] + br i1 %552, label %553, label %561 + +; <label>:553 ; preds = %534 + %554 = load %union.TString** %ts, align 4 ; [#uses=1] + %555 = getelementptr inbounds %union.TString* %554, i32 0, i32 0 ; [#uses=1] + %556 = getelementptr inbounds %struct.anon* %555, i32 0, i32 3 ; [#uses=1] + %557 = load i8* %556, align 1 ; [#uses=1] + %558 = zext i8 %557 to i32 ; [#uses=1] + %559 = sub nsw i32 %558, 1 ; [#uses=1] + %560 = add nsw i32 %559, 257 ; [#uses=1] + store i32 %560, i32* %1 + br label %596 + +; <label>:561 ; preds = %534 + %562 = load %union.TString** %ts, align 4 ; [#uses=1] + %563 = load %union.anon** %3, align 4 ; [#uses=1] + %564 = getelementptr inbounds %union.anon* %563, i32 0, i32 0 ; [#uses=1] + %565 = bitcast double* %564 to %union.TString** ; [#uses=1] + store %union.TString* %562, %union.TString** %565, align 4 + store i32 285, i32* %1 + br label %596 + +; <label>:566 ; preds = %485 + %567 = load %struct.LexState** %2, align 4 ; [#uses=1] + %568 = getelementptr inbounds %struct.LexState* %567, i32 0, i32 0 ; [#uses=1] + %569 = load i32* %568, align 4 ; [#uses=1] + store i32 %569, i32* %c, align 4 + %570 = load %struct.LexState** %2, align 4 ; [#uses=1] + %571 = getelementptr inbounds %struct.LexState* %570, i32 0, i32 7 ; [#uses=1] + %572 = load %struct.Zio** %571, align 4 ; [#uses=1] + %573 = getelementptr inbounds %struct.Zio* %572, i32 0, i32 0 ; [#uses=2] + %574 = load i32* %573, align 4 ; [#uses=2] + %575 = add i32 %574, -1 ; [#uses=1] + store i32 %575, i32* %573, align 4 + %576 = icmp ugt i32 %574, 0 ; [#uses=1] + br i1 %576, label %577, label %586 + +; <label>:577 ; preds = %566 + %578 = load %struct.LexState** %2, align 4 ; [#uses=1] + %579 = getelementptr inbounds %struct.LexState* %578, i32 0, i32 7 ; [#uses=1] + %580 = load %struct.Zio** %579, align 4 ; [#uses=1] + %581 = getelementptr inbounds %struct.Zio* %580, i32 0, i32 1 ; [#uses=2] + %582 = load i8** %581, align 4 ; [#uses=2] + %583 = getelementptr inbounds i8* %582, i32 1 ; [#uses=1] + store i8* %583, i8** %581, align 4 + %584 = load i8* %582 ; [#uses=1] + %585 = zext i8 %584 to i32 ; [#uses=1] + br label %591 + +; <label>:586 ; preds = %566 + %587 = load %struct.LexState** %2, align 4 ; [#uses=1] + %588 = getelementptr inbounds %struct.LexState* %587, i32 0, i32 7 ; [#uses=1] + %589 = load %struct.Zio** %588, align 4 ; [#uses=1] + %590 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %589) ; [#uses=1] + br label %591 + +; <label>:591 ; preds = %586, %577 + %592 = phi i32 [ %585, %577 ], [ %590, %586 ] ; [#uses=1] + %593 = load %struct.LexState** %2, align 4 ; [#uses=1] + %594 = getelementptr inbounds %struct.LexState* %593, i32 0, i32 0 ; [#uses=1] + store i32 %592, i32* %594, align 4 + %595 = load i32* %c, align 4 ; [#uses=1] + store i32 %595, i32* %1 + br label %596 + +; <label>:596 ; preds = %591, %561, %553, %476, %437, %434, %433, %426, %425, %382, %378, %355, %321, %298, %264, %241, %207, %184, %149, %142, %44 + %597 = load i32* %1 ; [#uses=1] + ret i32 %597 +} + +; [#uses=1] +define hidden void @_Z14luaX_lookaheadP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Token* %4, i32 0, i32 1 ; [#uses=1] + %6 = call i32 @_Z4llexP8LexStateP7SemInfo(%struct.LexState* %2, %union.anon* %5) ; [#uses=1] + %7 = load %struct.LexState** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LexState* %7, i32 0, i32 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Token* %8, i32 0, i32 0 ; [#uses=1] + store i32 %6, i32* %9, align 4 + ret void +} + +; [#uses=4] +define internal void @_Z13inclinenumberP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=15] + %old = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 0 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + store i32 %4, i32* %old, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 7 ; [#uses=1] + %7 = load %struct.Zio** %6, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Zio* %7, i32 0, i32 0 ; [#uses=2] + %9 = load i32* %8, align 4 ; [#uses=2] + %10 = add i32 %9, -1 ; [#uses=1] + store i32 %10, i32* %8, align 4 + %11 = icmp ugt i32 %9, 0 ; [#uses=1] + br i1 %11, label %12, label %21 + +; <label>:12 ; preds = %0 + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.LexState* %13, i32 0, i32 7 ; [#uses=1] + %15 = load %struct.Zio** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Zio* %15, i32 0, i32 1 ; [#uses=2] + %17 = load i8** %16, align 4 ; [#uses=2] + %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] + store i8* %18, i8** %16, align 4 + %19 = load i8* %17 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + br label %26 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 7 ; [#uses=1] + %24 = load %struct.Zio** %23, align 4 ; [#uses=1] + %25 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %24) ; [#uses=1] + br label %26 + +; <label>:26 ; preds = %21, %12 + %27 = phi i32 [ %20, %12 ], [ %25, %21 ] ; [#uses=1] + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.LexState* %28, i32 0, i32 0 ; [#uses=1] + store i32 %27, i32* %29, align 4 + %30 = load %struct.LexState** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.LexState* %30, i32 0, i32 0 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + %33 = icmp eq i32 %32, 10 ; [#uses=1] + br i1 %33, label %39, label %34 + +; <label>:34 ; preds = %26 + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.LexState* %35, i32 0, i32 0 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp eq i32 %37, 13 ; [#uses=1] + br i1 %38, label %39, label %71 + +; <label>:39 ; preds = %34, %26 + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = load i32* %old, align 4 ; [#uses=1] + %44 = icmp ne i32 %42, %43 ; [#uses=1] + br i1 %44, label %45, label %71 + +; <label>:45 ; preds = %39 + %46 = load %struct.LexState** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.LexState* %46, i32 0, i32 7 ; [#uses=1] + %48 = load %struct.Zio** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Zio* %48, i32 0, i32 0 ; [#uses=2] + %50 = load i32* %49, align 4 ; [#uses=2] + %51 = add i32 %50, -1 ; [#uses=1] + store i32 %51, i32* %49, align 4 + %52 = icmp ugt i32 %50, 0 ; [#uses=1] + br i1 %52, label %53, label %62 + +; <label>:53 ; preds = %45 + %54 = load %struct.LexState** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.LexState* %54, i32 0, i32 7 ; [#uses=1] + %56 = load %struct.Zio** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.Zio* %56, i32 0, i32 1 ; [#uses=2] + %58 = load i8** %57, align 4 ; [#uses=2] + %59 = getelementptr inbounds i8* %58, i32 1 ; [#uses=1] + store i8* %59, i8** %57, align 4 + %60 = load i8* %58 ; [#uses=1] + %61 = zext i8 %60 to i32 ; [#uses=1] + br label %67 + +; <label>:62 ; preds = %45 + %63 = load %struct.LexState** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.LexState* %63, i32 0, i32 7 ; [#uses=1] + %65 = load %struct.Zio** %64, align 4 ; [#uses=1] + %66 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %65) ; [#uses=1] + br label %67 + +; <label>:67 ; preds = %62, %53 + %68 = phi i32 [ %61, %53 ], [ %66, %62 ] ; [#uses=1] + %69 = load %struct.LexState** %1, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.LexState* %69, i32 0, i32 0 ; [#uses=1] + store i32 %68, i32* %70, align 4 + br label %71 + +; <label>:71 ; preds = %67, %39, %34 + %72 = load %struct.LexState** %1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.LexState* %72, i32 0, i32 1 ; [#uses=2] + %74 = load i32* %73, align 4 ; [#uses=1] + %75 = add nsw i32 %74, 1 ; [#uses=2] + store i32 %75, i32* %73, align 4 + %76 = icmp sge i32 %75, 2147483645 ; [#uses=1] + br i1 %76, label %77, label %79 + +; <label>:77 ; preds = %71 + %78 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %78, i8* getelementptr inbounds ([25 x i8]* @.str46, i32 0, i32 0)) + br label %79 + +; <label>:79 ; preds = %77, %71 + ret void +} + +; [#uses=4] +define internal i32 @_Z8skip_sepP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=16] + %count = alloca i32, align 4 ; [#uses=5] + %s = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 0, i32* %count, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 0 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + store i32 %4, i32* %s, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %5, i32 %8) + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 7 ; [#uses=1] + %11 = load %struct.Zio** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.Zio* %11, i32 0, i32 0 ; [#uses=2] + %13 = load i32* %12, align 4 ; [#uses=2] + %14 = add i32 %13, -1 ; [#uses=1] + store i32 %14, i32* %12, align 4 + %15 = icmp ugt i32 %13, 0 ; [#uses=1] + br i1 %15, label %16, label %25 + +; <label>:16 ; preds = %0 + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.LexState* %17, i32 0, i32 7 ; [#uses=1] + %19 = load %struct.Zio** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Zio* %19, i32 0, i32 1 ; [#uses=2] + %21 = load i8** %20, align 4 ; [#uses=2] + %22 = getelementptr inbounds i8* %21, i32 1 ; [#uses=1] + store i8* %22, i8** %20, align 4 + %23 = load i8* %21 ; [#uses=1] + %24 = zext i8 %23 to i32 ; [#uses=1] + br label %30 + +; <label>:25 ; preds = %0 + %26 = load %struct.LexState** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.LexState* %26, i32 0, i32 7 ; [#uses=1] + %28 = load %struct.Zio** %27, align 4 ; [#uses=1] + %29 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %28) ; [#uses=1] + br label %30 + +; <label>:30 ; preds = %25, %16 + %31 = phi i32 [ %24, %16 ], [ %29, %25 ] ; [#uses=1] + %32 = load %struct.LexState** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.LexState* %32, i32 0, i32 0 ; [#uses=1] + store i32 %31, i32* %33, align 4 + br label %34 + +; <label>:34 ; preds = %65, %30 + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.LexState* %35, i32 0, i32 0 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp eq i32 %37, 61 ; [#uses=1] + br i1 %38, label %39, label %71 + +; <label>:39 ; preds = %34 + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = load %struct.LexState** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.LexState* %41, i32 0, i32 0 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %40, i32 %43) + %44 = load %struct.LexState** %1, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.LexState* %44, i32 0, i32 7 ; [#uses=1] + %46 = load %struct.Zio** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Zio* %46, i32 0, i32 0 ; [#uses=2] + %48 = load i32* %47, align 4 ; [#uses=2] + %49 = add i32 %48, -1 ; [#uses=1] + store i32 %49, i32* %47, align 4 + %50 = icmp ugt i32 %48, 0 ; [#uses=1] + br i1 %50, label %51, label %60 + +; <label>:51 ; preds = %39 + %52 = load %struct.LexState** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.LexState* %52, i32 0, i32 7 ; [#uses=1] + %54 = load %struct.Zio** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.Zio* %54, i32 0, i32 1 ; [#uses=2] + %56 = load i8** %55, align 4 ; [#uses=2] + %57 = getelementptr inbounds i8* %56, i32 1 ; [#uses=1] + store i8* %57, i8** %55, align 4 + %58 = load i8* %56 ; [#uses=1] + %59 = zext i8 %58 to i32 ; [#uses=1] + br label %65 + +; <label>:60 ; preds = %39 + %61 = load %struct.LexState** %1, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.LexState* %61, i32 0, i32 7 ; [#uses=1] + %63 = load %struct.Zio** %62, align 4 ; [#uses=1] + %64 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %63) ; [#uses=1] + br label %65 + +; <label>:65 ; preds = %60, %51 + %66 = phi i32 [ %59, %51 ], [ %64, %60 ] ; [#uses=1] + %67 = load %struct.LexState** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.LexState* %67, i32 0, i32 0 ; [#uses=1] + store i32 %66, i32* %68, align 4 + %69 = load i32* %count, align 4 ; [#uses=1] + %70 = add nsw i32 %69, 1 ; [#uses=1] + store i32 %70, i32* %count, align 4 + br label %34 + +; <label>:71 ; preds = %34 + %72 = load %struct.LexState** %1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.LexState* %72, i32 0, i32 0 ; [#uses=1] + %74 = load i32* %73, align 4 ; [#uses=1] + %75 = load i32* %s, align 4 ; [#uses=1] + %76 = icmp eq i32 %74, %75 ; [#uses=1] + br i1 %76, label %77, label %79 + +; <label>:77 ; preds = %71 + %78 = load i32* %count, align 4 ; [#uses=1] + br label %83 + +; <label>:79 ; preds = %71 + %80 = load i32* %count, align 4 ; [#uses=1] + %81 = sub nsw i32 0, %80 ; [#uses=1] + %82 = sub nsw i32 %81, 1 ; [#uses=1] + br label %83 + +; <label>:83 ; preds = %79, %77 + %84 = phi i32 [ %78, %77 ], [ %82, %79 ] ; [#uses=1] + ret i32 %84 +} + +; [#uses=2] +define internal void @_Z16read_long_stringP8LexStateP7SemInfoi(%struct.LexState* %ls, %union.anon* %seminfo, i32 %sep) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=43] + %2 = alloca %union.anon*, align 4 ; [#uses=6] + %3 = alloca i32, align 4 ; [#uses=6] + %cont = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.anon* %seminfo, %union.anon** %2, align 4 + store i32 %sep, i32* %3, align 4 + store i32 0, i32* %cont, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %4, i32 %7) + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 7 ; [#uses=1] + %10 = load %struct.Zio** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Zio* %10, i32 0, i32 0 ; [#uses=2] + %12 = load i32* %11, align 4 ; [#uses=2] + %13 = add i32 %12, -1 ; [#uses=1] + store i32 %13, i32* %11, align 4 + %14 = icmp ugt i32 %12, 0 ; [#uses=1] + br i1 %14, label %15, label %24 + +; <label>:15 ; preds = %0 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 7 ; [#uses=1] + %18 = load %struct.Zio** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Zio* %18, i32 0, i32 1 ; [#uses=2] + %20 = load i8** %19, align 4 ; [#uses=2] + %21 = getelementptr inbounds i8* %20, i32 1 ; [#uses=1] + store i8* %21, i8** %19, align 4 + %22 = load i8* %20 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + br label %29 + +; <label>:24 ; preds = %0 + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 7 ; [#uses=1] + %27 = load %struct.Zio** %26, align 4 ; [#uses=1] + %28 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %27) ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %24, %15 + %30 = phi i32 [ %23, %15 ], [ %28, %24 ] ; [#uses=1] + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.LexState* %31, i32 0, i32 0 ; [#uses=1] + store i32 %30, i32* %32, align 4 + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.LexState* %33, i32 0, i32 0 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + %36 = icmp eq i32 %35, 10 ; [#uses=1] + br i1 %36, label %42, label %37 + +; <label>:37 ; preds = %29 + %38 = load %struct.LexState** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.LexState* %38, i32 0, i32 0 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = icmp eq i32 %40, 13 ; [#uses=1] + br i1 %41, label %42, label %44 + +; <label>:42 ; preds = %37, %29 + %43 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13inclinenumberP8LexState(%struct.LexState* %43) + br label %44 + +; <label>:44 ; preds = %42, %37 + br label %45 + +; <label>:45 ; preds = %207, %44 + %46 = load %struct.LexState** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.LexState* %46, i32 0, i32 0 ; [#uses=1] + %48 = load i32* %47, align 4 ; [#uses=1] + switch i32 %48, label %147 [ + i32 -1, label %49 + i32 91, label %57 + i32 93, label %100 + i32 10, label %136 + i32 13, label %136 + ] + +; <label>:49 ; preds = %45 + %50 = load %struct.LexState** %1, align 4 ; [#uses=1] + %51 = load %union.anon** %2, align 4 ; [#uses=1] + %52 = icmp ne %union.anon* %51, null ; [#uses=1] + br i1 %52, label %53, label %54 + +; <label>:53 ; preds = %49 + br label %55 + +; <label>:54 ; preds = %49 + br label %55 + +; <label>:55 ; preds = %54, %53 + %56 = phi i8* [ getelementptr inbounds ([23 x i8]* @.str43, i32 0, i32 0), %53 ], [ getelementptr inbounds ([24 x i8]* @.str44, i32 0, i32 0), %54 ] ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %50, i8* %56, i32 287) + br label %207 + +; <label>:57 ; preds = %45 + %58 = load %struct.LexState** %1, align 4 ; [#uses=1] + %59 = call i32 @_Z8skip_sepP8LexState(%struct.LexState* %58) ; [#uses=1] + %60 = load i32* %3, align 4 ; [#uses=1] + %61 = icmp eq i32 %59, %60 ; [#uses=1] + br i1 %61, label %62, label %99 + +; <label>:62 ; preds = %57 + %63 = load %struct.LexState** %1, align 4 ; [#uses=1] + %64 = load %struct.LexState** %1, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.LexState* %64, i32 0, i32 0 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %63, i32 %66) + %67 = load %struct.LexState** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.LexState* %67, i32 0, i32 7 ; [#uses=1] + %69 = load %struct.Zio** %68, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.Zio* %69, i32 0, i32 0 ; [#uses=2] + %71 = load i32* %70, align 4 ; [#uses=2] + %72 = add i32 %71, -1 ; [#uses=1] + store i32 %72, i32* %70, align 4 + %73 = icmp ugt i32 %71, 0 ; [#uses=1] + br i1 %73, label %74, label %83 + +; <label>:74 ; preds = %62 + %75 = load %struct.LexState** %1, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.LexState* %75, i32 0, i32 7 ; [#uses=1] + %77 = load %struct.Zio** %76, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.Zio* %77, i32 0, i32 1 ; [#uses=2] + %79 = load i8** %78, align 4 ; [#uses=2] + %80 = getelementptr inbounds i8* %79, i32 1 ; [#uses=1] + store i8* %80, i8** %78, align 4 + %81 = load i8* %79 ; [#uses=1] + %82 = zext i8 %81 to i32 ; [#uses=1] + br label %88 + +; <label>:83 ; preds = %62 + %84 = load %struct.LexState** %1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.LexState* %84, i32 0, i32 7 ; [#uses=1] + %86 = load %struct.Zio** %85, align 4 ; [#uses=1] + %87 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %86) ; [#uses=1] + br label %88 + +; <label>:88 ; preds = %83, %74 + %89 = phi i32 [ %82, %74 ], [ %87, %83 ] ; [#uses=1] + %90 = load %struct.LexState** %1, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.LexState* %90, i32 0, i32 0 ; [#uses=1] + store i32 %89, i32* %91, align 4 + %92 = load i32* %cont, align 4 ; [#uses=1] + %93 = add nsw i32 %92, 1 ; [#uses=1] + store i32 %93, i32* %cont, align 4 + %94 = load i32* %3, align 4 ; [#uses=1] + %95 = icmp eq i32 %94, 0 ; [#uses=1] + br i1 %95, label %96, label %98 + +; <label>:96 ; preds = %88 + %97 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %97, i8* getelementptr inbounds ([33 x i8]* @.str45, i32 0, i32 0), i32 91) + br label %98 + +; <label>:98 ; preds = %96, %88 + br label %99 + +; <label>:99 ; preds = %98, %57 + br label %207 + +; <label>:100 ; preds = %45 + %101 = load %struct.LexState** %1, align 4 ; [#uses=1] + %102 = call i32 @_Z8skip_sepP8LexState(%struct.LexState* %101) ; [#uses=1] + %103 = load i32* %3, align 4 ; [#uses=1] + %104 = icmp eq i32 %102, %103 ; [#uses=1] + br i1 %104, label %105, label %135 + +; <label>:105 ; preds = %100 + %106 = load %struct.LexState** %1, align 4 ; [#uses=1] + %107 = load %struct.LexState** %1, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.LexState* %107, i32 0, i32 0 ; [#uses=1] + %109 = load i32* %108, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %106, i32 %109) + %110 = load %struct.LexState** %1, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.LexState* %110, i32 0, i32 7 ; [#uses=1] + %112 = load %struct.Zio** %111, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.Zio* %112, i32 0, i32 0 ; [#uses=2] + %114 = load i32* %113, align 4 ; [#uses=2] + %115 = add i32 %114, -1 ; [#uses=1] + store i32 %115, i32* %113, align 4 + %116 = icmp ugt i32 %114, 0 ; [#uses=1] + br i1 %116, label %117, label %126 + +; <label>:117 ; preds = %105 + %118 = load %struct.LexState** %1, align 4 ; [#uses=1] + %119 = getelementptr inbounds %struct.LexState* %118, i32 0, i32 7 ; [#uses=1] + %120 = load %struct.Zio** %119, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.Zio* %120, i32 0, i32 1 ; [#uses=2] + %122 = load i8** %121, align 4 ; [#uses=2] + %123 = getelementptr inbounds i8* %122, i32 1 ; [#uses=1] + store i8* %123, i8** %121, align 4 + %124 = load i8* %122 ; [#uses=1] + %125 = zext i8 %124 to i32 ; [#uses=1] + br label %131 + +; <label>:126 ; preds = %105 + %127 = load %struct.LexState** %1, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.LexState* %127, i32 0, i32 7 ; [#uses=1] + %129 = load %struct.Zio** %128, align 4 ; [#uses=1] + %130 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %129) ; [#uses=1] + br label %131 + +; <label>:131 ; preds = %126, %117 + %132 = phi i32 [ %125, %117 ], [ %130, %126 ] ; [#uses=1] + %133 = load %struct.LexState** %1, align 4 ; [#uses=1] + %134 = getelementptr inbounds %struct.LexState* %133, i32 0, i32 0 ; [#uses=1] + store i32 %132, i32* %134, align 4 + br label %208 + +; <label>:135 ; preds = %100 + br label %207 + +; <label>:136 ; preds = %45, %45 + %137 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %137, i32 10) + %138 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13inclinenumberP8LexState(%struct.LexState* %138) + %139 = load %union.anon** %2, align 4 ; [#uses=1] + %140 = icmp ne %union.anon* %139, null ; [#uses=1] + br i1 %140, label %146, label %141 + +; <label>:141 ; preds = %136 + %142 = load %struct.LexState** %1, align 4 ; [#uses=1] + %143 = getelementptr inbounds %struct.LexState* %142, i32 0, i32 8 ; [#uses=1] + %144 = load %struct.Mbuffer** %143, align 4 ; [#uses=1] + %145 = getelementptr inbounds %struct.Mbuffer* %144, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %145, align 4 + br label %146 + +; <label>:146 ; preds = %141, %136 + br label %207 + +; <label>:147 ; preds = %45 + %148 = load %union.anon** %2, align 4 ; [#uses=1] + %149 = icmp ne %union.anon* %148, null ; [#uses=1] + br i1 %149, label %150, label %180 + +; <label>:150 ; preds = %147 + %151 = load %struct.LexState** %1, align 4 ; [#uses=1] + %152 = load %struct.LexState** %1, align 4 ; [#uses=1] + %153 = getelementptr inbounds %struct.LexState* %152, i32 0, i32 0 ; [#uses=1] + %154 = load i32* %153, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %151, i32 %154) + %155 = load %struct.LexState** %1, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.LexState* %155, i32 0, i32 7 ; [#uses=1] + %157 = load %struct.Zio** %156, align 4 ; [#uses=1] + %158 = getelementptr inbounds %struct.Zio* %157, i32 0, i32 0 ; [#uses=2] + %159 = load i32* %158, align 4 ; [#uses=2] + %160 = add i32 %159, -1 ; [#uses=1] + store i32 %160, i32* %158, align 4 + %161 = icmp ugt i32 %159, 0 ; [#uses=1] + br i1 %161, label %162, label %171 + +; <label>:162 ; preds = %150 + %163 = load %struct.LexState** %1, align 4 ; [#uses=1] + %164 = getelementptr inbounds %struct.LexState* %163, i32 0, i32 7 ; [#uses=1] + %165 = load %struct.Zio** %164, align 4 ; [#uses=1] + %166 = getelementptr inbounds %struct.Zio* %165, i32 0, i32 1 ; [#uses=2] + %167 = load i8** %166, align 4 ; [#uses=2] + %168 = getelementptr inbounds i8* %167, i32 1 ; [#uses=1] + store i8* %168, i8** %166, align 4 + %169 = load i8* %167 ; [#uses=1] + %170 = zext i8 %169 to i32 ; [#uses=1] + br label %176 + +; <label>:171 ; preds = %150 + %172 = load %struct.LexState** %1, align 4 ; [#uses=1] + %173 = getelementptr inbounds %struct.LexState* %172, i32 0, i32 7 ; [#uses=1] + %174 = load %struct.Zio** %173, align 4 ; [#uses=1] + %175 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %174) ; [#uses=1] + br label %176 + +; <label>:176 ; preds = %171, %162 + %177 = phi i32 [ %170, %162 ], [ %175, %171 ] ; [#uses=1] + %178 = load %struct.LexState** %1, align 4 ; [#uses=1] + %179 = getelementptr inbounds %struct.LexState* %178, i32 0, i32 0 ; [#uses=1] + store i32 %177, i32* %179, align 4 + br label %206 + +; <label>:180 ; preds = %147 + %181 = load %struct.LexState** %1, align 4 ; [#uses=1] + %182 = getelementptr inbounds %struct.LexState* %181, i32 0, i32 7 ; [#uses=1] + %183 = load %struct.Zio** %182, align 4 ; [#uses=1] + %184 = getelementptr inbounds %struct.Zio* %183, i32 0, i32 0 ; [#uses=2] + %185 = load i32* %184, align 4 ; [#uses=2] + %186 = add i32 %185, -1 ; [#uses=1] + store i32 %186, i32* %184, align 4 + %187 = icmp ugt i32 %185, 0 ; [#uses=1] + br i1 %187, label %188, label %197 + +; <label>:188 ; preds = %180 + %189 = load %struct.LexState** %1, align 4 ; [#uses=1] + %190 = getelementptr inbounds %struct.LexState* %189, i32 0, i32 7 ; [#uses=1] + %191 = load %struct.Zio** %190, align 4 ; [#uses=1] + %192 = getelementptr inbounds %struct.Zio* %191, i32 0, i32 1 ; [#uses=2] + %193 = load i8** %192, align 4 ; [#uses=2] + %194 = getelementptr inbounds i8* %193, i32 1 ; [#uses=1] + store i8* %194, i8** %192, align 4 + %195 = load i8* %193 ; [#uses=1] + %196 = zext i8 %195 to i32 ; [#uses=1] + br label %202 + +; <label>:197 ; preds = %180 + %198 = load %struct.LexState** %1, align 4 ; [#uses=1] + %199 = getelementptr inbounds %struct.LexState* %198, i32 0, i32 7 ; [#uses=1] + %200 = load %struct.Zio** %199, align 4 ; [#uses=1] + %201 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %200) ; [#uses=1] + br label %202 + +; <label>:202 ; preds = %197, %188 + %203 = phi i32 [ %196, %188 ], [ %201, %197 ] ; [#uses=1] + %204 = load %struct.LexState** %1, align 4 ; [#uses=1] + %205 = getelementptr inbounds %struct.LexState* %204, i32 0, i32 0 ; [#uses=1] + store i32 %203, i32* %205, align 4 + br label %206 + +; <label>:206 ; preds = %202, %176 + br label %207 + +; <label>:207 ; preds = %206, %146, %135, %99, %55 + br label %45 + +; <label>:208 ; preds = %131 + %209 = load %union.anon** %2, align 4 ; [#uses=1] + %210 = icmp ne %union.anon* %209, null ; [#uses=1] + br i1 %210, label %211, label %234 + +; <label>:211 ; preds = %208 + %212 = load %struct.LexState** %1, align 4 ; [#uses=1] + %213 = load %struct.LexState** %1, align 4 ; [#uses=1] + %214 = getelementptr inbounds %struct.LexState* %213, i32 0, i32 8 ; [#uses=1] + %215 = load %struct.Mbuffer** %214, align 4 ; [#uses=1] + %216 = getelementptr inbounds %struct.Mbuffer* %215, i32 0, i32 0 ; [#uses=1] + %217 = load i8** %216, align 4 ; [#uses=1] + %218 = load i32* %3, align 4 ; [#uses=1] + %219 = add nsw i32 2, %218 ; [#uses=1] + %220 = getelementptr inbounds i8* %217, i32 %219 ; [#uses=1] + %221 = load %struct.LexState** %1, align 4 ; [#uses=1] + %222 = getelementptr inbounds %struct.LexState* %221, i32 0, i32 8 ; [#uses=1] + %223 = load %struct.Mbuffer** %222, align 4 ; [#uses=1] + %224 = getelementptr inbounds %struct.Mbuffer* %223, i32 0, i32 1 ; [#uses=1] + %225 = load i32* %224, align 4 ; [#uses=1] + %226 = load i32* %3, align 4 ; [#uses=1] + %227 = add nsw i32 2, %226 ; [#uses=1] + %228 = mul nsw i32 2, %227 ; [#uses=1] + %229 = sub i32 %225, %228 ; [#uses=1] + %230 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %212, i8* %220, i32 %229) ; [#uses=1] + %231 = load %union.anon** %2, align 4 ; [#uses=1] + %232 = getelementptr inbounds %union.anon* %231, i32 0, i32 0 ; [#uses=1] + %233 = bitcast double* %232 to %union.TString** ; [#uses=1] + store %union.TString* %230, %union.TString** %233, align 4 + br label %234 + +; <label>:234 ; preds = %211, %208 + ret void +} + +; [#uses=1] +define internal void @_Z11read_stringP8LexStateiP7SemInfo(%struct.LexState* %ls, i32 %del, %union.anon* %seminfo) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=53] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca %union.anon*, align 4 ; [#uses=2] + %c = alloca i32, align 4 ; [#uses=13] + %i = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %del, i32* %2, align 4 + store %union.anon* %seminfo, %union.anon** %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %4, i32 %7) + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 7 ; [#uses=1] + %10 = load %struct.Zio** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Zio* %10, i32 0, i32 0 ; [#uses=2] + %12 = load i32* %11, align 4 ; [#uses=2] + %13 = add i32 %12, -1 ; [#uses=1] + store i32 %13, i32* %11, align 4 + %14 = icmp ugt i32 %12, 0 ; [#uses=1] + br i1 %14, label %15, label %24 + +; <label>:15 ; preds = %0 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 7 ; [#uses=1] + %18 = load %struct.Zio** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Zio* %18, i32 0, i32 1 ; [#uses=2] + %20 = load i8** %19, align 4 ; [#uses=2] + %21 = getelementptr inbounds i8* %20, i32 1 ; [#uses=1] + store i8* %21, i8** %19, align 4 + %22 = load i8* %20 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + br label %29 + +; <label>:24 ; preds = %0 + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 7 ; [#uses=1] + %27 = load %struct.Zio** %26, align 4 ; [#uses=1] + %28 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %27) ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %24, %15 + %30 = phi i32 [ %23, %15 ], [ %28, %24 ] ; [#uses=1] + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.LexState* %31, i32 0, i32 0 ; [#uses=1] + store i32 %30, i32* %32, align 4 + br label %33 + +; <label>:33 ; preds = %236, %202, %177, %86, %83, %45, %43, %29 + %34 = load %struct.LexState** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.LexState* %34, i32 0, i32 0 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = load i32* %2, align 4 ; [#uses=1] + %38 = icmp ne i32 %36, %37 ; [#uses=1] + br i1 %38, label %39, label %237 + +; <label>:39 ; preds = %33 + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + switch i32 %42, label %206 [ + i32 -1, label %43 + i32 10, label %45 + i32 13, label %45 + i32 92, label %47 + ] + +; <label>:43 ; preds = %39 + %44 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %44, i8* getelementptr inbounds ([18 x i8]* @.str41, i32 0, i32 0), i32 287) + br label %33 + +; <label>:45 ; preds = %39, %39 + %46 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %46, i8* getelementptr inbounds ([18 x i8]* @.str41, i32 0, i32 0), i32 286) + br label %33 + +; <label>:47 ; preds = %39 + %48 = load %struct.LexState** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.LexState* %48, i32 0, i32 7 ; [#uses=1] + %50 = load %struct.Zio** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Zio* %50, i32 0, i32 0 ; [#uses=2] + %52 = load i32* %51, align 4 ; [#uses=2] + %53 = add i32 %52, -1 ; [#uses=1] + store i32 %53, i32* %51, align 4 + %54 = icmp ugt i32 %52, 0 ; [#uses=1] + br i1 %54, label %55, label %64 + +; <label>:55 ; preds = %47 + %56 = load %struct.LexState** %1, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.LexState* %56, i32 0, i32 7 ; [#uses=1] + %58 = load %struct.Zio** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Zio* %58, i32 0, i32 1 ; [#uses=2] + %60 = load i8** %59, align 4 ; [#uses=2] + %61 = getelementptr inbounds i8* %60, i32 1 ; [#uses=1] + store i8* %61, i8** %59, align 4 + %62 = load i8* %60 ; [#uses=1] + %63 = zext i8 %62 to i32 ; [#uses=1] + br label %69 + +; <label>:64 ; preds = %47 + %65 = load %struct.LexState** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.LexState* %65, i32 0, i32 7 ; [#uses=1] + %67 = load %struct.Zio** %66, align 4 ; [#uses=1] + %68 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %67) ; [#uses=1] + br label %69 + +; <label>:69 ; preds = %64, %55 + %70 = phi i32 [ %63, %55 ], [ %68, %64 ] ; [#uses=1] + %71 = load %struct.LexState** %1, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.LexState* %71, i32 0, i32 0 ; [#uses=1] + store i32 %70, i32* %72, align 4 + %73 = load %struct.LexState** %1, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.LexState* %73, i32 0, i32 0 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + switch i32 %75, label %87 [ + i32 97, label %76 + i32 98, label %77 + i32 102, label %78 + i32 110, label %79 + i32 114, label %80 + i32 116, label %81 + i32 118, label %82 + i32 10, label %83 + i32 13, label %83 + i32 -1, label %86 + ] + +; <label>:76 ; preds = %69 + store i32 7, i32* %c, align 4 + br label %178 + +; <label>:77 ; preds = %69 + store i32 8, i32* %c, align 4 + br label %178 + +; <label>:78 ; preds = %69 + store i32 12, i32* %c, align 4 + br label %178 + +; <label>:79 ; preds = %69 + store i32 10, i32* %c, align 4 + br label %178 + +; <label>:80 ; preds = %69 + store i32 13, i32* %c, align 4 + br label %178 + +; <label>:81 ; preds = %69 + store i32 9, i32* %c, align 4 + br label %178 + +; <label>:82 ; preds = %69 + store i32 11, i32* %c, align 4 + br label %178 + +; <label>:83 ; preds = %69, %69 + %84 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %84, i32 10) + %85 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13inclinenumberP8LexState(%struct.LexState* %85) + br label %33 + +; <label>:86 ; preds = %69 + br label %33 + +; <label>:87 ; preds = %69 + %88 = load %struct.LexState** %1, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.LexState* %88, i32 0, i32 0 ; [#uses=1] + %90 = load i32* %89, align 4 ; [#uses=1] + %91 = call i32 @isdigit(i32 %90) nounwind ; [#uses=1] + %92 = icmp ne i32 %91, 0 ; [#uses=1] + br i1 %92, label %123, label %93 + +; <label>:93 ; preds = %87 + %94 = load %struct.LexState** %1, align 4 ; [#uses=1] + %95 = load %struct.LexState** %1, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.LexState* %95, i32 0, i32 0 ; [#uses=1] + %97 = load i32* %96, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %94, i32 %97) + %98 = load %struct.LexState** %1, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.LexState* %98, i32 0, i32 7 ; [#uses=1] + %100 = load %struct.Zio** %99, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.Zio* %100, i32 0, i32 0 ; [#uses=2] + %102 = load i32* %101, align 4 ; [#uses=2] + %103 = add i32 %102, -1 ; [#uses=1] + store i32 %103, i32* %101, align 4 + %104 = icmp ugt i32 %102, 0 ; [#uses=1] + br i1 %104, label %105, label %114 + +; <label>:105 ; preds = %93 + %106 = load %struct.LexState** %1, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.LexState* %106, i32 0, i32 7 ; [#uses=1] + %108 = load %struct.Zio** %107, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.Zio* %108, i32 0, i32 1 ; [#uses=2] + %110 = load i8** %109, align 4 ; [#uses=2] + %111 = getelementptr inbounds i8* %110, i32 1 ; [#uses=1] + store i8* %111, i8** %109, align 4 + %112 = load i8* %110 ; [#uses=1] + %113 = zext i8 %112 to i32 ; [#uses=1] + br label %119 + +; <label>:114 ; preds = %93 + %115 = load %struct.LexState** %1, align 4 ; [#uses=1] + %116 = getelementptr inbounds %struct.LexState* %115, i32 0, i32 7 ; [#uses=1] + %117 = load %struct.Zio** %116, align 4 ; [#uses=1] + %118 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %117) ; [#uses=1] + br label %119 + +; <label>:119 ; preds = %114, %105 + %120 = phi i32 [ %113, %105 ], [ %118, %114 ] ; [#uses=1] + %121 = load %struct.LexState** %1, align 4 ; [#uses=1] + %122 = getelementptr inbounds %struct.LexState* %121, i32 0, i32 0 ; [#uses=1] + store i32 %120, i32* %122, align 4 + br label %177 + +; <label>:123 ; preds = %87 + store i32 0, i32* %i, align 4 + store i32 0, i32* %c, align 4 + br label %124 + +; <label>:124 ; preds = %167, %123 + %125 = load i32* %c, align 4 ; [#uses=1] + %126 = mul nsw i32 10, %125 ; [#uses=1] + %127 = load %struct.LexState** %1, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.LexState* %127, i32 0, i32 0 ; [#uses=1] + %129 = load i32* %128, align 4 ; [#uses=1] + %130 = sub nsw i32 %129, 48 ; [#uses=1] + %131 = add nsw i32 %126, %130 ; [#uses=1] + store i32 %131, i32* %c, align 4 + %132 = load %struct.LexState** %1, align 4 ; [#uses=1] + %133 = getelementptr inbounds %struct.LexState* %132, i32 0, i32 7 ; [#uses=1] + %134 = load %struct.Zio** %133, align 4 ; [#uses=1] + %135 = getelementptr inbounds %struct.Zio* %134, i32 0, i32 0 ; [#uses=2] + %136 = load i32* %135, align 4 ; [#uses=2] + %137 = add i32 %136, -1 ; [#uses=1] + store i32 %137, i32* %135, align 4 + %138 = icmp ugt i32 %136, 0 ; [#uses=1] + br i1 %138, label %139, label %148 + +; <label>:139 ; preds = %124 + %140 = load %struct.LexState** %1, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.LexState* %140, i32 0, i32 7 ; [#uses=1] + %142 = load %struct.Zio** %141, align 4 ; [#uses=1] + %143 = getelementptr inbounds %struct.Zio* %142, i32 0, i32 1 ; [#uses=2] + %144 = load i8** %143, align 4 ; [#uses=2] + %145 = getelementptr inbounds i8* %144, i32 1 ; [#uses=1] + store i8* %145, i8** %143, align 4 + %146 = load i8* %144 ; [#uses=1] + %147 = zext i8 %146 to i32 ; [#uses=1] + br label %153 + +; <label>:148 ; preds = %124 + %149 = load %struct.LexState** %1, align 4 ; [#uses=1] + %150 = getelementptr inbounds %struct.LexState* %149, i32 0, i32 7 ; [#uses=1] + %151 = load %struct.Zio** %150, align 4 ; [#uses=1] + %152 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %151) ; [#uses=1] + br label %153 + +; <label>:153 ; preds = %148, %139 + %154 = phi i32 [ %147, %139 ], [ %152, %148 ] ; [#uses=1] + %155 = load %struct.LexState** %1, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.LexState* %155, i32 0, i32 0 ; [#uses=1] + store i32 %154, i32* %156, align 4 + br label %157 + +; <label>:157 ; preds = %153 + %158 = load i32* %i, align 4 ; [#uses=1] + %159 = add nsw i32 %158, 1 ; [#uses=2] + store i32 %159, i32* %i, align 4 + %160 = icmp slt i32 %159, 3 ; [#uses=1] + br i1 %160, label %161, label %167 + +; <label>:161 ; preds = %157 + %162 = load %struct.LexState** %1, align 4 ; [#uses=1] + %163 = getelementptr inbounds %struct.LexState* %162, i32 0, i32 0 ; [#uses=1] + %164 = load i32* %163, align 4 ; [#uses=1] + %165 = call i32 @isdigit(i32 %164) nounwind ; [#uses=1] + %166 = icmp ne i32 %165, 0 ; [#uses=1] + br label %167 + +; <label>:167 ; preds = %161, %157 + %168 = phi i1 [ false, %157 ], [ %166, %161 ] ; [#uses=1] + br i1 %168, label %124, label %169 + +; <label>:169 ; preds = %167 + %170 = load i32* %c, align 4 ; [#uses=1] + %171 = icmp sgt i32 %170, 255 ; [#uses=1] + br i1 %171, label %172, label %174 + +; <label>:172 ; preds = %169 + %173 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %173, i8* getelementptr inbounds ([26 x i8]* @.str42, i32 0, i32 0), i32 286) + br label %174 + +; <label>:174 ; preds = %172, %169 + %175 = load %struct.LexState** %1, align 4 ; [#uses=1] + %176 = load i32* %c, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %175, i32 %176) + br label %177 + +; <label>:177 ; preds = %174, %119 + br label %33 + +; <label>:178 ; preds = %82, %81, %80, %79, %78, %77, %76 + %179 = load %struct.LexState** %1, align 4 ; [#uses=1] + %180 = load i32* %c, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %179, i32 %180) + %181 = load %struct.LexState** %1, align 4 ; [#uses=1] + %182 = getelementptr inbounds %struct.LexState* %181, i32 0, i32 7 ; [#uses=1] + %183 = load %struct.Zio** %182, align 4 ; [#uses=1] + %184 = getelementptr inbounds %struct.Zio* %183, i32 0, i32 0 ; [#uses=2] + %185 = load i32* %184, align 4 ; [#uses=2] + %186 = add i32 %185, -1 ; [#uses=1] + store i32 %186, i32* %184, align 4 + %187 = icmp ugt i32 %185, 0 ; [#uses=1] + br i1 %187, label %188, label %197 + +; <label>:188 ; preds = %178 + %189 = load %struct.LexState** %1, align 4 ; [#uses=1] + %190 = getelementptr inbounds %struct.LexState* %189, i32 0, i32 7 ; [#uses=1] + %191 = load %struct.Zio** %190, align 4 ; [#uses=1] + %192 = getelementptr inbounds %struct.Zio* %191, i32 0, i32 1 ; [#uses=2] + %193 = load i8** %192, align 4 ; [#uses=2] + %194 = getelementptr inbounds i8* %193, i32 1 ; [#uses=1] + store i8* %194, i8** %192, align 4 + %195 = load i8* %193 ; [#uses=1] + %196 = zext i8 %195 to i32 ; [#uses=1] + br label %202 + +; <label>:197 ; preds = %178 + %198 = load %struct.LexState** %1, align 4 ; [#uses=1] + %199 = getelementptr inbounds %struct.LexState* %198, i32 0, i32 7 ; [#uses=1] + %200 = load %struct.Zio** %199, align 4 ; [#uses=1] + %201 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %200) ; [#uses=1] + br label %202 + +; <label>:202 ; preds = %197, %188 + %203 = phi i32 [ %196, %188 ], [ %201, %197 ] ; [#uses=1] + %204 = load %struct.LexState** %1, align 4 ; [#uses=1] + %205 = getelementptr inbounds %struct.LexState* %204, i32 0, i32 0 ; [#uses=1] + store i32 %203, i32* %205, align 4 + br label %33 + +; <label>:206 ; preds = %39 + %207 = load %struct.LexState** %1, align 4 ; [#uses=1] + %208 = load %struct.LexState** %1, align 4 ; [#uses=1] + %209 = getelementptr inbounds %struct.LexState* %208, i32 0, i32 0 ; [#uses=1] + %210 = load i32* %209, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %207, i32 %210) + %211 = load %struct.LexState** %1, align 4 ; [#uses=1] + %212 = getelementptr inbounds %struct.LexState* %211, i32 0, i32 7 ; [#uses=1] + %213 = load %struct.Zio** %212, align 4 ; [#uses=1] + %214 = getelementptr inbounds %struct.Zio* %213, i32 0, i32 0 ; [#uses=2] + %215 = load i32* %214, align 4 ; [#uses=2] + %216 = add i32 %215, -1 ; [#uses=1] + store i32 %216, i32* %214, align 4 + %217 = icmp ugt i32 %215, 0 ; [#uses=1] + br i1 %217, label %218, label %227 + +; <label>:218 ; preds = %206 + %219 = load %struct.LexState** %1, align 4 ; [#uses=1] + %220 = getelementptr inbounds %struct.LexState* %219, i32 0, i32 7 ; [#uses=1] + %221 = load %struct.Zio** %220, align 4 ; [#uses=1] + %222 = getelementptr inbounds %struct.Zio* %221, i32 0, i32 1 ; [#uses=2] + %223 = load i8** %222, align 4 ; [#uses=2] + %224 = getelementptr inbounds i8* %223, i32 1 ; [#uses=1] + store i8* %224, i8** %222, align 4 + %225 = load i8* %223 ; [#uses=1] + %226 = zext i8 %225 to i32 ; [#uses=1] + br label %232 + +; <label>:227 ; preds = %206 + %228 = load %struct.LexState** %1, align 4 ; [#uses=1] + %229 = getelementptr inbounds %struct.LexState* %228, i32 0, i32 7 ; [#uses=1] + %230 = load %struct.Zio** %229, align 4 ; [#uses=1] + %231 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %230) ; [#uses=1] + br label %232 + +; <label>:232 ; preds = %227, %218 + %233 = phi i32 [ %226, %218 ], [ %231, %227 ] ; [#uses=1] + %234 = load %struct.LexState** %1, align 4 ; [#uses=1] + %235 = getelementptr inbounds %struct.LexState* %234, i32 0, i32 0 ; [#uses=1] + store i32 %233, i32* %235, align 4 + br label %236 + +; <label>:236 ; preds = %232 + br label %33 + +; <label>:237 ; preds = %33 + %238 = load %struct.LexState** %1, align 4 ; [#uses=1] + %239 = load %struct.LexState** %1, align 4 ; [#uses=1] + %240 = getelementptr inbounds %struct.LexState* %239, i32 0, i32 0 ; [#uses=1] + %241 = load i32* %240, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %238, i32 %241) + %242 = load %struct.LexState** %1, align 4 ; [#uses=1] + %243 = getelementptr inbounds %struct.LexState* %242, i32 0, i32 7 ; [#uses=1] + %244 = load %struct.Zio** %243, align 4 ; [#uses=1] + %245 = getelementptr inbounds %struct.Zio* %244, i32 0, i32 0 ; [#uses=2] + %246 = load i32* %245, align 4 ; [#uses=2] + %247 = add i32 %246, -1 ; [#uses=1] + store i32 %247, i32* %245, align 4 + %248 = icmp ugt i32 %246, 0 ; [#uses=1] + br i1 %248, label %249, label %258 + +; <label>:249 ; preds = %237 + %250 = load %struct.LexState** %1, align 4 ; [#uses=1] + %251 = getelementptr inbounds %struct.LexState* %250, i32 0, i32 7 ; [#uses=1] + %252 = load %struct.Zio** %251, align 4 ; [#uses=1] + %253 = getelementptr inbounds %struct.Zio* %252, i32 0, i32 1 ; [#uses=2] + %254 = load i8** %253, align 4 ; [#uses=2] + %255 = getelementptr inbounds i8* %254, i32 1 ; [#uses=1] + store i8* %255, i8** %253, align 4 + %256 = load i8* %254 ; [#uses=1] + %257 = zext i8 %256 to i32 ; [#uses=1] + br label %263 + +; <label>:258 ; preds = %237 + %259 = load %struct.LexState** %1, align 4 ; [#uses=1] + %260 = getelementptr inbounds %struct.LexState* %259, i32 0, i32 7 ; [#uses=1] + %261 = load %struct.Zio** %260, align 4 ; [#uses=1] + %262 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %261) ; [#uses=1] + br label %263 + +; <label>:263 ; preds = %258, %249 + %264 = phi i32 [ %257, %249 ], [ %262, %258 ] ; [#uses=1] + %265 = load %struct.LexState** %1, align 4 ; [#uses=1] + %266 = getelementptr inbounds %struct.LexState* %265, i32 0, i32 0 ; [#uses=1] + store i32 %264, i32* %266, align 4 + %267 = load %struct.LexState** %1, align 4 ; [#uses=1] + %268 = load %struct.LexState** %1, align 4 ; [#uses=1] + %269 = getelementptr inbounds %struct.LexState* %268, i32 0, i32 8 ; [#uses=1] + %270 = load %struct.Mbuffer** %269, align 4 ; [#uses=1] + %271 = getelementptr inbounds %struct.Mbuffer* %270, i32 0, i32 0 ; [#uses=1] + %272 = load i8** %271, align 4 ; [#uses=1] + %273 = getelementptr inbounds i8* %272, i32 1 ; [#uses=1] + %274 = load %struct.LexState** %1, align 4 ; [#uses=1] + %275 = getelementptr inbounds %struct.LexState* %274, i32 0, i32 8 ; [#uses=1] + %276 = load %struct.Mbuffer** %275, align 4 ; [#uses=1] + %277 = getelementptr inbounds %struct.Mbuffer* %276, i32 0, i32 1 ; [#uses=1] + %278 = load i32* %277, align 4 ; [#uses=1] + %279 = sub i32 %278, 2 ; [#uses=1] + %280 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %267, i8* %273, i32 %279) ; [#uses=1] + %281 = load %union.anon** %3, align 4 ; [#uses=1] + %282 = getelementptr inbounds %union.anon* %281, i32 0, i32 0 ; [#uses=1] + %283 = bitcast double* %282 to %union.TString** ; [#uses=1] + store %union.TString* %280, %union.TString** %283, align 4 + ret void +} + +; [#uses=21] +define internal void @_Z4saveP8LexStatei(%struct.LexState* %ls, i32 %c) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %b = alloca %struct.Mbuffer*, align 4 ; [#uses=11] + %newsize = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %c, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 8 ; [#uses=1] + %5 = load %struct.Mbuffer** %4, align 4 ; [#uses=1] + store %struct.Mbuffer* %5, %struct.Mbuffer** %b, align 4 + %6 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Mbuffer* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = add i32 %8, 1 ; [#uses=1] + %10 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Mbuffer* %10, i32 0, i32 2 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp ugt i32 %9, %12 ; [#uses=1] + br i1 %13, label %14, label %55 + +; <label>:14 ; preds = %0 + %15 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Mbuffer* %15, i32 0, i32 2 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp uge i32 %17, 2147483646 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %14 + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %20, i8* getelementptr inbounds ([25 x i8]* @.str40, i32 0, i32 0), i32 0) + br label %21 + +; <label>:21 ; preds = %19, %14 + %22 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Mbuffer* %22, i32 0, i32 2 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = mul i32 %24, 2 ; [#uses=1] + store i32 %25, i32* %newsize, align 4 + %26 = load i32* %newsize, align 4 ; [#uses=1] + %27 = add i32 %26, 1 ; [#uses=1] + %28 = icmp ule i32 %27, -3 ; [#uses=1] + br i1 %28, label %29, label %43 + +; <label>:29 ; preds = %21 + %30 = load %struct.LexState** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.LexState* %30, i32 0, i32 6 ; [#uses=1] + %32 = load %struct.lua_State** %31, align 4 ; [#uses=1] + %33 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Mbuffer* %33, i32 0, i32 0 ; [#uses=1] + %35 = load i8** %34, align 4 ; [#uses=1] + %36 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Mbuffer* %36, i32 0, i32 2 ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = mul i32 %38, 1 ; [#uses=1] + %40 = load i32* %newsize, align 4 ; [#uses=1] + %41 = mul i32 %40, 1 ; [#uses=1] + %42 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %32, i8* %35, i32 %39, i32 %41) ; [#uses=1] + br label %48 + +; <label>:43 ; preds = %21 + %44 = load %struct.LexState** %1, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.LexState* %44, i32 0, i32 6 ; [#uses=1] + %46 = load %struct.lua_State** %45, align 4 ; [#uses=1] + %47 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %46) ; [#uses=1] + br label %48 + +; <label>:48 ; preds = %43, %29 + %49 = phi i8* [ %42, %29 ], [ %47, %43 ] ; [#uses=1] + %50 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Mbuffer* %50, i32 0, i32 0 ; [#uses=1] + store i8* %49, i8** %51, align 4 + %52 = load i32* %newsize, align 4 ; [#uses=1] + %53 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Mbuffer* %53, i32 0, i32 2 ; [#uses=1] + store i32 %52, i32* %54, align 4 + br label %55 + +; <label>:55 ; preds = %48, %0 + %56 = load i32* %2, align 4 ; [#uses=1] + %57 = trunc i32 %56 to i8 ; [#uses=1] + %58 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Mbuffer* %58, i32 0, i32 1 ; [#uses=2] + %60 = load i32* %59, align 4 ; [#uses=2] + %61 = add i32 %60, 1 ; [#uses=1] + store i32 %61, i32* %59, align 4 + %62 = load %struct.Mbuffer** %b, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.Mbuffer* %62, i32 0, i32 0 ; [#uses=1] + %64 = load i8** %63, align 4 ; [#uses=1] + %65 = getelementptr inbounds i8* %64, i32 %60 ; [#uses=1] + store i8 %57, i8* %65 + ret void +} + +; [#uses=4] +define internal i32 @_Z10check_nextP8LexStatePKc(%struct.LexState* %ls, i8* %set) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.LexState*, align 4 ; [#uses=8] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store i8* %set, i8** %3, align 4 + %4 = load i8** %3, align 4 ; [#uses=1] + %5 = load %struct.LexState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = call i8* @strchr(i8* %4, i32 %7) ; [#uses=1] + %9 = icmp ne i8* %8, null ; [#uses=1] + br i1 %9, label %11, label %10 + +; <label>:10 ; preds = %0 + store i32 0, i32* %1 + br label %41 + +; <label>:11 ; preds = %0 + %12 = load %struct.LexState** %2, align 4 ; [#uses=1] + %13 = load %struct.LexState** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.LexState* %13, i32 0, i32 0 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %12, i32 %15) + %16 = load %struct.LexState** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 7 ; [#uses=1] + %18 = load %struct.Zio** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Zio* %18, i32 0, i32 0 ; [#uses=2] + %20 = load i32* %19, align 4 ; [#uses=2] + %21 = add i32 %20, -1 ; [#uses=1] + store i32 %21, i32* %19, align 4 + %22 = icmp ugt i32 %20, 0 ; [#uses=1] + br i1 %22, label %23, label %32 + +; <label>:23 ; preds = %11 + %24 = load %struct.LexState** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.LexState* %24, i32 0, i32 7 ; [#uses=1] + %26 = load %struct.Zio** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Zio* %26, i32 0, i32 1 ; [#uses=2] + %28 = load i8** %27, align 4 ; [#uses=2] + %29 = getelementptr inbounds i8* %28, i32 1 ; [#uses=1] + store i8* %29, i8** %27, align 4 + %30 = load i8* %28 ; [#uses=1] + %31 = zext i8 %30 to i32 ; [#uses=1] + br label %37 + +; <label>:32 ; preds = %11 + %33 = load %struct.LexState** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.LexState* %33, i32 0, i32 7 ; [#uses=1] + %35 = load %struct.Zio** %34, align 4 ; [#uses=1] + %36 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %35) ; [#uses=1] + br label %37 + +; <label>:37 ; preds = %32, %23 + %38 = phi i32 [ %31, %23 ], [ %36, %32 ] ; [#uses=1] + %39 = load %struct.LexState** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.LexState* %39, i32 0, i32 0 ; [#uses=1] + store i32 %38, i32* %40, align 4 + store i32 1, i32* %1 + br label %41 + +; <label>:41 ; preds = %37, %10 + %42 = load i32* %1 ; [#uses=1] + ret i32 %42 +} + +; [#uses=13] +declare i32 @isdigit(i32) nounwind + +; [#uses=2] +define internal void @_Z12read_numeralP8LexStateP7SemInfo(%struct.LexState* %ls, %union.anon* %seminfo) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=24] + %2 = alloca %union.anon*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.anon* %seminfo, %union.anon** %2, align 4 + br label %3 + +; <label>:3 ; preds = %44, %0 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %4, i32 %7) + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 7 ; [#uses=1] + %10 = load %struct.Zio** %9, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Zio* %10, i32 0, i32 0 ; [#uses=2] + %12 = load i32* %11, align 4 ; [#uses=2] + %13 = add i32 %12, -1 ; [#uses=1] + store i32 %13, i32* %11, align 4 + %14 = icmp ugt i32 %12, 0 ; [#uses=1] + br i1 %14, label %15, label %24 + +; <label>:15 ; preds = %3 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 7 ; [#uses=1] + %18 = load %struct.Zio** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Zio* %18, i32 0, i32 1 ; [#uses=2] + %20 = load i8** %19, align 4 ; [#uses=2] + %21 = getelementptr inbounds i8* %20, i32 1 ; [#uses=1] + store i8* %21, i8** %19, align 4 + %22 = load i8* %20 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + br label %29 + +; <label>:24 ; preds = %3 + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 7 ; [#uses=1] + %27 = load %struct.Zio** %26, align 4 ; [#uses=1] + %28 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %27) ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %24, %15 + %30 = phi i32 [ %23, %15 ], [ %28, %24 ] ; [#uses=1] + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.LexState* %31, i32 0, i32 0 ; [#uses=1] + store i32 %30, i32* %32, align 4 + br label %33 + +; <label>:33 ; preds = %29 + %34 = load %struct.LexState** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.LexState* %34, i32 0, i32 0 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = call i32 @isdigit(i32 %36) nounwind ; [#uses=1] + %38 = icmp ne i32 %37, 0 ; [#uses=1] + br i1 %38, label %44, label %39 + +; <label>:39 ; preds = %33 + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = icmp eq i32 %42, 46 ; [#uses=1] + br label %44 + +; <label>:44 ; preds = %39, %33 + %45 = phi i1 [ true, %33 ], [ %43, %39 ] ; [#uses=1] + br i1 %45, label %3, label %46 + +; <label>:46 ; preds = %44 + %47 = load %struct.LexState** %1, align 4 ; [#uses=1] + %48 = call i32 @_Z10check_nextP8LexStatePKc(%struct.LexState* %47, i8* getelementptr inbounds ([3 x i8]* @.str3770, i32 0, i32 0)) ; [#uses=1] + %49 = icmp ne i32 %48, 0 ; [#uses=1] + br i1 %49, label %50, label %53 + +; <label>:50 ; preds = %46 + %51 = load %struct.LexState** %1, align 4 ; [#uses=1] + %52 = call i32 @_Z10check_nextP8LexStatePKc(%struct.LexState* %51, i8* getelementptr inbounds ([3 x i8]* @.str38, i32 0, i32 0)) ; [#uses=0] + br label %53 + +; <label>:53 ; preds = %50, %46 + br label %54 + +; <label>:54 ; preds = %93, %53 + %55 = load %struct.LexState** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.LexState* %55, i32 0, i32 0 ; [#uses=1] + %57 = load i32* %56, align 4 ; [#uses=1] + %58 = call i32 @isalnum(i32 %57) nounwind ; [#uses=1] + %59 = icmp ne i32 %58, 0 ; [#uses=1] + br i1 %59, label %65, label %60 + +; <label>:60 ; preds = %54 + %61 = load %struct.LexState** %1, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.LexState* %61, i32 0, i32 0 ; [#uses=1] + %63 = load i32* %62, align 4 ; [#uses=1] + %64 = icmp eq i32 %63, 95 ; [#uses=1] + br label %65 + +; <label>:65 ; preds = %60, %54 + %66 = phi i1 [ true, %54 ], [ %64, %60 ] ; [#uses=1] + br i1 %66, label %67, label %97 + +; <label>:67 ; preds = %65 + %68 = load %struct.LexState** %1, align 4 ; [#uses=1] + %69 = load %struct.LexState** %1, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.LexState* %69, i32 0, i32 0 ; [#uses=1] + %71 = load i32* %70, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %68, i32 %71) + %72 = load %struct.LexState** %1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.LexState* %72, i32 0, i32 7 ; [#uses=1] + %74 = load %struct.Zio** %73, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.Zio* %74, i32 0, i32 0 ; [#uses=2] + %76 = load i32* %75, align 4 ; [#uses=2] + %77 = add i32 %76, -1 ; [#uses=1] + store i32 %77, i32* %75, align 4 + %78 = icmp ugt i32 %76, 0 ; [#uses=1] + br i1 %78, label %79, label %88 + +; <label>:79 ; preds = %67 + %80 = load %struct.LexState** %1, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.LexState* %80, i32 0, i32 7 ; [#uses=1] + %82 = load %struct.Zio** %81, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.Zio* %82, i32 0, i32 1 ; [#uses=2] + %84 = load i8** %83, align 4 ; [#uses=2] + %85 = getelementptr inbounds i8* %84, i32 1 ; [#uses=1] + store i8* %85, i8** %83, align 4 + %86 = load i8* %84 ; [#uses=1] + %87 = zext i8 %86 to i32 ; [#uses=1] + br label %93 + +; <label>:88 ; preds = %67 + %89 = load %struct.LexState** %1, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.LexState* %89, i32 0, i32 7 ; [#uses=1] + %91 = load %struct.Zio** %90, align 4 ; [#uses=1] + %92 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %91) ; [#uses=1] + br label %93 + +; <label>:93 ; preds = %88, %79 + %94 = phi i32 [ %87, %79 ], [ %92, %88 ] ; [#uses=1] + %95 = load %struct.LexState** %1, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.LexState* %95, i32 0, i32 0 ; [#uses=1] + store i32 %94, i32* %96, align 4 + br label %54 + +; <label>:97 ; preds = %65 + %98 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4saveP8LexStatei(%struct.LexState* %98, i32 0) + %99 = load %struct.LexState** %1, align 4 ; [#uses=1] + %100 = load %struct.LexState** %1, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.LexState* %100, i32 0, i32 10 ; [#uses=1] + %102 = load i8* %101, align 1 ; [#uses=1] + call void @_Z11buffreplaceP8LexStatecc(%struct.LexState* %99, i8 signext 46, i8 signext %102) + %103 = load %struct.LexState** %1, align 4 ; [#uses=1] + %104 = getelementptr inbounds %struct.LexState* %103, i32 0, i32 8 ; [#uses=1] + %105 = load %struct.Mbuffer** %104, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.Mbuffer* %105, i32 0, i32 0 ; [#uses=1] + %107 = load i8** %106, align 4 ; [#uses=1] + %108 = load %union.anon** %2, align 4 ; [#uses=1] + %109 = getelementptr inbounds %union.anon* %108, i32 0, i32 0 ; [#uses=1] + %110 = call i32 @_Z10luaO_str2dPKcPd(i8* %107, double* %109) ; [#uses=1] + %111 = icmp ne i32 %110, 0 ; [#uses=1] + br i1 %111, label %115, label %112 + +; <label>:112 ; preds = %97 + %113 = load %struct.LexState** %1, align 4 ; [#uses=1] + %114 = load %union.anon** %2, align 4 ; [#uses=1] + call void @_Z11trydecpointP8LexStateP7SemInfo(%struct.LexState* %113, %union.anon* %114) + br label %115 + +; <label>:115 ; preds = %112, %97 + ret void +} + +; [#uses=4] +declare i32 @isspace(i32) nounwind + +; [#uses=2] +declare i32 @isalpha(i32) nounwind + +; [#uses=3] +declare i32 @isalnum(i32) nounwind + +; [#uses=3] +define internal void @_Z11buffreplaceP8LexStatecc(%struct.LexState* %ls, i8 signext %from, i8 signext %to) nounwind { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca i8, align 1 ; [#uses=2] + %3 = alloca i8, align 1 ; [#uses=2] + %n = alloca i32, align 4 ; [#uses=5] + %p = alloca i8*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i8 %from, i8* %2, align 1 + store i8 %to, i8* %3, align 1 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 8 ; [#uses=1] + %6 = load %struct.Mbuffer** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Mbuffer* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + store i32 %8, i32* %n, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 8 ; [#uses=1] + %11 = load %struct.Mbuffer** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.Mbuffer* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i8** %12, align 4 ; [#uses=1] + store i8* %13, i8** %p, align 4 + br label %14 + +; <label>:14 ; preds = %32, %0 + %15 = load i32* %n, align 4 ; [#uses=2] + %16 = add i32 %15, -1 ; [#uses=1] + store i32 %16, i32* %n, align 4 + %17 = icmp ne i32 %15, 0 ; [#uses=1] + br i1 %17, label %18, label %33 + +; <label>:18 ; preds = %14 + %19 = load i32* %n, align 4 ; [#uses=1] + %20 = load i8** %p, align 4 ; [#uses=1] + %21 = getelementptr inbounds i8* %20, i32 %19 ; [#uses=1] + %22 = load i8* %21 ; [#uses=1] + %23 = sext i8 %22 to i32 ; [#uses=1] + %24 = load i8* %2, align 1 ; [#uses=1] + %25 = sext i8 %24 to i32 ; [#uses=1] + %26 = icmp eq i32 %23, %25 ; [#uses=1] + br i1 %26, label %27, label %32 + +; <label>:27 ; preds = %18 + %28 = load i8* %3, align 1 ; [#uses=1] + %29 = load i32* %n, align 4 ; [#uses=1] + %30 = load i8** %p, align 4 ; [#uses=1] + %31 = getelementptr inbounds i8* %30, i32 %29 ; [#uses=1] + store i8 %28, i8* %31 + br label %32 + +; <label>:32 ; preds = %27, %18 + br label %14 + +; <label>:33 ; preds = %14 + ret void +} + +; [#uses=1] +define internal void @_Z11trydecpointP8LexStateP7SemInfo(%struct.LexState* %ls, %union.anon* %seminfo) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=9] + %2 = alloca %union.anon*, align 4 ; [#uses=2] + %cv = alloca %struct.lconv*, align 4 ; [#uses=3] + %old = alloca i8, align 1 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.anon* %seminfo, %union.anon** %2, align 4 + %3 = call %struct.lconv* @localeconv() nounwind ; [#uses=1] + store %struct.lconv* %3, %struct.lconv** %cv, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 10 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + store i8 %6, i8* %old, align 1 + %7 = load %struct.lconv** %cv, align 4 ; [#uses=1] + %8 = icmp ne %struct.lconv* %7, null ; [#uses=1] + br i1 %8, label %9, label %15 + +; <label>:9 ; preds = %0 + %10 = load %struct.lconv** %cv, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lconv* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i8** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds i8* %12, i32 0 ; [#uses=1] + %14 = load i8* %13 ; [#uses=1] + br label %16 + +; <label>:15 ; preds = %0 + br label %16 + +; <label>:16 ; preds = %15, %9 + %17 = phi i8 [ %14, %9 ], [ 46, %15 ] ; [#uses=1] + %18 = load %struct.LexState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.LexState* %18, i32 0, i32 10 ; [#uses=1] + store i8 %17, i8* %19, align 1 + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = load i8* %old, align 1 ; [#uses=1] + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 10 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + call void @_Z11buffreplaceP8LexStatecc(%struct.LexState* %20, i8 signext %21, i8 signext %24) + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 8 ; [#uses=1] + %27 = load %struct.Mbuffer** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.Mbuffer* %27, i32 0, i32 0 ; [#uses=1] + %29 = load i8** %28, align 4 ; [#uses=1] + %30 = load %union.anon** %2, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = call i32 @_Z10luaO_str2dPKcPd(i8* %29, double* %31) ; [#uses=1] + %33 = icmp ne i32 %32, 0 ; [#uses=1] + br i1 %33, label %40, label %34 + +; <label>:34 ; preds = %16 + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + %36 = load %struct.LexState** %1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.LexState* %36, i32 0, i32 10 ; [#uses=1] + %38 = load i8* %37, align 1 ; [#uses=1] + call void @_Z11buffreplaceP8LexStatecc(%struct.LexState* %35, i8 signext %38, i8 signext 46) + %39 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %39, i8* getelementptr inbounds ([17 x i8]* @.str39, i32 0, i32 0), i32 284) + br label %40 + +; <label>:40 ; preds = %34, %16 + ret void +} + +; [#uses=1] +declare %struct.lconv* @localeconv() nounwind + +; [#uses=6] +define hidden i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %L, i8* %block, i32* %size, i32 %size_elems, i32 %limit, i8* %errormsg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32*, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=4] + %5 = alloca i32, align 4 ; [#uses=4] + %6 = alloca i8*, align 4 ; [#uses=2] + %newblock = alloca i8*, align 4 ; [#uses=2] + %newsize = alloca i32, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %block, i8** %2, align 4 + store i32* %size, i32** %3, align 4 + store i32 %size_elems, i32* %4, align 4 + store i32 %limit, i32* %5, align 4 + store i8* %errormsg, i8** %6, align 4 + %7 = load i32** %3, align 4 ; [#uses=1] + %8 = load i32* %7 ; [#uses=1] + %9 = load i32* %5, align 4 ; [#uses=1] + %10 = sdiv i32 %9, 2 ; [#uses=1] + %11 = icmp sge i32 %8, %10 ; [#uses=1] + br i1 %11, label %12, label %22 + +; <label>:12 ; preds = %0 + %13 = load i32** %3, align 4 ; [#uses=1] + %14 = load i32* %13 ; [#uses=1] + %15 = load i32* %5, align 4 ; [#uses=1] + %16 = icmp sge i32 %14, %15 ; [#uses=1] + br i1 %16, label %17, label %20 + +; <label>:17 ; preds = %12 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %6, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %18, i8* %19) + br label %20 + +; <label>:20 ; preds = %17, %12 + %21 = load i32* %5, align 4 ; [#uses=1] + store i32 %21, i32* %newsize, align 4 + br label %30 + +; <label>:22 ; preds = %0 + %23 = load i32** %3, align 4 ; [#uses=1] + %24 = load i32* %23 ; [#uses=1] + %25 = mul nsw i32 %24, 2 ; [#uses=1] + store i32 %25, i32* %newsize, align 4 + %26 = load i32* %newsize, align 4 ; [#uses=1] + %27 = icmp slt i32 %26, 4 ; [#uses=1] + br i1 %27, label %28, label %29 + +; <label>:28 ; preds = %22 + store i32 4, i32* %newsize, align 4 + br label %29 + +; <label>:29 ; preds = %28, %22 + br label %30 + +; <label>:30 ; preds = %29, %20 + %31 = load i32* %newsize, align 4 ; [#uses=1] + %32 = add nsw i32 %31, 1 ; [#uses=1] + %33 = load i32* %4, align 4 ; [#uses=1] + %34 = udiv i32 -3, %33 ; [#uses=1] + %35 = icmp ule i32 %32, %34 ; [#uses=1] + br i1 %35, label %36, label %47 + +; <label>:36 ; preds = %30 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = load i8** %2, align 4 ; [#uses=1] + %39 = load i32** %3, align 4 ; [#uses=1] + %40 = load i32* %39 ; [#uses=1] + %41 = load i32* %4, align 4 ; [#uses=1] + %42 = mul i32 %40, %41 ; [#uses=1] + %43 = load i32* %newsize, align 4 ; [#uses=1] + %44 = load i32* %4, align 4 ; [#uses=1] + %45 = mul i32 %43, %44 ; [#uses=1] + %46 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %37, i8* %38, i32 %42, i32 %45) ; [#uses=1] + br label %50 + +; <label>:47 ; preds = %30 + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %48) ; [#uses=1] + br label %50 + +; <label>:50 ; preds = %47, %36 + %51 = phi i8* [ %46, %36 ], [ %49, %47 ] ; [#uses=1] + store i8* %51, i8** %newblock, align 4 + %52 = load i32* %newsize, align 4 ; [#uses=1] + %53 = load i32** %3, align 4 ; [#uses=1] + store i32 %52, i32* %53 + %54 = load i8** %newblock, align 4 ; [#uses=1] + ret i8* %54 +} + +; [#uses=56] +define hidden i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %L, i8* %block, i32 %osize, i32 %nsize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=4] + %g = alloca %struct.global_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %block, i8** %2, align 4 + store i32 %osize, i32* %3, align 4 + store i32 %nsize, i32* %4, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 6 ; [#uses=1] + %7 = load %struct.global_State** %6, align 4 ; [#uses=1] + store %struct.global_State* %7, %struct.global_State** %g, align 4 + %8 = load %struct.global_State** %g, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.global_State* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i8* (i8*, i8*, i32, i32)** %9, align 4 ; [#uses=1] + %11 = load %struct.global_State** %g, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.global_State* %11, i32 0, i32 2 ; [#uses=1] + %13 = load i8** %12, align 4 ; [#uses=1] + %14 = load i8** %2, align 4 ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = load i32* %4, align 4 ; [#uses=1] + %17 = call i8* %10(i8* %13, i8* %14, i32 %15, i32 %16) ; [#uses=1] + store i8* %17, i8** %2, align 4 + %18 = load i8** %2, align 4 ; [#uses=1] + %19 = icmp eq i8* %18, null ; [#uses=1] + br i1 %19, label %20, label %25 + +; <label>:20 ; preds = %0 + %21 = load i32* %4, align 4 ; [#uses=1] + %22 = icmp ugt i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %25 + +; <label>:23 ; preds = %20 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %24, i32 4) + br label %25 + +; <label>:25 ; preds = %23, %20, %0 + %26 = load %struct.global_State** %g, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.global_State* %26, i32 0, i32 14 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = load i32* %3, align 4 ; [#uses=1] + %30 = sub i32 %28, %29 ; [#uses=1] + %31 = load i32* %4, align 4 ; [#uses=1] + %32 = add i32 %30, %31 ; [#uses=1] + %33 = load %struct.global_State** %g, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.global_State* %33, i32 0, i32 14 ; [#uses=1] + store i32 %32, i32* %34, align 4 + %35 = load i8** %2, align 4 ; [#uses=1] + ret i8* %35 +} + +; [#uses=24] +define hidden i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %2, i8* getelementptr inbounds ([39 x i8]* @.str72, i32 0, i32 0)) + ret i8* null +} + +; [#uses=2] +define hidden i32 @_Z11luaO_int2fbj(i32 %x) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=7] + %e = alloca i32, align 4 ; [#uses=4] + store i32 %x, i32* %2, align 4 + store i32 0, i32* %e, align 4 + br label %3 + +; <label>:3 ; preds = %6, %0 + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = icmp uge i32 %4, 16 ; [#uses=1] + br i1 %5, label %6, label %12 + +; <label>:6 ; preds = %3 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = add i32 %7, 1 ; [#uses=1] + %9 = lshr i32 %8, 1 ; [#uses=1] + store i32 %9, i32* %2, align 4 + %10 = load i32* %e, align 4 ; [#uses=1] + %11 = add nsw i32 %10, 1 ; [#uses=1] + store i32 %11, i32* %e, align 4 + br label %3 + +; <label>:12 ; preds = %3 + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = icmp ult i32 %13, 8 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %12 + %16 = load i32* %2, align 4 ; [#uses=1] + store i32 %16, i32* %1 + br label %24 + +; <label>:17 ; preds = %12 + %18 = load i32* %e, align 4 ; [#uses=1] + %19 = add nsw i32 %18, 1 ; [#uses=1] + %20 = shl i32 %19, 3 ; [#uses=1] + %21 = load i32* %2, align 4 ; [#uses=1] + %22 = sub nsw i32 %21, 8 ; [#uses=1] + %23 = or i32 %20, %22 ; [#uses=1] + store i32 %23, i32* %1 + br label %24 + +; <label>:24 ; preds = %17, %15 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=2] +define hidden i32 @_Z11luaO_fb2inti(i32 %x) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=4] + %e = alloca i32, align 4 ; [#uses=3] + store i32 %x, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + %4 = ashr i32 %3, 3 ; [#uses=1] + %5 = and i32 %4, 31 ; [#uses=1] + store i32 %5, i32* %e, align 4 + %6 = load i32* %e, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load i32* %2, align 4 ; [#uses=1] + store i32 %9, i32* %1 + br label %17 + +; <label>:10 ; preds = %0 + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = and i32 %11, 7 ; [#uses=1] + %13 = add nsw i32 %12, 8 ; [#uses=1] + %14 = load i32* %e, align 4 ; [#uses=1] + %15 = sub nsw i32 %14, 1 ; [#uses=1] + %16 = shl i32 %13, %15 ; [#uses=1] + store i32 %16, i32* %1 + br label %17 + +; <label>:17 ; preds = %10, %8 + %18 = load i32* %1 ; [#uses=1] + ret i32 %18 +} + +; [#uses=2] +define hidden i32 @_Z9luaO_log2j(i32 %x) nounwind { + %1 = alloca i32, align 4 ; [#uses=5] + %l = alloca i32, align 4 ; [#uses=4] + store i32 %x, i32* %1, align 4 + store i32 -1, i32* %l, align 4 + br label %2 + +; <label>:2 ; preds = %5, %0 + %3 = load i32* %1, align 4 ; [#uses=1] + %4 = icmp uge i32 %3, 256 ; [#uses=1] + br i1 %4, label %5, label %10 + +; <label>:5 ; preds = %2 + %6 = load i32* %l, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 8 ; [#uses=1] + store i32 %7, i32* %l, align 4 + %8 = load i32* %1, align 4 ; [#uses=1] + %9 = lshr i32 %8, 8 ; [#uses=1] + store i32 %9, i32* %1, align 4 + br label %2 + +; <label>:10 ; preds = %2 + %11 = load i32* %l, align 4 ; [#uses=1] + %12 = load i32* %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds [256 x i8]* @_ZZ9luaO_log2jE5log_2, i32 0, i32 %12 ; [#uses=1] + %14 = load i8* %13 ; [#uses=1] + %15 = zext i8 %14 to i32 ; [#uses=1] + %16 = add nsw i32 %11, %15 ; [#uses=1] + ret i32 %16 +} + +; [#uses=5] +define hidden i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %t1, %struct.lua_TValue* %t2) nounwind { + %1 = alloca i32, align 4 ; [#uses=7] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + store %struct.lua_TValue* %t1, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %t2, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_TValue* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp ne i32 %6, %9 ; [#uses=1] + br i1 %10, label %11, label %12 + +; <label>:11 ; preds = %0 + store i32 0, i32* %1 + br label %67 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 1 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + switch i32 %15, label %54 [ + i32 0, label %16 + i32 3, label %17 + i32 1, label %28 + i32 2, label %41 + ] + +; <label>:16 ; preds = %12 + store i32 1, i32* %1 + br label %67 + +; <label>:17 ; preds = %12 + %18 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %union.anon* %19, i32 0, i32 0 ; [#uses=1] + %21 = load double* %20, align 4 ; [#uses=1] + %22 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 0 ; [#uses=1] + %24 = getelementptr inbounds %union.anon* %23, i32 0, i32 0 ; [#uses=1] + %25 = load double* %24, align 4 ; [#uses=1] + %26 = fcmp oeq double %21, %25 ; [#uses=1] + %27 = zext i1 %26 to i32 ; [#uses=1] + store i32 %27, i32* %1 + br label %67 + +; <label>:28 ; preds = %12 + %29 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast double* %31 to i32* ; [#uses=1] + %33 = load i32* %32, align 4 ; [#uses=1] + %34 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 0 ; [#uses=1] + %36 = getelementptr inbounds %union.anon* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast double* %36 to i32* ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + %39 = icmp eq i32 %33, %38 ; [#uses=1] + %40 = zext i1 %39 to i32 ; [#uses=1] + store i32 %40, i32* %1 + br label %67 + +; <label>:41 ; preds = %12 + %42 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 0 ; [#uses=1] + %44 = getelementptr inbounds %union.anon* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast double* %44 to i8** ; [#uses=1] + %46 = load i8** %45, align 4 ; [#uses=1] + %47 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_TValue* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %union.anon* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast double* %49 to i8** ; [#uses=1] + %51 = load i8** %50, align 4 ; [#uses=1] + %52 = icmp eq i8* %46, %51 ; [#uses=1] + %53 = zext i1 %52 to i32 ; [#uses=1] + store i32 %53, i32* %1 + br label %67 + +; <label>:54 ; preds = %12 + %55 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_TValue* %55, i32 0, i32 0 ; [#uses=1] + %57 = getelementptr inbounds %union.anon* %56, i32 0, i32 0 ; [#uses=1] + %58 = bitcast double* %57 to %union.GCObject** ; [#uses=1] + %59 = load %union.GCObject** %58, align 4 ; [#uses=1] + %60 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 0 ; [#uses=1] + %62 = getelementptr inbounds %union.anon* %61, i32 0, i32 0 ; [#uses=1] + %63 = bitcast double* %62 to %union.GCObject** ; [#uses=1] + %64 = load %union.GCObject** %63, align 4 ; [#uses=1] + %65 = icmp eq %union.GCObject* %59, %64 ; [#uses=1] + %66 = zext i1 %65 to i32 ; [#uses=1] + store i32 %66, i32* %1 + br label %67 + +; <label>:67 ; preds = %54, %41, %28, %17, %16, %11 + %68 = load i32* %1 ; [#uses=1] + ret i32 %68 +} + +; [#uses=3] +define hidden i32 @_Z10luaO_str2dPKcPd(i8* %s, double* %result) nounwind { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=4] + %3 = alloca double*, align 4 ; [#uses=3] + %endptr = alloca i8*, align 4 ; [#uses=10] + store i8* %s, i8** %2, align 4 + store double* %result, double** %3, align 4 + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = call double @strtod(i8* %4, i8** %endptr) nounwind ; [#uses=1] + %6 = load double** %3, align 4 ; [#uses=1] + store double %5, double* %6 + %7 = load i8** %endptr, align 4 ; [#uses=1] + %8 = load i8** %2, align 4 ; [#uses=1] + %9 = icmp eq i8* %7, %8 ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + store i32 0, i32* %1 + br label %49 + +; <label>:11 ; preds = %0 + %12 = load i8** %endptr, align 4 ; [#uses=1] + %13 = load i8* %12 ; [#uses=1] + %14 = sext i8 %13 to i32 ; [#uses=1] + %15 = icmp eq i32 %14, 120 ; [#uses=1] + br i1 %15, label %21, label %16 + +; <label>:16 ; preds = %11 + %17 = load i8** %endptr, align 4 ; [#uses=1] + %18 = load i8* %17 ; [#uses=1] + %19 = sext i8 %18 to i32 ; [#uses=1] + %20 = icmp eq i32 %19, 88 ; [#uses=1] + br i1 %20, label %21, label %26 + +; <label>:21 ; preds = %16, %11 + %22 = load i8** %2, align 4 ; [#uses=1] + %23 = call i32 @strtoul(i8* %22, i8** %endptr, i32 16) nounwind ; [#uses=1] + %24 = uitofp i32 %23 to double ; [#uses=1] + %25 = load double** %3, align 4 ; [#uses=1] + store double %24, double* %25 + br label %26 + +; <label>:26 ; preds = %21, %16 + %27 = load i8** %endptr, align 4 ; [#uses=1] + %28 = load i8* %27 ; [#uses=1] + %29 = sext i8 %28 to i32 ; [#uses=1] + %30 = icmp eq i32 %29, 0 ; [#uses=1] + br i1 %30, label %31, label %32 + +; <label>:31 ; preds = %26 + store i32 1, i32* %1 + br label %49 + +; <label>:32 ; preds = %26 + br label %33 + +; <label>:33 ; preds = %39, %32 + %34 = load i8** %endptr, align 4 ; [#uses=1] + %35 = load i8* %34 ; [#uses=1] + %36 = zext i8 %35 to i32 ; [#uses=1] + %37 = call i32 @isspace(i32 %36) nounwind ; [#uses=1] + %38 = icmp ne i32 %37, 0 ; [#uses=1] + br i1 %38, label %39, label %42 + +; <label>:39 ; preds = %33 + %40 = load i8** %endptr, align 4 ; [#uses=1] + %41 = getelementptr inbounds i8* %40, i32 1 ; [#uses=1] + store i8* %41, i8** %endptr, align 4 + br label %33 + +; <label>:42 ; preds = %33 + %43 = load i8** %endptr, align 4 ; [#uses=1] + %44 = load i8* %43 ; [#uses=1] + %45 = sext i8 %44 to i32 ; [#uses=1] + %46 = icmp ne i32 %45, 0 ; [#uses=1] + br i1 %46, label %47, label %48 + +; <label>:47 ; preds = %42 + store i32 0, i32* %1 + br label %49 + +; <label>:48 ; preds = %42 + store i32 1, i32* %1 + br label %49 + +; <label>:49 ; preds = %48, %47, %31, %10 + %50 = load i32* %1 ; [#uses=1] + ret i32 %50 +} + +; [#uses=1] +declare double @strtod(i8*, i8**) nounwind + +; [#uses=2] +declare i32 @strtoul(i8*, i8**, i32) nounwind + +; [#uses=4] +define hidden i8* @_Z17luaO_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %L, i8* %fmt, i8* %argp) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=29] + %2 = alloca i8*, align 4 ; [#uses=6] + %3 = alloca i8*, align 4 ; [#uses=11] + %n = alloca i32, align 4 ; [#uses=5] + %e = alloca i8*, align 4 ; [#uses=6] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %s = alloca i8*, align 4 ; [#uses=4] + %buff = alloca [2 x i8], align 1 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %buff3 = alloca [24 x i8], align 1 ; [#uses=2] + %buff4 = alloca [3 x i8], align 1 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + store i8* %argp, i8** %3, align 4 + store i32 1, i32* %n, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %4, i8* getelementptr inbounds ([1 x i8]* @.str77, i32 0, i32 0)) + br label %5 + +; <label>:5 ; preds = %162, %0 + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = call i8* @strchr(i8* %6, i32 37) ; [#uses=1] + store i8* %7, i8** %e, align 4 + %8 = load i8** %e, align 4 ; [#uses=1] + %9 = icmp eq i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %5 + br label %167 + +; <label>:11 ; preds = %5 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %13, align 4 ; [#uses=1] + store %struct.lua_TValue* %14, %struct.lua_TValue** %i_o, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = load i8** %2, align 4 ; [#uses=1] + %17 = load i8** %e, align 4 ; [#uses=1] + %18 = load i8** %2, align 4 ; [#uses=1] + %19 = ptrtoint i8* %17 to i32 ; [#uses=1] + %20 = ptrtoint i8* %18 to i32 ; [#uses=1] + %21 = sub i32 %19, %20 ; [#uses=1] + %22 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %15, i8* %16, i32 %21) ; [#uses=1] + %23 = bitcast %union.TString* %22 to %union.GCObject* ; [#uses=1] + %24 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %union.anon* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast double* %26 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %23, %union.GCObject** %27, align 4 + %28 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 9 ; [#uses=1] + %32 = load %struct.lua_TValue** %31, align 4 ; [#uses=1] + %33 = bitcast %struct.lua_TValue* %32 to i8* ; [#uses=1] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 4 ; [#uses=1] + %36 = load %struct.lua_TValue** %35, align 4 ; [#uses=1] + %37 = bitcast %struct.lua_TValue* %36 to i8* ; [#uses=1] + %38 = ptrtoint i8* %33 to i32 ; [#uses=1] + %39 = ptrtoint i8* %37 to i32 ; [#uses=1] + %40 = sub i32 %38, %39 ; [#uses=1] + %41 = icmp sle i32 %40, 12 ; [#uses=1] + br i1 %41, label %42, label %44 + +; <label>:42 ; preds = %11 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %43, i32 1) + br label %45 + +; <label>:44 ; preds = %11 + br label %45 + +; <label>:45 ; preds = %44, %42 + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_State* %46, i32 0, i32 4 ; [#uses=2] + %48 = load %struct.lua_TValue** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 1 ; [#uses=1] + store %struct.lua_TValue* %49, %struct.lua_TValue** %47, align 4 + %50 = load i8** %e, align 4 ; [#uses=1] + %51 = getelementptr inbounds i8* %50, i32 1 ; [#uses=1] + %52 = load i8* %51 ; [#uses=1] + %53 = sext i8 %52 to i32 ; [#uses=1] + switch i32 %53, label %153 [ + i32 115, label %54 + i32 99, label %65 + i32 100, label %75 + i32 102, label %109 + i32 112, label %142 + i32 37, label %151 + ] + +; <label>:54 ; preds = %45 + %55 = load i8** %3 ; [#uses=2] + %56 = bitcast i8* %55 to i8** ; [#uses=1] + %57 = getelementptr i8* %55, i32 4 ; [#uses=1] + store i8* %57, i8** %3 + %58 = load i8** %56 ; [#uses=1] + store i8* %58, i8** %s, align 4 + %59 = load i8** %s, align 4 ; [#uses=1] + %60 = icmp eq i8* %59, null ; [#uses=1] + br i1 %60, label %61, label %62 + +; <label>:61 ; preds = %54 + store i8* getelementptr inbounds ([7 x i8]* @.str178, i32 0, i32 0), i8** %s, align 4 + br label %62 + +; <label>:62 ; preds = %61, %54 + %63 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %64 = load i8** %s, align 4 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %63, i8* %64) + br label %162 + +; <label>:65 ; preds = %45 + %66 = load i8** %3 ; [#uses=2] + %67 = bitcast i8* %66 to i32* ; [#uses=1] + %68 = getelementptr i8* %66, i32 4 ; [#uses=1] + store i8* %68, i8** %3 + %69 = load i32* %67 ; [#uses=1] + %70 = trunc i32 %69 to i8 ; [#uses=1] + %71 = getelementptr inbounds [2 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + store i8 %70, i8* %71 + %72 = getelementptr inbounds [2 x i8]* %buff, i32 0, i32 1 ; [#uses=1] + store i8 0, i8* %72 + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %74 = getelementptr inbounds [2 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %73, i8* %74) + br label %162 + +; <label>:75 ; preds = %45 + %76 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_State* %76, i32 0, i32 4 ; [#uses=1] + %78 = load %struct.lua_TValue** %77, align 4 ; [#uses=1] + store %struct.lua_TValue* %78, %struct.lua_TValue** %i_o1, align 4 + %79 = load i8** %3 ; [#uses=2] + %80 = bitcast i8* %79 to i32* ; [#uses=1] + %81 = getelementptr i8* %79, i32 4 ; [#uses=1] + store i8* %81, i8** %3 + %82 = load i32* %80 ; [#uses=1] + %83 = sitofp i32 %82 to double ; [#uses=1] + %84 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_TValue* %84, i32 0, i32 0 ; [#uses=1] + %86 = getelementptr inbounds %union.anon* %85, i32 0, i32 0 ; [#uses=1] + store double %83, double* %86, align 4 + %87 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %88, align 4 + %89 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.lua_State* %89, i32 0, i32 9 ; [#uses=1] + %91 = load %struct.lua_TValue** %90, align 4 ; [#uses=1] + %92 = bitcast %struct.lua_TValue* %91 to i8* ; [#uses=1] + %93 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.lua_State* %93, i32 0, i32 4 ; [#uses=1] + %95 = load %struct.lua_TValue** %94, align 4 ; [#uses=1] + %96 = bitcast %struct.lua_TValue* %95 to i8* ; [#uses=1] + %97 = ptrtoint i8* %92 to i32 ; [#uses=1] + %98 = ptrtoint i8* %96 to i32 ; [#uses=1] + %99 = sub i32 %97, %98 ; [#uses=1] + %100 = icmp sle i32 %99, 12 ; [#uses=1] + br i1 %100, label %101, label %103 + +; <label>:101 ; preds = %75 + %102 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %102, i32 1) + br label %104 + +; <label>:103 ; preds = %75 + br label %104 + +; <label>:104 ; preds = %103, %101 + %105 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.lua_State* %105, i32 0, i32 4 ; [#uses=2] + %107 = load %struct.lua_TValue** %106, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.lua_TValue* %107, i32 1 ; [#uses=1] + store %struct.lua_TValue* %108, %struct.lua_TValue** %106, align 4 + br label %162 + +; <label>:109 ; preds = %45 + %110 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.lua_State* %110, i32 0, i32 4 ; [#uses=1] + %112 = load %struct.lua_TValue** %111, align 4 ; [#uses=1] + store %struct.lua_TValue* %112, %struct.lua_TValue** %i_o2, align 4 + %113 = load i8** %3 ; [#uses=2] + %114 = bitcast i8* %113 to double* ; [#uses=1] + %115 = getelementptr i8* %113, i32 8 ; [#uses=1] + store i8* %115, i8** %3 + %116 = load double* %114 ; [#uses=1] + %117 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %118 = getelementptr inbounds %struct.lua_TValue* %117, i32 0, i32 0 ; [#uses=1] + %119 = getelementptr inbounds %union.anon* %118, i32 0, i32 0 ; [#uses=1] + store double %116, double* %119, align 4 + %120 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_TValue* %120, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %121, align 4 + %122 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_State* %122, i32 0, i32 9 ; [#uses=1] + %124 = load %struct.lua_TValue** %123, align 4 ; [#uses=1] + %125 = bitcast %struct.lua_TValue* %124 to i8* ; [#uses=1] + %126 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %127 = getelementptr inbounds %struct.lua_State* %126, i32 0, i32 4 ; [#uses=1] + %128 = load %struct.lua_TValue** %127, align 4 ; [#uses=1] + %129 = bitcast %struct.lua_TValue* %128 to i8* ; [#uses=1] + %130 = ptrtoint i8* %125 to i32 ; [#uses=1] + %131 = ptrtoint i8* %129 to i32 ; [#uses=1] + %132 = sub i32 %130, %131 ; [#uses=1] + %133 = icmp sle i32 %132, 12 ; [#uses=1] + br i1 %133, label %134, label %136 + +; <label>:134 ; preds = %109 + %135 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %135, i32 1) + br label %137 + +; <label>:136 ; preds = %109 + br label %137 + +; <label>:137 ; preds = %136, %134 + %138 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.lua_State* %138, i32 0, i32 4 ; [#uses=2] + %140 = load %struct.lua_TValue** %139, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.lua_TValue* %140, i32 1 ; [#uses=1] + store %struct.lua_TValue* %141, %struct.lua_TValue** %139, align 4 + br label %162 + +; <label>:142 ; preds = %45 + %143 = getelementptr inbounds [24 x i8]* %buff3, i32 0, i32 0 ; [#uses=1] + %144 = load i8** %3 ; [#uses=2] + %145 = bitcast i8* %144 to i8** ; [#uses=1] + %146 = getelementptr i8* %144, i32 4 ; [#uses=1] + store i8* %146, i8** %3 + %147 = load i8** %145 ; [#uses=1] + %148 = call i32 (i8*, i8*, ...)* @sprintf(i8* %143, i8* getelementptr inbounds ([3 x i8]* @.str279, i32 0, i32 0), i8* %147) ; [#uses=0] + %149 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %150 = getelementptr inbounds [24 x i8]* %buff3, i32 0, i32 0 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %149, i8* %150) + br label %162 + +; <label>:151 ; preds = %45 + %152 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %152, i8* getelementptr inbounds ([2 x i8]* @.str380, i32 0, i32 0)) + br label %162 + +; <label>:153 ; preds = %45 + %154 = getelementptr inbounds [3 x i8]* %buff4, i32 0, i32 0 ; [#uses=1] + store i8 37, i8* %154 + %155 = load i8** %e, align 4 ; [#uses=1] + %156 = getelementptr inbounds i8* %155, i32 1 ; [#uses=1] + %157 = load i8* %156 ; [#uses=1] + %158 = getelementptr inbounds [3 x i8]* %buff4, i32 0, i32 1 ; [#uses=1] + store i8 %157, i8* %158 + %159 = getelementptr inbounds [3 x i8]* %buff4, i32 0, i32 2 ; [#uses=1] + store i8 0, i8* %159 + %160 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %161 = getelementptr inbounds [3 x i8]* %buff4, i32 0, i32 0 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %160, i8* %161) + br label %162 + +; <label>:162 ; preds = %153, %151, %142, %137, %104, %65, %62 + %163 = load i32* %n, align 4 ; [#uses=1] + %164 = add nsw i32 %163, 2 ; [#uses=1] + store i32 %164, i32* %n, align 4 + %165 = load i8** %e, align 4 ; [#uses=1] + %166 = getelementptr inbounds i8* %165, i32 2 ; [#uses=1] + store i8* %166, i8** %2, align 4 + br label %5 + +; <label>:167 ; preds = %10 + %168 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %169 = load i8** %2, align 4 ; [#uses=1] + call void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %168, i8* %169) + %170 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %171 = load i32* %n, align 4 ; [#uses=1] + %172 = add nsw i32 %171, 1 ; [#uses=1] + %173 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %174 = getelementptr inbounds %struct.lua_State* %173, i32 0, i32 4 ; [#uses=1] + %175 = load %struct.lua_TValue** %174, align 4 ; [#uses=1] + %176 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %177 = getelementptr inbounds %struct.lua_State* %176, i32 0, i32 5 ; [#uses=1] + %178 = load %struct.lua_TValue** %177, align 4 ; [#uses=1] + %179 = ptrtoint %struct.lua_TValue* %175 to i32 ; [#uses=1] + %180 = ptrtoint %struct.lua_TValue* %178 to i32 ; [#uses=1] + %181 = sub i32 %179, %180 ; [#uses=1] + %182 = sdiv exact i32 %181, 12 ; [#uses=1] + %183 = sub nsw i32 %182, 1 ; [#uses=1] + call void @_Z11luaV_concatP9lua_Stateii(%struct.lua_State* %170, i32 %172, i32 %183) + %184 = load i32* %n, align 4 ; [#uses=1] + %185 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %186 = getelementptr inbounds %struct.lua_State* %185, i32 0, i32 4 ; [#uses=2] + %187 = load %struct.lua_TValue** %186, align 4 ; [#uses=1] + %188 = sub i32 0, %184 ; [#uses=1] + %189 = getelementptr inbounds %struct.lua_TValue* %187, i32 %188 ; [#uses=1] + store %struct.lua_TValue* %189, %struct.lua_TValue** %186, align 4 + %190 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %191 = getelementptr inbounds %struct.lua_State* %190, i32 0, i32 4 ; [#uses=1] + %192 = load %struct.lua_TValue** %191, align 4 ; [#uses=1] + %193 = getelementptr inbounds %struct.lua_TValue* %192, i32 -1 ; [#uses=1] + %194 = getelementptr inbounds %struct.lua_TValue* %193, i32 0, i32 0 ; [#uses=1] + %195 = getelementptr inbounds %union.anon* %194, i32 0, i32 0 ; [#uses=1] + %196 = bitcast double* %195 to %union.GCObject** ; [#uses=1] + %197 = load %union.GCObject** %196, align 4 ; [#uses=1] + %198 = getelementptr inbounds %union.GCObject* %197, i32 0, i32 0 ; [#uses=1] + %199 = bitcast %struct.lua_State* %198 to %union.TString* ; [#uses=1] + %200 = getelementptr inbounds %union.TString* %199, i32 1 ; [#uses=1] + %201 = bitcast %union.TString* %200 to i8* ; [#uses=1] + ret i8* %201 +} + +; [#uses=7] +define internal void @_Z7pushstrP9lua_StatePKc(%struct.lua_State* %L, i8* %str) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i8*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %str, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %5, %struct.lua_TValue** %i_o, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + %8 = load i8** %2, align 4 ; [#uses=1] + %9 = call i32 @strlen(i8* %8) ; [#uses=1] + %10 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %6, i8* %7, i32 %9) ; [#uses=1] + %11 = bitcast %union.TString* %10 to %union.GCObject* ; [#uses=1] + %12 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds %union.anon* %13, i32 0, i32 0 ; [#uses=1] + %15 = bitcast double* %14 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %11, %union.GCObject** %15, align 4 + %16 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %17, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 9 ; [#uses=1] + %20 = load %struct.lua_TValue** %19, align 4 ; [#uses=1] + %21 = bitcast %struct.lua_TValue* %20 to i8* ; [#uses=1] + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = bitcast %struct.lua_TValue* %24 to i8* ; [#uses=1] + %26 = ptrtoint i8* %21 to i32 ; [#uses=1] + %27 = ptrtoint i8* %25 to i32 ; [#uses=1] + %28 = sub i32 %26, %27 ; [#uses=1] + %29 = icmp sle i32 %28, 12 ; [#uses=1] + br i1 %29, label %30, label %32 + +; <label>:30 ; preds = %0 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %31, i32 1) + br label %33 + +; <label>:32 ; preds = %0 + br label %33 + +; <label>:33 ; preds = %32, %30 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 4 ; [#uses=2] + %36 = load %struct.lua_TValue** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 1 ; [#uses=1] + store %struct.lua_TValue* %37, %struct.lua_TValue** %35, align 4 + ret void +} + +; [#uses=7] +declare i32 @sprintf(i8*, i8*, ...) nounwind + +; [#uses=10] +define hidden i8* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %L, i8* %fmt, ...) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=2] + %msg = alloca i8*, align 4 ; [#uses=2] + %argp = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + %3 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_start(i8* %3) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = load i8** %argp, align 4 ; [#uses=1] + %7 = call i8* @_Z17luaO_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %4, i8* %5, i8* %6) ; [#uses=1] + store i8* %7, i8** %msg, align 4 + %8 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_end(i8* %8) + %9 = load i8** %msg, align 4 ; [#uses=1] + ret i8* %9 +} + +; [#uses=4] +define hidden void @_Z12luaO_chunkidPcPKcj(i8* %out, i8* %source, i32 %bufflen) nounwind { + %1 = alloca i8*, align 4 ; [#uses=11] + %2 = alloca i8*, align 4 ; [#uses=14] + %3 = alloca i32, align 4 ; [#uses=11] + %l = alloca i32, align 4 ; [#uses=3] + %len = alloca i32, align 4 ; [#uses=5] + store i8* %out, i8** %1, align 4 + store i8* %source, i8** %2, align 4 + store i32 %bufflen, i32* %3, align 4 + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = load i8* %4 ; [#uses=1] + %6 = sext i8 %5 to i32 ; [#uses=1] + %7 = icmp eq i32 %6, 61 ; [#uses=1] + br i1 %7, label %8, label %18 + +; <label>:8 ; preds = %0 + %9 = load i8** %1, align 4 ; [#uses=1] + %10 = load i8** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] + %12 = load i32* %3, align 4 ; [#uses=1] + %13 = call i8* @strncpy(i8* %9, i8* %11, i32 %12) ; [#uses=0] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = sub i32 %14, 1 ; [#uses=1] + %16 = load i8** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds i8* %16, i32 %15 ; [#uses=1] + store i8 0, i8* %17 + br label %81 + +; <label>:18 ; preds = %0 + %19 = load i8** %2, align 4 ; [#uses=1] + %20 = load i8* %19 ; [#uses=1] + %21 = sext i8 %20 to i32 ; [#uses=1] + %22 = icmp eq i32 %21, 64 ; [#uses=1] + br i1 %22, label %23, label %47 + +; <label>:23 ; preds = %18 + %24 = load i8** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds i8* %24, i32 1 ; [#uses=1] + store i8* %25, i8** %2, align 4 + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = sub i32 %26, 8 ; [#uses=1] + store i32 %27, i32* %3, align 4 + %28 = load i8** %2, align 4 ; [#uses=1] + %29 = call i32 @strlen(i8* %28) ; [#uses=1] + store i32 %29, i32* %l, align 4 + %30 = load i8** %1, align 4 ; [#uses=1] + %31 = call i8* @strcpy(i8* %30, i8* getelementptr inbounds ([1 x i8]* @.str77, i32 0, i32 0)) ; [#uses=0] + %32 = load i32* %l, align 4 ; [#uses=1] + %33 = load i32* %3, align 4 ; [#uses=1] + %34 = icmp ugt i32 %32, %33 ; [#uses=1] + br i1 %34, label %35, label %43 + +; <label>:35 ; preds = %23 + %36 = load i32* %l, align 4 ; [#uses=1] + %37 = load i32* %3, align 4 ; [#uses=1] + %38 = sub i32 %36, %37 ; [#uses=1] + %39 = load i8** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds i8* %39, i32 %38 ; [#uses=1] + store i8* %40, i8** %2, align 4 + %41 = load i8** %1, align 4 ; [#uses=1] + %42 = call i8* @strcat(i8* %41, i8* getelementptr inbounds ([4 x i8]* @.str481, i32 0, i32 0)) ; [#uses=0] + br label %43 + +; <label>:43 ; preds = %35, %23 + %44 = load i8** %1, align 4 ; [#uses=1] + %45 = load i8** %2, align 4 ; [#uses=1] + %46 = call i8* @strcat(i8* %44, i8* %45) ; [#uses=0] + br label %80 + +; <label>:47 ; preds = %18 + %48 = load i8** %2, align 4 ; [#uses=1] + %49 = call i32 @strcspn(i8* %48, i8* getelementptr inbounds ([3 x i8]* @.str582, i32 0, i32 0)) ; [#uses=1] + store i32 %49, i32* %len, align 4 + %50 = load i32* %3, align 4 ; [#uses=1] + %51 = sub i32 %50, 17 ; [#uses=1] + store i32 %51, i32* %3, align 4 + %52 = load i32* %len, align 4 ; [#uses=1] + %53 = load i32* %3, align 4 ; [#uses=1] + %54 = icmp ugt i32 %52, %53 ; [#uses=1] + br i1 %54, label %55, label %57 + +; <label>:55 ; preds = %47 + %56 = load i32* %3, align 4 ; [#uses=1] + store i32 %56, i32* %len, align 4 + br label %57 + +; <label>:57 ; preds = %55, %47 + %58 = load i8** %1, align 4 ; [#uses=1] + %59 = call i8* @strcpy(i8* %58, i8* getelementptr inbounds ([10 x i8]* @.str683, i32 0, i32 0)) ; [#uses=0] + %60 = load i32* %len, align 4 ; [#uses=1] + %61 = load i8** %2, align 4 ; [#uses=1] + %62 = getelementptr inbounds i8* %61, i32 %60 ; [#uses=1] + %63 = load i8* %62 ; [#uses=1] + %64 = sext i8 %63 to i32 ; [#uses=1] + %65 = icmp ne i32 %64, 0 ; [#uses=1] + br i1 %65, label %66, label %73 + +; <label>:66 ; preds = %57 + %67 = load i8** %1, align 4 ; [#uses=1] + %68 = load i8** %2, align 4 ; [#uses=1] + %69 = load i32* %len, align 4 ; [#uses=1] + %70 = call i8* @strncat(i8* %67, i8* %68, i32 %69) ; [#uses=0] + %71 = load i8** %1, align 4 ; [#uses=1] + %72 = call i8* @strcat(i8* %71, i8* getelementptr inbounds ([4 x i8]* @.str481, i32 0, i32 0)) ; [#uses=0] + br label %77 + +; <label>:73 ; preds = %57 + %74 = load i8** %1, align 4 ; [#uses=1] + %75 = load i8** %2, align 4 ; [#uses=1] + %76 = call i8* @strcat(i8* %74, i8* %75) ; [#uses=0] + br label %77 + +; <label>:77 ; preds = %73, %66 + %78 = load i8** %1, align 4 ; [#uses=1] + %79 = call i8* @strcat(i8* %78, i8* getelementptr inbounds ([3 x i8]* @.str784, i32 0, i32 0)) ; [#uses=0] + br label %80 + +; <label>:80 ; preds = %77, %43 + br label %81 + +; <label>:81 ; preds = %80, %8 + ret void +} + +; [#uses=2] +declare i8* @strncpy(i8*, i8*, i32) nounwind + +; [#uses=3] +declare i8* @strcpy(i8*, i8*) nounwind + +; [#uses=5] +declare i8* @strcat(i8*, i8*) nounwind + +; [#uses=1] +declare i32 @strcspn(i8*, i8*) nounwind readonly + +; [#uses=1] +declare i8* @strncat(i8*, i8*, i32) nounwind + +; [#uses=1] +define hidden %struct.Proto* @_Z11luaY_parserP9lua_StateP3ZioP7MbufferPKc(%struct.lua_State* %L, %struct.Zio* %z, %struct.Mbuffer* %buff, i8* %name) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.Zio*, align 4 ; [#uses=2] + %3 = alloca %struct.Mbuffer*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=3] + %lexstate = alloca %struct.LexState, align 4 ; [#uses=7] + %funcstate = alloca %struct.FuncState, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Zio* %z, %struct.Zio** %2, align 4 + store %struct.Mbuffer* %buff, %struct.Mbuffer** %3, align 4 + store i8* %name, i8** %4, align 4 + %5 = load %struct.Mbuffer** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %lexstate, i32 0, i32 8 ; [#uses=1] + store %struct.Mbuffer* %5, %struct.Mbuffer** %6, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.Zio** %2, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i8** %4, align 4 ; [#uses=1] + %11 = load i8** %4, align 4 ; [#uses=1] + %12 = call i32 @strlen(i8* %11) ; [#uses=1] + %13 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %9, i8* %10, i32 %12) ; [#uses=1] + call void @_Z13luaX_setinputP9lua_StateP8LexStateP3ZioP7TString(%struct.lua_State* %7, %struct.LexState* %lexstate, %struct.Zio* %8, %union.TString* %13) + call void @_Z9open_funcP8LexStateP9FuncState(%struct.LexState* %lexstate, %struct.FuncState* %funcstate) + %14 = getelementptr inbounds %struct.FuncState* %funcstate, i32 0, i32 0 ; [#uses=1] + %15 = load %struct.Proto** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Proto* %15, i32 0, i32 21 ; [#uses=1] + store i8 2, i8* %16, align 1 + call void @_Z9luaX_nextP8LexState(%struct.LexState* %lexstate) + call void @_Z5chunkP8LexState(%struct.LexState* %lexstate) + call void @_Z5checkP8LexStatei(%struct.LexState* %lexstate, i32 287) + call void @_Z10close_funcP8LexState(%struct.LexState* %lexstate) + %17 = getelementptr inbounds %struct.FuncState* %funcstate, i32 0, i32 0 ; [#uses=1] + %18 = load %struct.Proto** %17, align 4 ; [#uses=1] + ret %struct.Proto* %18 +} + +; [#uses=2] +define internal void @_Z9open_funcP8LexStateP9FuncState(%struct.LexState* %ls, %struct.FuncState* %fs) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=17] + %L = alloca %struct.lua_State*, align 4 ; [#uses=14] + %f = alloca %struct.Proto*, align 4 ; [#uses=5] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.lua_State** %4, align 4 ; [#uses=1] + store %struct.lua_State* %5, %struct.lua_State** %L, align 4 + %6 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %7 = call %struct.Proto* @_Z13luaF_newprotoP9lua_State(%struct.lua_State* %6) ; [#uses=1] + store %struct.Proto* %7, %struct.Proto** %f, align 4 + %8 = load %struct.Proto** %f, align 4 ; [#uses=1] + %9 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 0 ; [#uses=1] + store %struct.Proto* %8, %struct.Proto** %10, align 4 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.LexState* %11, i32 0, i32 5 ; [#uses=1] + %13 = load %struct.FuncState** %12, align 4 ; [#uses=1] + %14 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 2 ; [#uses=1] + store %struct.FuncState* %13, %struct.FuncState** %15, align 4 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.FuncState* %17, i32 0, i32 3 ; [#uses=1] + store %struct.LexState* %16, %struct.LexState** %18, align 4 + %19 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %20 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.FuncState* %20, i32 0, i32 4 ; [#uses=1] + store %struct.lua_State* %19, %struct.lua_State** %21, align 4 + %22 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LexState* %23, i32 0, i32 5 ; [#uses=1] + store %struct.FuncState* %22, %struct.FuncState** %24, align 4 + %25 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.FuncState* %25, i32 0, i32 6 ; [#uses=1] + store i32 0, i32* %26, align 4 + %27 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.FuncState* %27, i32 0, i32 7 ; [#uses=1] + store i32 -1, i32* %28, align 4 + %29 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.FuncState* %29, i32 0, i32 8 ; [#uses=1] + store i32 -1, i32* %30, align 4 + %31 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.FuncState* %31, i32 0, i32 9 ; [#uses=1] + store i32 0, i32* %32, align 4 + %33 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.FuncState* %33, i32 0, i32 10 ; [#uses=1] + store i32 0, i32* %34, align 4 + %35 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.FuncState* %35, i32 0, i32 11 ; [#uses=1] + store i32 0, i32* %36, align 4 + %37 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.FuncState* %37, i32 0, i32 12 ; [#uses=1] + store i16 0, i16* %38, align 2 + %39 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.FuncState* %39, i32 0, i32 13 ; [#uses=1] + store i8 0, i8* %40, align 1 + %41 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.FuncState* %41, i32 0, i32 5 ; [#uses=1] + store %struct.BlockCnt* null, %struct.BlockCnt** %42, align 4 + %43 = load %struct.LexState** %1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.LexState* %43, i32 0, i32 9 ; [#uses=1] + %45 = load %union.TString** %44, align 4 ; [#uses=1] + %46 = load %struct.Proto** %f, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Proto* %46, i32 0, i32 9 ; [#uses=1] + store %union.TString* %45, %union.TString** %47, align 4 + %48 = load %struct.Proto** %f, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Proto* %48, i32 0, i32 22 ; [#uses=1] + store i8 2, i8* %49, align 1 + %50 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %51 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %50, i32 0, i32 0) ; [#uses=1] + %52 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.FuncState* %52, i32 0, i32 1 ; [#uses=1] + store %struct.Table* %51, %struct.Table** %53, align 4 + %54 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + store %struct.lua_TValue* %56, %struct.lua_TValue** %i_o, align 4 + %57 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.FuncState* %57, i32 0, i32 1 ; [#uses=1] + %59 = load %struct.Table** %58, align 4 ; [#uses=1] + %60 = bitcast %struct.Table* %59 to %union.GCObject* ; [#uses=1] + %61 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.lua_TValue* %61, i32 0, i32 0 ; [#uses=1] + %63 = getelementptr inbounds %union.anon* %62, i32 0, i32 0 ; [#uses=1] + %64 = bitcast double* %63 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %60, %union.GCObject** %64, align 4 + %65 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %66, align 4 + %67 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_State* %67, i32 0, i32 9 ; [#uses=1] + %69 = load %struct.lua_TValue** %68, align 4 ; [#uses=1] + %70 = bitcast %struct.lua_TValue* %69 to i8* ; [#uses=1] + %71 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_State* %71, i32 0, i32 4 ; [#uses=1] + %73 = load %struct.lua_TValue** %72, align 4 ; [#uses=1] + %74 = bitcast %struct.lua_TValue* %73 to i8* ; [#uses=1] + %75 = ptrtoint i8* %70 to i32 ; [#uses=1] + %76 = ptrtoint i8* %74 to i32 ; [#uses=1] + %77 = sub i32 %75, %76 ; [#uses=1] + %78 = icmp sle i32 %77, 12 ; [#uses=1] + br i1 %78, label %79, label %81 + +; <label>:79 ; preds = %0 + %80 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %80, i32 1) + br label %82 + +; <label>:81 ; preds = %0 + br label %82 + +; <label>:82 ; preds = %81, %79 + %83 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_State* %83, i32 0, i32 4 ; [#uses=2] + %85 = load %struct.lua_TValue** %84, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 1 ; [#uses=1] + store %struct.lua_TValue* %86, %struct.lua_TValue** %84, align 4 + %87 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_State* %87, i32 0, i32 4 ; [#uses=1] + %89 = load %struct.lua_TValue** %88, align 4 ; [#uses=1] + store %struct.lua_TValue* %89, %struct.lua_TValue** %i_o1, align 4 + %90 = load %struct.Proto** %f, align 4 ; [#uses=1] + %91 = bitcast %struct.Proto* %90 to %union.GCObject* ; [#uses=1] + %92 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_TValue* %92, i32 0, i32 0 ; [#uses=1] + %94 = getelementptr inbounds %union.anon* %93, i32 0, i32 0 ; [#uses=1] + %95 = bitcast double* %94 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %91, %union.GCObject** %95, align 4 + %96 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_TValue* %96, i32 0, i32 1 ; [#uses=1] + store i32 9, i32* %97, align 4 + %98 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_State* %98, i32 0, i32 9 ; [#uses=1] + %100 = load %struct.lua_TValue** %99, align 4 ; [#uses=1] + %101 = bitcast %struct.lua_TValue* %100 to i8* ; [#uses=1] + %102 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.lua_State* %102, i32 0, i32 4 ; [#uses=1] + %104 = load %struct.lua_TValue** %103, align 4 ; [#uses=1] + %105 = bitcast %struct.lua_TValue* %104 to i8* ; [#uses=1] + %106 = ptrtoint i8* %101 to i32 ; [#uses=1] + %107 = ptrtoint i8* %105 to i32 ; [#uses=1] + %108 = sub i32 %106, %107 ; [#uses=1] + %109 = icmp sle i32 %108, 12 ; [#uses=1] + br i1 %109, label %110, label %112 + +; <label>:110 ; preds = %82 + %111 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %111, i32 1) + br label %113 + +; <label>:112 ; preds = %82 + br label %113 + +; <label>:113 ; preds = %112, %110 + %114 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.lua_State* %114, i32 0, i32 4 ; [#uses=2] + %116 = load %struct.lua_TValue** %115, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.lua_TValue* %116, i32 1 ; [#uses=1] + store %struct.lua_TValue* %117, %struct.lua_TValue** %115, align 4 + ret void +} + +; [#uses=4] +define internal void @_Z5chunkP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=8] + %islast = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 0, i32* %islast, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z10enterlevelP8LexState(%struct.LexState* %2) + br label %3 + +; <label>:3 ; preds = %16, %0 + %4 = load i32* %islast, align 4 ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %14, label %6 + +; <label>:6 ; preds = %3 + %7 = load %struct.LexState** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LexState* %7, i32 0, i32 3 ; [#uses=1] + %9 = getelementptr inbounds %struct.Token* %8, i32 0, i32 0 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = call i32 @_Z12block_followi(i32 %10) ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + %13 = xor i1 %12, true ; [#uses=1] + br label %14 + +; <label>:14 ; preds = %6, %3 + %15 = phi i1 [ false, %3 ], [ %13, %6 ] ; [#uses=1] + br i1 %15, label %16, label %31 + +; <label>:16 ; preds = %14 + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = call i32 @_Z9statementP8LexState(%struct.LexState* %17) ; [#uses=1] + store i32 %18, i32* %islast, align 4 + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %19, i32 59) ; [#uses=0] + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.LexState* %21, i32 0, i32 5 ; [#uses=1] + %23 = load %struct.FuncState** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.FuncState* %23, i32 0, i32 13 ; [#uses=1] + %25 = load i8* %24, align 1 ; [#uses=1] + %26 = zext i8 %25 to i32 ; [#uses=1] + %27 = load %struct.LexState** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.LexState* %27, i32 0, i32 5 ; [#uses=1] + %29 = load %struct.FuncState** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.FuncState* %29, i32 0, i32 9 ; [#uses=1] + store i32 %26, i32* %30, align 4 + br label %3 + +; <label>:31 ; preds = %14 + %32 = load %struct.LexState** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.LexState* %32, i32 0, i32 6 ; [#uses=1] + %34 = load %struct.lua_State** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 15 ; [#uses=2] + %36 = load i16* %35, align 2 ; [#uses=1] + %37 = add i16 %36, -1 ; [#uses=1] + store i16 %37, i16* %35, align 2 + ret void +} + +; [#uses=3] +define internal void @_Z5checkP8LexStatei(%struct.LexState* %ls, i32 %c) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %c, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 3 ; [#uses=1] + %5 = getelementptr inbounds %struct.Token* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = icmp ne i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + call void @_Z14error_expectedP8LexStatei(%struct.LexState* %10, i32 %11) + br label %12 + +; <label>:12 ; preds = %9, %0 + ret void +} + +; [#uses=2] +define internal void @_Z10close_funcP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %L = alloca %struct.lua_State*, align 4 ; [#uses=14] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=20] + %f = alloca %struct.Proto*, align 4 ; [#uses=28] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.lua_State** %3, align 4 ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.FuncState** %6, align 4 ; [#uses=1] + store %struct.FuncState* %7, %struct.FuncState** %fs, align 4 + %8 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 0 ; [#uses=1] + %10 = load %struct.Proto** %9, align 4 ; [#uses=1] + store %struct.Proto* %10, %struct.Proto** %f, align 4 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z10removevarsP8LexStatei(%struct.LexState* %11, i32 0) + %12 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z8luaK_retP9FuncStateii(%struct.FuncState* %12, i32 0, i32 0) + %13 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.FuncState* %13, i32 0, i32 6 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + %17 = icmp ule i32 %16, 1073741823 ; [#uses=1] + br i1 %17, label %18, label %33 + +; <label>:18 ; preds = %0 + %19 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %20 = load %struct.Proto** %f, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Proto* %20, i32 0, i32 4 ; [#uses=1] + %22 = load i32** %21, align 4 ; [#uses=1] + %23 = bitcast i32* %22 to i8* ; [#uses=1] + %24 = load %struct.Proto** %f, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Proto* %24, i32 0, i32 12 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = mul i32 %26, 4 ; [#uses=1] + %28 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.FuncState* %28, i32 0, i32 6 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = mul i32 %30, 4 ; [#uses=1] + %32 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %19, i8* %23, i32 %27, i32 %31) ; [#uses=1] + br label %36 + +; <label>:33 ; preds = %0 + %34 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %35 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %34) ; [#uses=1] + br label %36 + +; <label>:36 ; preds = %33, %18 + %37 = phi i8* [ %32, %18 ], [ %35, %33 ] ; [#uses=1] + %38 = bitcast i8* %37 to i32* ; [#uses=1] + %39 = load %struct.Proto** %f, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Proto* %39, i32 0, i32 4 ; [#uses=1] + store i32* %38, i32** %40, align 4 + %41 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.FuncState* %41, i32 0, i32 6 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = load %struct.Proto** %f, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.Proto* %44, i32 0, i32 12 ; [#uses=1] + store i32 %43, i32* %45, align 4 + %46 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.FuncState* %46, i32 0, i32 6 ; [#uses=1] + %48 = load i32* %47, align 4 ; [#uses=1] + %49 = add nsw i32 %48, 1 ; [#uses=1] + %50 = icmp ule i32 %49, 1073741823 ; [#uses=1] + br i1 %50, label %51, label %66 + +; <label>:51 ; preds = %36 + %52 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %53 = load %struct.Proto** %f, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Proto* %53, i32 0, i32 6 ; [#uses=1] + %55 = load i32** %54, align 4 ; [#uses=1] + %56 = bitcast i32* %55 to i8* ; [#uses=1] + %57 = load %struct.Proto** %f, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.Proto* %57, i32 0, i32 13 ; [#uses=1] + %59 = load i32* %58, align 4 ; [#uses=1] + %60 = mul i32 %59, 4 ; [#uses=1] + %61 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.FuncState* %61, i32 0, i32 6 ; [#uses=1] + %63 = load i32* %62, align 4 ; [#uses=1] + %64 = mul i32 %63, 4 ; [#uses=1] + %65 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %52, i8* %56, i32 %60, i32 %64) ; [#uses=1] + br label %69 + +; <label>:66 ; preds = %36 + %67 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %68 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %67) ; [#uses=1] + br label %69 + +; <label>:69 ; preds = %66, %51 + %70 = phi i8* [ %65, %51 ], [ %68, %66 ] ; [#uses=1] + %71 = bitcast i8* %70 to i32* ; [#uses=1] + %72 = load %struct.Proto** %f, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Proto* %72, i32 0, i32 6 ; [#uses=1] + store i32* %71, i32** %73, align 4 + %74 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.FuncState* %74, i32 0, i32 6 ; [#uses=1] + %76 = load i32* %75, align 4 ; [#uses=1] + %77 = load %struct.Proto** %f, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.Proto* %77, i32 0, i32 13 ; [#uses=1] + store i32 %76, i32* %78, align 4 + %79 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.FuncState* %79, i32 0, i32 10 ; [#uses=1] + %81 = load i32* %80, align 4 ; [#uses=1] + %82 = add nsw i32 %81, 1 ; [#uses=1] + %83 = icmp ule i32 %82, 357913941 ; [#uses=1] + br i1 %83, label %84, label %99 + +; <label>:84 ; preds = %69 + %85 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %86 = load %struct.Proto** %f, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Proto* %86, i32 0, i32 3 ; [#uses=1] + %88 = load %struct.lua_TValue** %87, align 4 ; [#uses=1] + %89 = bitcast %struct.lua_TValue* %88 to i8* ; [#uses=1] + %90 = load %struct.Proto** %f, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.Proto* %90, i32 0, i32 11 ; [#uses=1] + %92 = load i32* %91, align 4 ; [#uses=1] + %93 = mul i32 %92, 12 ; [#uses=1] + %94 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.FuncState* %94, i32 0, i32 10 ; [#uses=1] + %96 = load i32* %95, align 4 ; [#uses=1] + %97 = mul i32 %96, 12 ; [#uses=1] + %98 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %85, i8* %89, i32 %93, i32 %97) ; [#uses=1] + br label %102 + +; <label>:99 ; preds = %69 + %100 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %101 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %100) ; [#uses=1] + br label %102 + +; <label>:102 ; preds = %99, %84 + %103 = phi i8* [ %98, %84 ], [ %101, %99 ] ; [#uses=1] + %104 = bitcast i8* %103 to %struct.lua_TValue* ; [#uses=1] + %105 = load %struct.Proto** %f, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.Proto* %105, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %104, %struct.lua_TValue** %106, align 4 + %107 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.FuncState* %107, i32 0, i32 10 ; [#uses=1] + %109 = load i32* %108, align 4 ; [#uses=1] + %110 = load %struct.Proto** %f, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.Proto* %110, i32 0, i32 11 ; [#uses=1] + store i32 %109, i32* %111, align 4 + %112 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.FuncState* %112, i32 0, i32 11 ; [#uses=1] + %114 = load i32* %113, align 4 ; [#uses=1] + %115 = add nsw i32 %114, 1 ; [#uses=1] + %116 = icmp ule i32 %115, 1073741823 ; [#uses=1] + br i1 %116, label %117, label %132 + +; <label>:117 ; preds = %102 + %118 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %119 = load %struct.Proto** %f, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.Proto* %119, i32 0, i32 5 ; [#uses=1] + %121 = load %struct.Proto*** %120, align 4 ; [#uses=1] + %122 = bitcast %struct.Proto** %121 to i8* ; [#uses=1] + %123 = load %struct.Proto** %f, align 4 ; [#uses=1] + %124 = getelementptr inbounds %struct.Proto* %123, i32 0, i32 14 ; [#uses=1] + %125 = load i32* %124, align 4 ; [#uses=1] + %126 = mul i32 %125, 4 ; [#uses=1] + %127 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.FuncState* %127, i32 0, i32 11 ; [#uses=1] + %129 = load i32* %128, align 4 ; [#uses=1] + %130 = mul i32 %129, 4 ; [#uses=1] + %131 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %118, i8* %122, i32 %126, i32 %130) ; [#uses=1] + br label %135 + +; <label>:132 ; preds = %102 + %133 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %134 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %133) ; [#uses=1] + br label %135 + +; <label>:135 ; preds = %132, %117 + %136 = phi i8* [ %131, %117 ], [ %134, %132 ] ; [#uses=1] + %137 = bitcast i8* %136 to %struct.Proto** ; [#uses=1] + %138 = load %struct.Proto** %f, align 4 ; [#uses=1] + %139 = getelementptr inbounds %struct.Proto* %138, i32 0, i32 5 ; [#uses=1] + store %struct.Proto** %137, %struct.Proto*** %139, align 4 + %140 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %141 = getelementptr inbounds %struct.FuncState* %140, i32 0, i32 11 ; [#uses=1] + %142 = load i32* %141, align 4 ; [#uses=1] + %143 = load %struct.Proto** %f, align 4 ; [#uses=1] + %144 = getelementptr inbounds %struct.Proto* %143, i32 0, i32 14 ; [#uses=1] + store i32 %142, i32* %144, align 4 + %145 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.FuncState* %145, i32 0, i32 12 ; [#uses=1] + %147 = load i16* %146, align 2 ; [#uses=1] + %148 = sext i16 %147 to i32 ; [#uses=1] + %149 = add nsw i32 %148, 1 ; [#uses=1] + %150 = icmp ule i32 %149, 357913941 ; [#uses=1] + br i1 %150, label %151, label %167 + +; <label>:151 ; preds = %135 + %152 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %153 = load %struct.Proto** %f, align 4 ; [#uses=1] + %154 = getelementptr inbounds %struct.Proto* %153, i32 0, i32 7 ; [#uses=1] + %155 = load %struct.LocVar** %154, align 4 ; [#uses=1] + %156 = bitcast %struct.LocVar* %155 to i8* ; [#uses=1] + %157 = load %struct.Proto** %f, align 4 ; [#uses=1] + %158 = getelementptr inbounds %struct.Proto* %157, i32 0, i32 15 ; [#uses=1] + %159 = load i32* %158, align 4 ; [#uses=1] + %160 = mul i32 %159, 12 ; [#uses=1] + %161 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.FuncState* %161, i32 0, i32 12 ; [#uses=1] + %163 = load i16* %162, align 2 ; [#uses=1] + %164 = sext i16 %163 to i32 ; [#uses=1] + %165 = mul i32 %164, 12 ; [#uses=1] + %166 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %152, i8* %156, i32 %160, i32 %165) ; [#uses=1] + br label %170 + +; <label>:167 ; preds = %135 + %168 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %169 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %168) ; [#uses=1] + br label %170 + +; <label>:170 ; preds = %167, %151 + %171 = phi i8* [ %166, %151 ], [ %169, %167 ] ; [#uses=1] + %172 = bitcast i8* %171 to %struct.LocVar* ; [#uses=1] + %173 = load %struct.Proto** %f, align 4 ; [#uses=1] + %174 = getelementptr inbounds %struct.Proto* %173, i32 0, i32 7 ; [#uses=1] + store %struct.LocVar* %172, %struct.LocVar** %174, align 4 + %175 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %176 = getelementptr inbounds %struct.FuncState* %175, i32 0, i32 12 ; [#uses=1] + %177 = load i16* %176, align 2 ; [#uses=1] + %178 = sext i16 %177 to i32 ; [#uses=1] + %179 = load %struct.Proto** %f, align 4 ; [#uses=1] + %180 = getelementptr inbounds %struct.Proto* %179, i32 0, i32 15 ; [#uses=1] + store i32 %178, i32* %180, align 4 + %181 = load %struct.Proto** %f, align 4 ; [#uses=1] + %182 = getelementptr inbounds %struct.Proto* %181, i32 0, i32 19 ; [#uses=1] + %183 = load i8* %182, align 1 ; [#uses=1] + %184 = zext i8 %183 to i32 ; [#uses=1] + %185 = add nsw i32 %184, 1 ; [#uses=1] + %186 = icmp ule i32 %185, 1073741823 ; [#uses=1] + br i1 %186, label %187, label %203 + +; <label>:187 ; preds = %170 + %188 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %189 = load %struct.Proto** %f, align 4 ; [#uses=1] + %190 = getelementptr inbounds %struct.Proto* %189, i32 0, i32 8 ; [#uses=1] + %191 = load %union.TString*** %190, align 4 ; [#uses=1] + %192 = bitcast %union.TString** %191 to i8* ; [#uses=1] + %193 = load %struct.Proto** %f, align 4 ; [#uses=1] + %194 = getelementptr inbounds %struct.Proto* %193, i32 0, i32 10 ; [#uses=1] + %195 = load i32* %194, align 4 ; [#uses=1] + %196 = mul i32 %195, 4 ; [#uses=1] + %197 = load %struct.Proto** %f, align 4 ; [#uses=1] + %198 = getelementptr inbounds %struct.Proto* %197, i32 0, i32 19 ; [#uses=1] + %199 = load i8* %198, align 1 ; [#uses=1] + %200 = zext i8 %199 to i32 ; [#uses=1] + %201 = mul i32 %200, 4 ; [#uses=1] + %202 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %188, i8* %192, i32 %196, i32 %201) ; [#uses=1] + br label %206 + +; <label>:203 ; preds = %170 + %204 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %205 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %204) ; [#uses=1] + br label %206 + +; <label>:206 ; preds = %203, %187 + %207 = phi i8* [ %202, %187 ], [ %205, %203 ] ; [#uses=1] + %208 = bitcast i8* %207 to %union.TString** ; [#uses=1] + %209 = load %struct.Proto** %f, align 4 ; [#uses=1] + %210 = getelementptr inbounds %struct.Proto* %209, i32 0, i32 8 ; [#uses=1] + store %union.TString** %208, %union.TString*** %210, align 4 + %211 = load %struct.Proto** %f, align 4 ; [#uses=1] + %212 = getelementptr inbounds %struct.Proto* %211, i32 0, i32 19 ; [#uses=1] + %213 = load i8* %212, align 1 ; [#uses=1] + %214 = zext i8 %213 to i32 ; [#uses=1] + %215 = load %struct.Proto** %f, align 4 ; [#uses=1] + %216 = getelementptr inbounds %struct.Proto* %215, i32 0, i32 10 ; [#uses=1] + store i32 %214, i32* %216, align 4 + %217 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %218 = getelementptr inbounds %struct.FuncState* %217, i32 0, i32 2 ; [#uses=1] + %219 = load %struct.FuncState** %218, align 4 ; [#uses=1] + %220 = load %struct.LexState** %1, align 4 ; [#uses=1] + %221 = getelementptr inbounds %struct.LexState* %220, i32 0, i32 5 ; [#uses=1] + store %struct.FuncState* %219, %struct.FuncState** %221, align 4 + %222 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %223 = getelementptr inbounds %struct.lua_State* %222, i32 0, i32 4 ; [#uses=2] + %224 = load %struct.lua_TValue** %223, align 4 ; [#uses=1] + %225 = getelementptr inbounds %struct.lua_TValue* %224, i32 -2 ; [#uses=1] + store %struct.lua_TValue* %225, %struct.lua_TValue** %223, align 4 + %226 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %227 = icmp ne %struct.FuncState* %226, null ; [#uses=1] + br i1 %227, label %228, label %230 + +; <label>:228 ; preds = %206 + %229 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z12anchor_tokenP8LexState(%struct.LexState* %229) + br label %230 + +; <label>:230 ; preds = %228, %206 + ret void +} + +; [#uses=2] +define internal void @_Z10enterlevelP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 15 ; [#uses=2] + %6 = load i16* %5, align 2 ; [#uses=1] + %7 = add i16 %6, 1 ; [#uses=2] + store i16 %7, i16* %5, align 2 + %8 = zext i16 %7 to i32 ; [#uses=1] + %9 = icmp sgt i32 %8, 200 ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %0 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %11, i8* getelementptr inbounds ([33 x i8]* @.str27156, i32 0, i32 0), i32 0) + br label %12 + +; <label>:12 ; preds = %10, %0 + ret void +} + +; [#uses=2] +define internal i32 @_Z12block_followi(i32 %token) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + store i32 %token, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + switch i32 %3, label %5 [ + i32 260, label %4 + i32 261, label %4 + i32 262, label %4 + i32 276, label %4 + i32 287, label %4 + ] + +; <label>:4 ; preds = %0, %0, %0, %0, %0 + store i32 1, i32* %1 + br label %6 + +; <label>:5 ; preds = %0 + store i32 0, i32* %1 + br label %6 + +; <label>:6 ; preds = %5, %4 + %7 = load i32* %1 ; [#uses=1] + ret i32 %7 +} + +; [#uses=1] +define internal i32 @_Z9statementP8LexState(%struct.LexState* %ls) { + %1 = alloca i32, align 4 ; [#uses=11] + %2 = alloca %struct.LexState*, align 4 ; [#uses=19] + %line = alloca i32, align 4 ; [#uses=7] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + %3 = load %struct.LexState** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 1 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + store i32 %5, i32* %line, align 4 + %6 = load %struct.LexState** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 3 ; [#uses=1] + %8 = getelementptr inbounds %struct.Token* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + switch i32 %9, label %45 [ + i32 266, label %10 + i32 277, label %13 + i32 259, label %16 + i32 264, label %21 + i32 272, label %24 + i32 265, label %27 + i32 268, label %30 + i32 273, label %40 + i32 258, label %42 + ] + +; <label>:10 ; preds = %0 + %11 = load %struct.LexState** %2, align 4 ; [#uses=1] + %12 = load i32* %line, align 4 ; [#uses=1] + call void @_Z6ifstatP8LexStatei(%struct.LexState* %11, i32 %12) + store i32 0, i32* %1 + br label %47 + +; <label>:13 ; preds = %0 + %14 = load %struct.LexState** %2, align 4 ; [#uses=1] + %15 = load i32* %line, align 4 ; [#uses=1] + call void @_Z9whilestatP8LexStatei(%struct.LexState* %14, i32 %15) + store i32 0, i32* %1 + br label %47 + +; <label>:16 ; preds = %0 + %17 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %17) + %18 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z5blockP8LexState(%struct.LexState* %18) + %19 = load %struct.LexState** %2, align 4 ; [#uses=1] + %20 = load i32* %line, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %19, i32 262, i32 259, i32 %20) + store i32 0, i32* %1 + br label %47 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %2, align 4 ; [#uses=1] + %23 = load i32* %line, align 4 ; [#uses=1] + call void @_Z7forstatP8LexStatei(%struct.LexState* %22, i32 %23) + store i32 0, i32* %1 + br label %47 + +; <label>:24 ; preds = %0 + %25 = load %struct.LexState** %2, align 4 ; [#uses=1] + %26 = load i32* %line, align 4 ; [#uses=1] + call void @_Z10repeatstatP8LexStatei(%struct.LexState* %25, i32 %26) + store i32 0, i32* %1 + br label %47 + +; <label>:27 ; preds = %0 + %28 = load %struct.LexState** %2, align 4 ; [#uses=1] + %29 = load i32* %line, align 4 ; [#uses=1] + call void @_Z8funcstatP8LexStatei(%struct.LexState* %28, i32 %29) + store i32 0, i32* %1 + br label %47 + +; <label>:30 ; preds = %0 + %31 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %31) + %32 = load %struct.LexState** %2, align 4 ; [#uses=1] + %33 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %32, i32 265) ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %37 + +; <label>:35 ; preds = %30 + %36 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9localfuncP8LexState(%struct.LexState* %36) + br label %39 + +; <label>:37 ; preds = %30 + %38 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9localstatP8LexState(%struct.LexState* %38) + br label %39 + +; <label>:39 ; preds = %37, %35 + store i32 0, i32* %1 + br label %47 + +; <label>:40 ; preds = %0 + %41 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z7retstatP8LexState(%struct.LexState* %41) + store i32 1, i32* %1 + br label %47 + +; <label>:42 ; preds = %0 + %43 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %43) + %44 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9breakstatP8LexState(%struct.LexState* %44) + store i32 1, i32* %1 + br label %47 + +; <label>:45 ; preds = %0 + %46 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z8exprstatP8LexState(%struct.LexState* %46) + store i32 0, i32* %1 + br label %47 + +; <label>:47 ; preds = %45, %42, %40, %39, %27, %24, %21, %16, %13, %10 + %48 = load i32* %1 ; [#uses=1] + ret i32 %48 +} + +; [#uses=12] +define internal i32 @_Z8testnextP8LexStatei(%struct.LexState* %ls, i32 %c) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.LexState*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %2, align 4 + store i32 %c, i32* %3, align 4 + %4 = load %struct.LexState** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 3 ; [#uses=1] + %6 = getelementptr inbounds %struct.Token* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = icmp eq i32 %7, %8 ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %0 + %11 = load %struct.LexState** %2, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %11) + store i32 1, i32* %1 + br label %13 + +; <label>:12 ; preds = %0 + store i32 0, i32* %1 + br label %13 + +; <label>:13 ; preds = %12, %10 + %14 = load i32* %1 ; [#uses=1] + ret i32 %14 +} + +; [#uses=1] +define internal void @_Z6ifstatP8LexStatei(%struct.LexState* %ls, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=9] + %flist = alloca i32, align 4 ; [#uses=5] + %escapelist = alloca i32, align 4 ; [#uses=5] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + store i32 -1, i32* %escapelist, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z15test_then_blockP8LexState(%struct.LexState* %6) ; [#uses=1] + store i32 %7, i32* %flist, align 4 + br label %8 + +; <label>:8 ; preds = %14, %0 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 3 ; [#uses=1] + %11 = getelementptr inbounds %struct.Token* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 261 ; [#uses=1] + br i1 %13, label %14, label %22 + +; <label>:14 ; preds = %8 + %15 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %16 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %17 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %16) ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %15, i32* %escapelist, i32 %17) + %18 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %19 = load i32* %flist, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %18, i32 %19) + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = call i32 @_Z15test_then_blockP8LexState(%struct.LexState* %20) ; [#uses=1] + store i32 %21, i32* %flist, align 4 + br label %8 + +; <label>:22 ; preds = %8 + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LexState* %23, i32 0, i32 3 ; [#uses=1] + %25 = getelementptr inbounds %struct.Token* %24, i32 0, i32 0 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = icmp eq i32 %26, 260 ; [#uses=1] + br i1 %27, label %28, label %36 + +; <label>:28 ; preds = %22 + %29 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %30 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %31 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %30) ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %29, i32* %escapelist, i32 %31) + %32 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %33 = load i32* %flist, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %32, i32 %33) + %34 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %34) + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5blockP8LexState(%struct.LexState* %35) + br label %39 + +; <label>:36 ; preds = %22 + %37 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %38 = load i32* %flist, align 4 ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %37, i32* %escapelist, i32 %38) + br label %39 + +; <label>:39 ; preds = %36, %28 + %40 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %41 = load i32* %escapelist, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %40, i32 %41) + %42 = load %struct.LexState** %1, align 4 ; [#uses=1] + %43 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %42, i32 262, i32 266, i32 %43) + ret void +} + +; [#uses=1] +define internal void @_Z9whilestatP8LexStatei(%struct.LexState* %ls, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=7] + %2 = alloca i32, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=7] + %whileinit = alloca i32, align 4 ; [#uses=2] + %condexit = alloca i32, align 4 ; [#uses=2] + %bl = alloca %struct.BlockCnt, align 4 ; [#uses=1] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %6) + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = call i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %7) ; [#uses=1] + store i32 %8, i32* %whileinit, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z4condP8LexState(%struct.LexState* %9) ; [#uses=1] + store i32 %10, i32* %condexit, align 4 + %11 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %11, %struct.BlockCnt* %bl, i8 zeroext 1) + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %12, i32 259) + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5blockP8LexState(%struct.LexState* %13) + %14 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %15 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %16 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %15) ; [#uses=1] + %17 = load i32* %whileinit, align 4 ; [#uses=1] + call void @_Z14luaK_patchlistP9FuncStateii(%struct.FuncState* %14, i32 %16, i32 %17) + %18 = load %struct.LexState** %1, align 4 ; [#uses=1] + %19 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %18, i32 262, i32 277, i32 %19) + %20 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %20) + %21 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %22 = load i32* %condexit, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %21, i32 %22) + ret void +} + +; [#uses=5] +define internal void @_Z5blockP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + %bl = alloca %struct.BlockCnt, align 4 ; [#uses=1] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %5, %struct.BlockCnt* %bl, i8 zeroext 0) + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5chunkP8LexState(%struct.LexState* %6) + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %7) + ret void +} + +; [#uses=9] +define internal void @_Z11check_matchP8LexStateiii(%struct.LexState* %ls, i32 %what, i32 %who, i32 %where) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=8] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %what, i32* %2, align 4 + store i32 %who, i32* %3, align 4 + store i32 %where, i32* %4, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %5, i32 %6) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %32, label %9 + +; <label>:9 ; preds = %0 + %10 = load i32* %4, align 4 ; [#uses=1] + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.LexState* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %10, %13 ; [#uses=1] + br i1 %14, label %15, label %18 + +; <label>:15 ; preds = %9 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + call void @_Z14error_expectedP8LexStatei(%struct.LexState* %16, i32 %17) + br label %31 + +; <label>:18 ; preds = %9 + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.LexState* %20, i32 0, i32 6 ; [#uses=1] + %22 = load %struct.lua_State** %21, align 4 ; [#uses=1] + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = load i32* %2, align 4 ; [#uses=1] + %25 = call i8* @_Z14luaX_token2strP8LexStatei(%struct.LexState* %23, i32 %24) ; [#uses=1] + %26 = load %struct.LexState** %1, align 4 ; [#uses=1] + %27 = load i32* %3, align 4 ; [#uses=1] + %28 = call i8* @_Z14luaX_token2strP8LexStatei(%struct.LexState* %26, i32 %27) ; [#uses=1] + %29 = load i32* %4, align 4 ; [#uses=1] + %30 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %22, i8* getelementptr inbounds ([41 x i8]* @.str25154, i32 0, i32 0), i8* %25, i8* %28, i32 %29) ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %19, i8* %30) + br label %31 + +; <label>:31 ; preds = %18, %15 + br label %32 + +; <label>:32 ; preds = %31, %0 + ret void +} + +; [#uses=1] +define internal void @_Z7forstatP8LexStatei(%struct.LexState* %ls, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + %varname = alloca %union.TString*, align 4 ; [#uses=3] + %bl = alloca %struct.BlockCnt, align 4 ; [#uses=1] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %6, %struct.BlockCnt* %bl, i8 zeroext 1) + %7 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %7) + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %8) ; [#uses=1] + store %union.TString* %9, %union.TString** %varname, align 4 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LexState* %10, i32 0, i32 3 ; [#uses=1] + %12 = getelementptr inbounds %struct.Token* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + switch i32 %13, label %21 [ + i32 61, label %14 + i32 44, label %18 + i32 267, label %18 + ] + +; <label>:14 ; preds = %0 + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = load %union.TString** %varname, align 4 ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + call void @_Z6fornumP8LexStateP7TStringi(%struct.LexState* %15, %union.TString* %16, i32 %17) + br label %23 + +; <label>:18 ; preds = %0, %0 + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = load %union.TString** %varname, align 4 ; [#uses=1] + call void @_Z7forlistP8LexStateP7TString(%struct.LexState* %19, %union.TString* %20) + br label %23 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %22, i8* getelementptr inbounds ([21 x i8]* @.str18147, i32 0, i32 0)) + br label %23 + +; <label>:23 ; preds = %21, %18, %14 + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + %25 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %24, i32 262, i32 264, i32 %25) + %26 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %26) + ret void +} + +; [#uses=1] +define internal void @_Z10repeatstatP8LexStatei(%struct.LexState* %ls, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=10] + %2 = alloca i32, align 4 ; [#uses=2] + %condexit = alloca i32, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=8] + %repeat_init = alloca i32, align 4 ; [#uses=3] + %bl1 = alloca %struct.BlockCnt, align 4 ; [#uses=1] + %bl2 = alloca %struct.BlockCnt, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %7 = call i32 @_Z13luaK_getlabelP9FuncState(%struct.FuncState* %6) ; [#uses=1] + store i32 %7, i32* %repeat_init, align 4 + %8 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %8, %struct.BlockCnt* %bl1, i8 zeroext 1) + %9 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %9, %struct.BlockCnt* %bl2, i8 zeroext 0) + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %10) + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5chunkP8LexState(%struct.LexState* %11) + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + %13 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %12, i32 276, i32 272, i32 %13) + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = call i32 @_Z4condP8LexState(%struct.LexState* %14) ; [#uses=1] + store i32 %15, i32* %condexit, align 4 + %16 = getelementptr inbounds %struct.BlockCnt* %bl2, i32 0, i32 3 ; [#uses=1] + %17 = load i8* %16, align 1 ; [#uses=1] + %18 = icmp ne i8 %17, 0 ; [#uses=1] + br i1 %18, label %26, label %19 + +; <label>:19 ; preds = %0 + %20 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %20) + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.LexState* %21, i32 0, i32 5 ; [#uses=1] + %23 = load %struct.FuncState** %22, align 4 ; [#uses=1] + %24 = load i32* %condexit, align 4 ; [#uses=1] + %25 = load i32* %repeat_init, align 4 ; [#uses=1] + call void @_Z14luaK_patchlistP9FuncStateii(%struct.FuncState* %23, i32 %24, i32 %25) + br label %39 + +; <label>:26 ; preds = %0 + %27 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9breakstatP8LexState(%struct.LexState* %27) + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.LexState* %28, i32 0, i32 5 ; [#uses=1] + %30 = load %struct.FuncState** %29, align 4 ; [#uses=1] + %31 = load i32* %condexit, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %30, i32 %31) + %32 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %32) + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.LexState* %33, i32 0, i32 5 ; [#uses=1] + %35 = load %struct.FuncState** %34, align 4 ; [#uses=1] + %36 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %37 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %36) ; [#uses=1] + %38 = load i32* %repeat_init, align 4 ; [#uses=1] + call void @_Z14luaK_patchlistP9FuncStateii(%struct.FuncState* %35, i32 %37, i32 %38) + br label %39 + +; <label>:39 ; preds = %26, %19 + %40 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %40) + ret void +} + +; [#uses=1] +define internal void @_Z8funcstatP8LexStatei(%struct.LexState* %ls, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=3] + %needself = alloca i32, align 4 ; [#uses=2] + %v = alloca %struct.expdesc, align 4 ; [#uses=2] + %b = alloca %struct.expdesc, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %line, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %3) + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8funcnameP8LexStateP7expdesc(%struct.LexState* %4, %struct.expdesc* %v) ; [#uses=1] + store i32 %5, i32* %needself, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = load i32* %needself, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + call void @_Z4bodyP8LexStateP7expdescii(%struct.LexState* %6, %struct.expdesc* %b, i32 %7, i32 %8) + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 5 ; [#uses=1] + %11 = load %struct.FuncState** %10, align 4 ; [#uses=1] + call void @_Z13luaK_storevarP9FuncStateP7expdescS2_(%struct.FuncState* %11, %struct.expdesc* %v, %struct.expdesc* %b) + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.LexState* %12, i32 0, i32 5 ; [#uses=1] + %14 = load %struct.FuncState** %13, align 4 ; [#uses=1] + %15 = load i32* %2, align 4 ; [#uses=1] + call void @_Z12luaK_fixlineP9FuncStatei(%struct.FuncState* %14, i32 %15) + ret void +} + +; [#uses=1] +define internal void @_Z9localfuncP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=7] + %v = alloca %struct.expdesc, align 4 ; [#uses=2] + %b = alloca %struct.expdesc, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=8] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %6) ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %5, %union.TString* %7, i32 0) + %8 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 9 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %v, i32 6, i32 %10) + %11 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %11, i32 1) + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %12, i32 1) + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.LexState* %14, i32 0, i32 1 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + call void @_Z4bodyP8LexStateP7expdescii(%struct.LexState* %13, %struct.expdesc* %b, i32 0, i32 %16) + %17 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z13luaK_storevarP9FuncStateP7expdescS2_(%struct.FuncState* %17, %struct.expdesc* %v, %struct.expdesc* %b) + %18 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.FuncState* %18, i32 0, i32 6 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.FuncState* %21, i32 0, i32 13 ; [#uses=1] + %23 = load i8* %22, align 1 ; [#uses=1] + %24 = zext i8 %23 to i32 ; [#uses=1] + %25 = sub nsw i32 %24, 1 ; [#uses=1] + %26 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.FuncState* %26, i32 0, i32 15 ; [#uses=1] + %28 = getelementptr inbounds [200 x i16]* %27, i32 0, i32 %25 ; [#uses=1] + %29 = load i16* %28 ; [#uses=1] + %30 = zext i16 %29 to i32 ; [#uses=1] + %31 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.FuncState* %31, i32 0, i32 0 ; [#uses=1] + %33 = load %struct.Proto** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Proto* %33, i32 0, i32 7 ; [#uses=1] + %35 = load %struct.LocVar** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.LocVar* %35, i32 %30 ; [#uses=1] + %37 = getelementptr inbounds %struct.LocVar* %36, i32 0, i32 1 ; [#uses=1] + store i32 %20, i32* %37, align 4 + ret void +} + +; [#uses=1] +define internal void @_Z9localstatP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=8] + %nvars = alloca i32, align 4 ; [#uses=5] + %nexps = alloca i32, align 4 ; [#uses=3] + %e = alloca %struct.expdesc, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 0, i32* %nvars, align 4 + br label %2 + +; <label>:2 ; preds = %8, %0 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %4) ; [#uses=1] + %6 = load i32* %nvars, align 4 ; [#uses=2] + %7 = add nsw i32 %6, 1 ; [#uses=1] + store i32 %7, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %3, %union.TString* %5, i32 %6) + br label %8 + +; <label>:8 ; preds = %2 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %9, i32 44) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %2, label %12 + +; <label>:12 ; preds = %8 + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %13, i32 61) ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %19 + +; <label>:16 ; preds = %12 + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = call i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %17, %struct.expdesc* %e) ; [#uses=1] + store i32 %18, i32* %nexps, align 4 + br label %21 + +; <label>:19 ; preds = %12 + %20 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %20, align 4 + store i32 0, i32* %nexps, align 4 + br label %21 + +; <label>:21 ; preds = %19, %16 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = load i32* %nvars, align 4 ; [#uses=1] + %24 = load i32* %nexps, align 4 ; [#uses=1] + call void @_Z13adjust_assignP8LexStateiiP7expdesc(%struct.LexState* %22, i32 %23, i32 %24, %struct.expdesc* %e) + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = load i32* %nvars, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %25, i32 %26) + ret void +} + +; [#uses=1] +define internal void @_Z7retstatP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=9] + %e = alloca %struct.expdesc, align 4 ; [#uses=9] + %first = alloca i32, align 4 ; [#uses=5] + %nret = alloca i32, align 4 ; [#uses=6] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %5) + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 3 ; [#uses=1] + %8 = getelementptr inbounds %struct.Token* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = call i32 @_Z12block_followi(i32 %9) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %18, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.LexState* %13, i32 0, i32 3 ; [#uses=1] + %15 = getelementptr inbounds %struct.Token* %14, i32 0, i32 0 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = icmp eq i32 %16, 59 ; [#uses=1] + br i1 %17, label %18, label %19 + +; <label>:18 ; preds = %12, %0 + store i32 0, i32* %nret, align 4 + store i32 0, i32* %first, align 4 + br label %80 + +; <label>:19 ; preds = %12 + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = call i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %20, %struct.expdesc* %e) ; [#uses=1] + store i32 %21, i32* %nret, align 4 + %22 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 0 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + %24 = icmp eq i32 %23, 13 ; [#uses=1] + br i1 %24, label %29, label %25 + +; <label>:25 ; preds = %19 + %26 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 0 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = icmp eq i32 %27, 14 ; [#uses=1] + br i1 %28, label %29, label %66 + +; <label>:29 ; preds = %25, %19 + %30 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z15luaK_setreturnsP9FuncStateP7expdesci(%struct.FuncState* %30, %struct.expdesc* %e, i32 -1) + %31 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 0 ; [#uses=1] + %32 = load i32* %31, align 4 ; [#uses=1] + %33 = icmp eq i32 %32, 13 ; [#uses=1] + br i1 %33, label %34, label %61 + +; <label>:34 ; preds = %29 + %35 = load i32* %nret, align 4 ; [#uses=1] + %36 = icmp eq i32 %35, 1 ; [#uses=1] + br i1 %36, label %37, label %61 + +; <label>:37 ; preds = %34 + %38 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 1 ; [#uses=1] + %39 = getelementptr inbounds %2* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %3* %39, i32 0, i32 0 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.FuncState* %42, i32 0, i32 0 ; [#uses=1] + %44 = load %struct.Proto** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.Proto* %44, i32 0, i32 4 ; [#uses=1] + %46 = load i32** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds i32* %46, i32 %41 ; [#uses=1] + %48 = load i32* %47 ; [#uses=1] + %49 = and i32 %48, -64 ; [#uses=1] + %50 = or i32 %49, 29 ; [#uses=1] + %51 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 1 ; [#uses=1] + %52 = getelementptr inbounds %2* %51, i32 0, i32 0 ; [#uses=1] + %53 = getelementptr inbounds %3* %52, i32 0, i32 0 ; [#uses=1] + %54 = load i32* %53, align 4 ; [#uses=1] + %55 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.FuncState* %55, i32 0, i32 0 ; [#uses=1] + %57 = load %struct.Proto** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.Proto* %57, i32 0, i32 4 ; [#uses=1] + %59 = load i32** %58, align 4 ; [#uses=1] + %60 = getelementptr inbounds i32* %59, i32 %54 ; [#uses=1] + store i32 %50, i32* %60 + br label %61 + +; <label>:61 ; preds = %37, %34, %29 + %62 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.FuncState* %62, i32 0, i32 13 ; [#uses=1] + %64 = load i8* %63, align 1 ; [#uses=1] + %65 = zext i8 %64 to i32 ; [#uses=1] + store i32 %65, i32* %first, align 4 + store i32 -1, i32* %nret, align 4 + br label %79 + +; <label>:66 ; preds = %25 + %67 = load i32* %nret, align 4 ; [#uses=1] + %68 = icmp eq i32 %67, 1 ; [#uses=1] + br i1 %68, label %69, label %72 + +; <label>:69 ; preds = %66 + %70 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %71 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %70, %struct.expdesc* %e) ; [#uses=1] + store i32 %71, i32* %first, align 4 + br label %78 + +; <label>:72 ; preds = %66 + %73 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %73, %struct.expdesc* %e) + %74 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.FuncState* %74, i32 0, i32 13 ; [#uses=1] + %76 = load i8* %75, align 1 ; [#uses=1] + %77 = zext i8 %76 to i32 ; [#uses=1] + store i32 %77, i32* %first, align 4 + br label %78 + +; <label>:78 ; preds = %72, %69 + br label %79 + +; <label>:79 ; preds = %78, %61 + br label %80 + +; <label>:80 ; preds = %79, %18 + %81 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %82 = load i32* %first, align 4 ; [#uses=1] + %83 = load i32* %nret, align 4 ; [#uses=1] + call void @_Z8luaK_retP9FuncStateii(%struct.FuncState* %81, i32 %82, i32 %83) + ret void +} + +; [#uses=2] +define internal void @_Z9breakstatP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + %bl = alloca %struct.BlockCnt*, align 4 ; [#uses=9] + %upval = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.BlockCnt** %6, align 4 ; [#uses=1] + store %struct.BlockCnt* %7, %struct.BlockCnt** %bl, align 4 + store i32 0, i32* %upval, align 4 + br label %8 + +; <label>:8 ; preds = %19, %0 + %9 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %10 = icmp ne %struct.BlockCnt* %9, null ; [#uses=1] + br i1 %10, label %11, label %17 + +; <label>:11 ; preds = %8 + %12 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.BlockCnt* %12, i32 0, i32 4 ; [#uses=1] + %14 = load i8* %13, align 1 ; [#uses=1] + %15 = icmp ne i8 %14, 0 ; [#uses=1] + %16 = xor i1 %15, true ; [#uses=1] + br label %17 + +; <label>:17 ; preds = %11, %8 + %18 = phi i1 [ false, %8 ], [ %16, %11 ] ; [#uses=1] + br i1 %18, label %19, label %29 + +; <label>:19 ; preds = %17 + %20 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.BlockCnt* %20, i32 0, i32 3 ; [#uses=1] + %22 = load i8* %21, align 1 ; [#uses=1] + %23 = zext i8 %22 to i32 ; [#uses=1] + %24 = load i32* %upval, align 4 ; [#uses=1] + %25 = or i32 %24, %23 ; [#uses=1] + store i32 %25, i32* %upval, align 4 + %26 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.BlockCnt* %26, i32 0, i32 0 ; [#uses=1] + %28 = load %struct.BlockCnt** %27, align 4 ; [#uses=1] + store %struct.BlockCnt* %28, %struct.BlockCnt** %bl, align 4 + br label %8 + +; <label>:29 ; preds = %17 + %30 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %31 = icmp ne %struct.BlockCnt* %30, null ; [#uses=1] + br i1 %31, label %34, label %32 + +; <label>:32 ; preds = %29 + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %33, i8* getelementptr inbounds ([17 x i8]* @.str17146, i32 0, i32 0)) + br label %34 + +; <label>:34 ; preds = %32, %29 + %35 = load i32* %upval, align 4 ; [#uses=1] + %36 = icmp ne i32 %35, 0 ; [#uses=1] + br i1 %36, label %37, label %44 + +; <label>:37 ; preds = %34 + %38 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %39 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.BlockCnt* %39, i32 0, i32 2 ; [#uses=1] + %41 = load i8* %40, align 1 ; [#uses=1] + %42 = zext i8 %41 to i32 ; [#uses=1] + %43 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %38, i32 35, i32 %42, i32 0, i32 0) ; [#uses=0] + br label %44 + +; <label>:44 ; preds = %37, %34 + %45 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %46 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.BlockCnt* %46, i32 0, i32 1 ; [#uses=1] + %48 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %49 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %48) ; [#uses=1] + call void @_Z11luaK_concatP9FuncStatePii(%struct.FuncState* %45, i32* %47, i32 %49) + ret void +} + +; [#uses=1] +define internal void @_Z8exprstatP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + %v = alloca %struct.LHS_assign, align 4 ; [#uses=6] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LHS_assign* %v, i32 0, i32 1 ; [#uses=1] + call void @_Z10primaryexpP8LexStateP7expdesc(%struct.LexState* %5, %struct.expdesc* %6) + %7 = getelementptr inbounds %struct.LHS_assign* %v, i32 0, i32 1 ; [#uses=1] + %8 = getelementptr inbounds %struct.expdesc* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 13 ; [#uses=1] + br i1 %10, label %11, label %37 + +; <label>:11 ; preds = %0 + %12 = getelementptr inbounds %struct.LHS_assign* %v, i32 0, i32 1 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 1 ; [#uses=1] + %14 = getelementptr inbounds %2* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %3* %14, i32 0, i32 0 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.FuncState* %17, i32 0, i32 0 ; [#uses=1] + %19 = load %struct.Proto** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Proto* %19, i32 0, i32 4 ; [#uses=1] + %21 = load i32** %20, align 4 ; [#uses=1] + %22 = getelementptr inbounds i32* %21, i32 %16 ; [#uses=1] + %23 = load i32* %22 ; [#uses=1] + %24 = and i32 %23, -8372225 ; [#uses=1] + %25 = or i32 %24, 16384 ; [#uses=1] + %26 = getelementptr inbounds %struct.LHS_assign* %v, i32 0, i32 1 ; [#uses=1] + %27 = getelementptr inbounds %struct.expdesc* %26, i32 0, i32 1 ; [#uses=1] + %28 = getelementptr inbounds %2* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %3* %28, i32 0, i32 0 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.FuncState* %31, i32 0, i32 0 ; [#uses=1] + %33 = load %struct.Proto** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Proto* %33, i32 0, i32 4 ; [#uses=1] + %35 = load i32** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds i32* %35, i32 %30 ; [#uses=1] + store i32 %25, i32* %36 + br label %40 + +; <label>:37 ; preds = %0 + %38 = getelementptr inbounds %struct.LHS_assign* %v, i32 0, i32 0 ; [#uses=1] + store %struct.LHS_assign* null, %struct.LHS_assign** %38, align 4 + %39 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z10assignmentP8LexStateP10LHS_assigni(%struct.LexState* %39, %struct.LHS_assign* %v, i32 1) + br label %40 + +; <label>:40 ; preds = %37, %11 + ret void +} + +; [#uses=3] +define internal void @_Z10primaryexpP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=10] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=9] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + %key = alloca %struct.expdesc, align 4 ; [#uses=2] + %key1 = alloca %struct.expdesc, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z9prefixexpP8LexStateP7expdesc(%struct.LexState* %6, %struct.expdesc* %7) + br label %8 + +; <label>:8 ; preds = %36, %0 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 3 ; [#uses=1] + %11 = getelementptr inbounds %struct.Token* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + switch i32 %12, label %35 [ + i32 46, label %13 + i32 91, label %16 + i32 58, label %23 + i32 40, label %30 + i32 286, label %30 + i32 123, label %30 + ] + +; <label>:13 ; preds = %8 + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z5fieldP8LexStateP7expdesc(%struct.LexState* %14, %struct.expdesc* %15) + br label %36 + +; <label>:16 ; preds = %8 + %17 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %18 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %19 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %17, %struct.expdesc* %18) ; [#uses=0] + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z6yindexP8LexStateP7expdesc(%struct.LexState* %20, %struct.expdesc* %key) + %21 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %22 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z12luaK_indexedP9FuncStateP7expdescS2_(%struct.FuncState* %21, %struct.expdesc* %22, %struct.expdesc* %key) + br label %36 + +; <label>:23 ; preds = %8 + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %24) + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknameP8LexStateP7expdesc(%struct.LexState* %25, %struct.expdesc* %key1) + %26 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %27 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z9luaK_selfP9FuncStateP7expdescS2_(%struct.FuncState* %26, %struct.expdesc* %27, %struct.expdesc* %key1) + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + %29 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8funcargsP8LexStateP7expdesc(%struct.LexState* %28, %struct.expdesc* %29) + br label %36 + +; <label>:30 ; preds = %8, %8, %8 + %31 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %32 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %31, %struct.expdesc* %32) + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + %34 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8funcargsP8LexStateP7expdesc(%struct.LexState* %33, %struct.expdesc* %34) + br label %36 + +; <label>:35 ; preds = %8 + ret void + +; <label>:36 ; preds = %30, %23, %16, %13 + br label %8 +} + +; [#uses=2] +define internal void @_Z10assignmentP8LexStateP10LHS_assigni(%struct.LexState* %ls, %struct.LHS_assign* %lh, i32 %nvars) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=17] + %2 = alloca %struct.LHS_assign*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=7] + %e = alloca %struct.expdesc, align 4 ; [#uses=6] + %nv = alloca %struct.LHS_assign, align 4 ; [#uses=5] + %nexps = alloca i32, align 4 ; [#uses=5] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.LHS_assign* %lh, %struct.LHS_assign** %2, align 4 + store i32 %nvars, i32* %3, align 4 + %4 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LHS_assign* %4, i32 0, i32 1 ; [#uses=1] + %6 = getelementptr inbounds %struct.expdesc* %5, i32 0, i32 0 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp sle i32 6, %7 ; [#uses=1] + br i1 %8, label %9, label %15 + +; <label>:9 ; preds = %0 + %10 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LHS_assign* %10, i32 0, i32 1 ; [#uses=1] + %12 = getelementptr inbounds %struct.expdesc* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp sle i32 %13, 9 ; [#uses=1] + br i1 %14, label %17, label %15 + +; <label>:15 ; preds = %9, %0 + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %16, i8* getelementptr inbounds ([13 x i8]* @.str12957, i32 0, i32 0)) + br label %17 + +; <label>:17 ; preds = %15, %9 + %18 = load %struct.LexState** %1, align 4 ; [#uses=1] + %19 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %18, i32 44) ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %59 + +; <label>:21 ; preds = %17 + %22 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LHS_assign* %nv, i32 0, i32 0 ; [#uses=1] + store %struct.LHS_assign* %22, %struct.LHS_assign** %23, align 4 + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.LHS_assign* %nv, i32 0, i32 1 ; [#uses=1] + call void @_Z10primaryexpP8LexStateP7expdesc(%struct.LexState* %24, %struct.expdesc* %25) + %26 = getelementptr inbounds %struct.LHS_assign* %nv, i32 0, i32 1 ; [#uses=1] + %27 = getelementptr inbounds %struct.expdesc* %26, i32 0, i32 0 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = icmp eq i32 %28, 6 ; [#uses=1] + br i1 %29, label %30, label %34 + +; <label>:30 ; preds = %21 + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.LHS_assign* %nv, i32 0, i32 1 ; [#uses=1] + call void @_Z14check_conflictP8LexStateP10LHS_assignP7expdesc(%struct.LexState* %31, %struct.LHS_assign* %32, %struct.expdesc* %33) + br label %34 + +; <label>:34 ; preds = %30, %21 + %35 = load i32* %3, align 4 ; [#uses=1] + %36 = load %struct.LexState** %1, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.LexState* %36, i32 0, i32 6 ; [#uses=1] + %38 = load %struct.lua_State** %37, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_State* %38, i32 0, i32 15 ; [#uses=1] + %40 = load i16* %39, align 2 ; [#uses=1] + %41 = zext i16 %40 to i32 ; [#uses=1] + %42 = sub nsw i32 200, %41 ; [#uses=1] + %43 = icmp sgt i32 %35, %42 ; [#uses=1] + br i1 %43, label %44, label %55 + +; <label>:44 ; preds = %34 + %45 = load %struct.LexState** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.LexState* %45, i32 0, i32 5 ; [#uses=1] + %47 = load %struct.FuncState** %46, align 4 ; [#uses=1] + %48 = load %struct.LexState** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.LexState* %48, i32 0, i32 6 ; [#uses=1] + %50 = load %struct.lua_State** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_State* %50, i32 0, i32 15 ; [#uses=1] + %52 = load i16* %51, align 2 ; [#uses=1] + %53 = zext i16 %52 to i32 ; [#uses=1] + %54 = sub nsw i32 200, %53 ; [#uses=1] + call void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %47, i32 %54, i8* getelementptr inbounds ([24 x i8]* @.str1130, i32 0, i32 0)) + br label %55 + +; <label>:55 ; preds = %44, %34 + %56 = load %struct.LexState** %1, align 4 ; [#uses=1] + %57 = load i32* %3, align 4 ; [#uses=1] + %58 = add nsw i32 %57, 1 ; [#uses=1] + call void @_Z10assignmentP8LexStateP10LHS_assigni(%struct.LexState* %56, %struct.LHS_assign* %nv, i32 %58) + br label %94 + +; <label>:59 ; preds = %17 + %60 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %60, i32 61) + %61 = load %struct.LexState** %1, align 4 ; [#uses=1] + %62 = call i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %61, %struct.expdesc* %e) ; [#uses=1] + store i32 %62, i32* %nexps, align 4 + %63 = load i32* %nexps, align 4 ; [#uses=1] + %64 = load i32* %3, align 4 ; [#uses=1] + %65 = icmp ne i32 %63, %64 ; [#uses=1] + br i1 %65, label %66, label %84 + +; <label>:66 ; preds = %59 + %67 = load %struct.LexState** %1, align 4 ; [#uses=1] + %68 = load i32* %3, align 4 ; [#uses=1] + %69 = load i32* %nexps, align 4 ; [#uses=1] + call void @_Z13adjust_assignP8LexStateiiP7expdesc(%struct.LexState* %67, i32 %68, i32 %69, %struct.expdesc* %e) + %70 = load i32* %nexps, align 4 ; [#uses=1] + %71 = load i32* %3, align 4 ; [#uses=1] + %72 = icmp sgt i32 %70, %71 ; [#uses=1] + br i1 %72, label %73, label %83 + +; <label>:73 ; preds = %66 + %74 = load i32* %nexps, align 4 ; [#uses=1] + %75 = load i32* %3, align 4 ; [#uses=1] + %76 = sub nsw i32 %74, %75 ; [#uses=1] + %77 = load %struct.LexState** %1, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.LexState* %77, i32 0, i32 5 ; [#uses=1] + %79 = load %struct.FuncState** %78, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.FuncState* %79, i32 0, i32 9 ; [#uses=2] + %81 = load i32* %80, align 4 ; [#uses=1] + %82 = sub nsw i32 %81, %76 ; [#uses=1] + store i32 %82, i32* %80, align 4 + br label %83 + +; <label>:83 ; preds = %73, %66 + br label %93 + +; <label>:84 ; preds = %59 + %85 = load %struct.LexState** %1, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.LexState* %85, i32 0, i32 5 ; [#uses=1] + %87 = load %struct.FuncState** %86, align 4 ; [#uses=1] + call void @_Z14luaK_setoneretP9FuncStateP7expdesc(%struct.FuncState* %87, %struct.expdesc* %e) + %88 = load %struct.LexState** %1, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.LexState* %88, i32 0, i32 5 ; [#uses=1] + %90 = load %struct.FuncState** %89, align 4 ; [#uses=1] + %91 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %92 = getelementptr inbounds %struct.LHS_assign* %91, i32 0, i32 1 ; [#uses=1] + call void @_Z13luaK_storevarP9FuncStateP7expdescS2_(%struct.FuncState* %90, %struct.expdesc* %92, %struct.expdesc* %e) + br label %106 + +; <label>:93 ; preds = %83 + br label %94 + +; <label>:94 ; preds = %93, %55 + %95 = load %struct.LexState** %1, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.LexState* %95, i32 0, i32 5 ; [#uses=1] + %97 = load %struct.FuncState** %96, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.FuncState* %97, i32 0, i32 9 ; [#uses=1] + %99 = load i32* %98, align 4 ; [#uses=1] + %100 = sub nsw i32 %99, 1 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %e, i32 12, i32 %100) + %101 = load %struct.LexState** %1, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.LexState* %101, i32 0, i32 5 ; [#uses=1] + %103 = load %struct.FuncState** %102, align 4 ; [#uses=1] + %104 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.LHS_assign* %104, i32 0, i32 1 ; [#uses=1] + call void @_Z13luaK_storevarP9FuncStateP7expdescS2_(%struct.FuncState* %103, %struct.expdesc* %105, %struct.expdesc* %e) + br label %106 + +; <label>:106 ; preds = %94, %84 + ret void +} + +; [#uses=1] +define internal void @_Z14check_conflictP8LexStateP10LHS_assignP7expdesc(%struct.LexState* %ls, %struct.LHS_assign* %lh, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca %struct.LHS_assign*, align 4 ; [#uses=9] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + %extra = alloca i32, align 4 ; [#uses=3] + %conflict = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.LHS_assign* %lh, %struct.LHS_assign** %2, align 4 + store %struct.expdesc* %v, %struct.expdesc** %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 5 ; [#uses=1] + %6 = load %struct.FuncState** %5, align 4 ; [#uses=1] + store %struct.FuncState* %6, %struct.FuncState** %fs, align 4 + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 9 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + store i32 %9, i32* %extra, align 4 + store i32 0, i32* %conflict, align 4 + br label %10 + +; <label>:10 ; preds = %61, %0 + %11 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %12 = icmp ne %struct.LHS_assign* %11, null ; [#uses=1] + br i1 %12, label %13, label %65 + +; <label>:13 ; preds = %10 + %14 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.LHS_assign* %14, i32 0, i32 1 ; [#uses=1] + %16 = getelementptr inbounds %struct.expdesc* %15, i32 0, i32 0 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 9 ; [#uses=1] + br i1 %18, label %19, label %60 + +; <label>:19 ; preds = %13 + %20 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.LHS_assign* %20, i32 0, i32 1 ; [#uses=1] + %22 = getelementptr inbounds %struct.expdesc* %21, i32 0, i32 1 ; [#uses=1] + %23 = getelementptr inbounds %2* %22, i32 0, i32 0 ; [#uses=1] + %24 = getelementptr inbounds %3* %23, i32 0, i32 0 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.expdesc* %26, i32 0, i32 1 ; [#uses=1] + %28 = getelementptr inbounds %2* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %3* %28, i32 0, i32 0 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = icmp eq i32 %25, %30 ; [#uses=1] + br i1 %31, label %32, label %39 + +; <label>:32 ; preds = %19 + store i32 1, i32* %conflict, align 4 + %33 = load i32* %extra, align 4 ; [#uses=1] + %34 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.LHS_assign* %34, i32 0, i32 1 ; [#uses=1] + %36 = getelementptr inbounds %struct.expdesc* %35, i32 0, i32 1 ; [#uses=1] + %37 = getelementptr inbounds %2* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %3* %37, i32 0, i32 0 ; [#uses=1] + store i32 %33, i32* %38, align 4 + br label %39 + +; <label>:39 ; preds = %32, %19 + %40 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LHS_assign* %40, i32 0, i32 1 ; [#uses=1] + %42 = getelementptr inbounds %struct.expdesc* %41, i32 0, i32 1 ; [#uses=1] + %43 = getelementptr inbounds %2* %42, i32 0, i32 0 ; [#uses=1] + %44 = getelementptr inbounds %3* %43, i32 0, i32 1 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.expdesc* %46, i32 0, i32 1 ; [#uses=1] + %48 = getelementptr inbounds %2* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %3* %48, i32 0, i32 0 ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = icmp eq i32 %45, %50 ; [#uses=1] + br i1 %51, label %52, label %59 + +; <label>:52 ; preds = %39 + store i32 1, i32* %conflict, align 4 + %53 = load i32* %extra, align 4 ; [#uses=1] + %54 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.LHS_assign* %54, i32 0, i32 1 ; [#uses=1] + %56 = getelementptr inbounds %struct.expdesc* %55, i32 0, i32 1 ; [#uses=1] + %57 = getelementptr inbounds %2* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %3* %57, i32 0, i32 1 ; [#uses=1] + store i32 %53, i32* %58, align 4 + br label %59 + +; <label>:59 ; preds = %52, %39 + br label %60 + +; <label>:60 ; preds = %59, %13 + br label %61 + +; <label>:61 ; preds = %60 + %62 = load %struct.LHS_assign** %2, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.LHS_assign* %62, i32 0, i32 0 ; [#uses=1] + %64 = load %struct.LHS_assign** %63, align 4 ; [#uses=1] + store %struct.LHS_assign* %64, %struct.LHS_assign** %2, align 4 + br label %10 + +; <label>:65 ; preds = %10 + %66 = load i32* %conflict, align 4 ; [#uses=1] + %67 = icmp ne i32 %66, 0 ; [#uses=1] + br i1 %67, label %68, label %80 + +; <label>:68 ; preds = %65 + %69 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %70 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.FuncState* %70, i32 0, i32 9 ; [#uses=1] + %72 = load i32* %71, align 4 ; [#uses=1] + %73 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.expdesc* %73, i32 0, i32 1 ; [#uses=1] + %75 = getelementptr inbounds %2* %74, i32 0, i32 0 ; [#uses=1] + %76 = getelementptr inbounds %3* %75, i32 0, i32 0 ; [#uses=1] + %77 = load i32* %76, align 4 ; [#uses=1] + %78 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %69, i32 0, i32 %72, i32 %77, i32 0) ; [#uses=0] + %79 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %79, i32 1) + br label %80 + +; <label>:80 ; preds = %68, %65 + ret void +} + +; [#uses=5] +define internal void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %fs, i32 %limit, i8* %what) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=3] + %msg = alloca i8*, align 4 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %limit, i32* %2, align 4 + store i8* %what, i8** %3, align 4 + %4 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.FuncState* %4, i32 0, i32 0 ; [#uses=1] + %6 = load %struct.Proto** %5, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Proto* %6, i32 0, i32 16 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %17 + +; <label>:10 ; preds = %0 + %11 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.FuncState* %11, i32 0, i32 4 ; [#uses=1] + %13 = load %struct.lua_State** %12, align 4 ; [#uses=1] + %14 = load i32* %2, align 4 ; [#uses=1] + %15 = load i8** %3, align 4 ; [#uses=1] + %16 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([34 x i8]* @.str10139, i32 0, i32 0), i32 %14, i8* %15) ; [#uses=1] + br label %29 + +; <label>:17 ; preds = %0 + %18 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.FuncState* %18, i32 0, i32 4 ; [#uses=1] + %20 = load %struct.lua_State** %19, align 4 ; [#uses=1] + %21 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.FuncState* %21, i32 0, i32 0 ; [#uses=1] + %23 = load %struct.Proto** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 16 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = load i32* %2, align 4 ; [#uses=1] + %27 = load i8** %3, align 4 ; [#uses=1] + %28 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %20, i8* getelementptr inbounds ([40 x i8]* @.str11140, i32 0, i32 0), i32 %25, i32 %26, i8* %27) ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %17, %10 + %30 = phi i8* [ %16, %10 ], [ %28, %17 ] ; [#uses=1] + store i8* %30, i8** %msg, align 4 + %31 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.FuncState* %31, i32 0, i32 3 ; [#uses=1] + %33 = load %struct.LexState** %32, align 4 ; [#uses=1] + %34 = load i8** %msg, align 4 ; [#uses=1] + call void @_Z13luaX_lexerrorP8LexStatePKci(%struct.LexState* %33, i8* %34, i32 0) + ret void +} + +; [#uses=12] +define internal void @_Z9checknextP8LexStatei(%struct.LexState* %ls, i32 %c) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %c, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + call void @_Z5checkP8LexStatei(%struct.LexState* %3, i32 %4) + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %5) + ret void +} + +; [#uses=5] +define internal i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=5] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %n = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + store i32 1, i32* %n, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %3, %struct.expdesc* %4) + br label %5 + +; <label>:5 ; preds = %9, %0 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %6, i32 44) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %18 + +; <label>:9 ; preds = %5 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LexState* %10, i32 0, i32 5 ; [#uses=1] + %12 = load %struct.FuncState** %11, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %12, %struct.expdesc* %13) + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %14, %struct.expdesc* %15) + %16 = load i32* %n, align 4 ; [#uses=1] + %17 = add nsw i32 %16, 1 ; [#uses=1] + store i32 %17, i32* %n, align 4 + br label %5 + +; <label>:18 ; preds = %5 + %19 = load i32* %n, align 4 ; [#uses=1] + ret i32 %19 +} + +; [#uses=3] +define internal void @_Z13adjust_assignP8LexStateiiP7expdesc(%struct.LexState* %ls, i32 %nvars, i32 %nexps, %struct.expdesc* %e) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=6] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=7] + %extra = alloca i32, align 4 ; [#uses=11] + %reg = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %nvars, i32* %2, align 4 + store i32 %nexps, i32* %3, align 4 + store %struct.expdesc* %e, %struct.expdesc** %4, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.FuncState** %6, align 4 ; [#uses=1] + store %struct.FuncState* %7, %struct.FuncState** %fs, align 4 + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = sub nsw i32 %8, %9 ; [#uses=1] + store i32 %10, i32* %extra, align 4 + %11 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.expdesc* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %13, 13 ; [#uses=1] + br i1 %14, label %20, label %15 + +; <label>:15 ; preds = %0 + %16 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.expdesc* %16, i32 0, i32 0 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 14 ; [#uses=1] + br i1 %19, label %20, label %37 + +; <label>:20 ; preds = %15, %0 + %21 = load i32* %extra, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + store i32 %22, i32* %extra, align 4 + %23 = load i32* %extra, align 4 ; [#uses=1] + %24 = icmp slt i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %26 + +; <label>:25 ; preds = %20 + store i32 0, i32* %extra, align 4 + br label %26 + +; <label>:26 ; preds = %25, %20 + %27 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %28 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %29 = load i32* %extra, align 4 ; [#uses=1] + call void @_Z15luaK_setreturnsP9FuncStateP7expdesci(%struct.FuncState* %27, %struct.expdesc* %28, i32 %29) + %30 = load i32* %extra, align 4 ; [#uses=1] + %31 = icmp sgt i32 %30, 1 ; [#uses=1] + br i1 %31, label %32, label %36 + +; <label>:32 ; preds = %26 + %33 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %34 = load i32* %extra, align 4 ; [#uses=1] + %35 = sub nsw i32 %34, 1 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %33, i32 %35) + br label %36 + +; <label>:36 ; preds = %32, %26 + br label %58 + +; <label>:37 ; preds = %15 + %38 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.expdesc* %38, i32 0, i32 0 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = icmp ne i32 %40, 0 ; [#uses=1] + br i1 %41, label %42, label %45 + +; <label>:42 ; preds = %37 + %43 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %44 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %43, %struct.expdesc* %44) + br label %45 + +; <label>:45 ; preds = %42, %37 + %46 = load i32* %extra, align 4 ; [#uses=1] + %47 = icmp sgt i32 %46, 0 ; [#uses=1] + br i1 %47, label %48, label %57 + +; <label>:48 ; preds = %45 + %49 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.FuncState* %49, i32 0, i32 9 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + store i32 %51, i32* %reg, align 4 + %52 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %53 = load i32* %extra, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %52, i32 %53) + %54 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %55 = load i32* %reg, align 4 ; [#uses=1] + %56 = load i32* %extra, align 4 ; [#uses=1] + call void @_Z8luaK_nilP9FuncStateii(%struct.FuncState* %54, i32 %55, i32 %56) + br label %57 + +; <label>:57 ; preds = %48, %45 + br label %58 + +; <label>:58 ; preds = %57, %36 + ret void +} + +; [#uses=14] +define internal void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %e, i32 %k, i32 %i) nounwind { + %1 = alloca %struct.expdesc*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.expdesc* %e, %struct.expdesc** %1, align 4 + store i32 %k, i32* %2, align 4 + store i32 %i, i32* %3, align 4 + %4 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.expdesc* %4, i32 0, i32 2 ; [#uses=1] + store i32 -1, i32* %5, align 4 + %6 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.expdesc* %6, i32 0, i32 3 ; [#uses=1] + store i32 -1, i32* %7, align 4 + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.expdesc* %9, i32 0, i32 0 ; [#uses=1] + store i32 %8, i32* %10, align 4 + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = load %struct.expdesc** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.expdesc* %12, i32 0, i32 1 ; [#uses=1] + %14 = getelementptr inbounds %2* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %3* %14, i32 0, i32 0 ; [#uses=1] + store i32 %11, i32* %15, align 4 + ret void +} + +; [#uses=8] +define internal void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z7subexprP8LexStateP7expdescj(%struct.LexState* %3, %struct.expdesc* %4, i32 0) ; [#uses=0] + ret void +} + +; [#uses=3] +define internal i32 @_Z7subexprP8LexStateP7expdescj(%struct.LexState* %ls, %struct.expdesc* %v, i32 %limit) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=13] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=6] + %3 = alloca i32, align 4 ; [#uses=2] + %op = alloca i32, align 4 ; [#uses=8] + %uop = alloca i32, align 4 ; [#uses=3] + %v2 = alloca %struct.expdesc, align 4 ; [#uses=2] + %nextop = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + store i32 %limit, i32* %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z10enterlevelP8LexState(%struct.LexState* %4) + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 3 ; [#uses=1] + %7 = getelementptr inbounds %struct.Token* %6, i32 0, i32 0 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = call i32 @_Z8getunopri(i32 %8) ; [#uses=1] + store i32 %9, i32* %uop, align 4 + %10 = load i32* %uop, align 4 ; [#uses=1] + %11 = icmp ne i32 %10, 3 ; [#uses=1] + br i1 %11, label %12, label %22 + +; <label>:12 ; preds = %0 + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %13) + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %16 = call i32 @_Z7subexprP8LexStateP7expdescj(%struct.LexState* %14, %struct.expdesc* %15, i32 8) ; [#uses=0] + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.LexState* %17, i32 0, i32 5 ; [#uses=1] + %19 = load %struct.FuncState** %18, align 4 ; [#uses=1] + %20 = load i32* %uop, align 4 ; [#uses=1] + %21 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z11luaK_prefixP9FuncState5UnOprP7expdesc(%struct.FuncState* %19, i32 %20, %struct.expdesc* %21) + br label %25 + +; <label>:22 ; preds = %0 + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z9simpleexpP8LexStateP7expdesc(%struct.LexState* %23, %struct.expdesc* %24) + br label %25 + +; <label>:25 ; preds = %22, %12 + %26 = load %struct.LexState** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.LexState* %26, i32 0, i32 3 ; [#uses=1] + %28 = getelementptr inbounds %struct.Token* %27, i32 0, i32 0 ; [#uses=1] + %29 = load i32* %28, align 4 ; [#uses=1] + %30 = call i32 @_Z9getbinopri(i32 %29) ; [#uses=1] + store i32 %30, i32* %op, align 4 + br label %31 + +; <label>:31 ; preds = %44, %25 + %32 = load i32* %op, align 4 ; [#uses=1] + %33 = icmp ne i32 %32, 15 ; [#uses=1] + br i1 %33, label %34, label %42 + +; <label>:34 ; preds = %31 + %35 = load i32* %op, align 4 ; [#uses=1] + %36 = getelementptr inbounds [15 x %struct.upvaldesc]* @_ZL8priority, i32 0, i32 %35 ; [#uses=1] + %37 = getelementptr inbounds %struct.upvaldesc* %36, i32 0, i32 0 ; [#uses=1] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = load i32* %3, align 4 ; [#uses=1] + %41 = icmp ugt i32 %39, %40 ; [#uses=1] + br label %42 + +; <label>:42 ; preds = %34, %31 + %43 = phi i1 [ false, %31 ], [ %41, %34 ] ; [#uses=1] + br i1 %43, label %44, label %64 + +; <label>:44 ; preds = %42 + %45 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %45) + %46 = load %struct.LexState** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.LexState* %46, i32 0, i32 5 ; [#uses=1] + %48 = load %struct.FuncState** %47, align 4 ; [#uses=1] + %49 = load i32* %op, align 4 ; [#uses=1] + %50 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z10luaK_infixP9FuncState6BinOprP7expdesc(%struct.FuncState* %48, i32 %49, %struct.expdesc* %50) + %51 = load %struct.LexState** %1, align 4 ; [#uses=1] + %52 = load i32* %op, align 4 ; [#uses=1] + %53 = getelementptr inbounds [15 x %struct.upvaldesc]* @_ZL8priority, i32 0, i32 %52 ; [#uses=1] + %54 = getelementptr inbounds %struct.upvaldesc* %53, i32 0, i32 1 ; [#uses=1] + %55 = load i8* %54, align 1 ; [#uses=1] + %56 = zext i8 %55 to i32 ; [#uses=1] + %57 = call i32 @_Z7subexprP8LexStateP7expdescj(%struct.LexState* %51, %struct.expdesc* %v2, i32 %56) ; [#uses=1] + store i32 %57, i32* %nextop, align 4 + %58 = load %struct.LexState** %1, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.LexState* %58, i32 0, i32 5 ; [#uses=1] + %60 = load %struct.FuncState** %59, align 4 ; [#uses=1] + %61 = load i32* %op, align 4 ; [#uses=1] + %62 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z11luaK_posfixP9FuncState6BinOprP7expdescS3_(%struct.FuncState* %60, i32 %61, %struct.expdesc* %62, %struct.expdesc* %v2) + %63 = load i32* %nextop, align 4 ; [#uses=1] + store i32 %63, i32* %op, align 4 + br label %31 + +; <label>:64 ; preds = %42 + %65 = load %struct.LexState** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.LexState* %65, i32 0, i32 6 ; [#uses=1] + %67 = load %struct.lua_State** %66, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_State* %67, i32 0, i32 15 ; [#uses=2] + %69 = load i16* %68, align 2 ; [#uses=1] + %70 = add i16 %69, -1 ; [#uses=1] + store i16 %70, i16* %68, align 2 + %71 = load i32* %op, align 4 ; [#uses=1] + ret i32 %71 +} + +; [#uses=1] +define internal i32 @_Z8getunopri(i32 %op) nounwind { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + store i32 %op, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + switch i32 %3, label %7 [ + i32 270, label %4 + i32 45, label %5 + i32 35, label %6 + ] + +; <label>:4 ; preds = %0 + store i32 1, i32* %1 + br label %8 + +; <label>:5 ; preds = %0 + store i32 0, i32* %1 + br label %8 + +; <label>:6 ; preds = %0 + store i32 2, i32* %1 + br label %8 + +; <label>:7 ; preds = %0 + store i32 3, i32* %1 + br label %8 + +; <label>:8 ; preds = %7, %6, %5, %4 + %9 = load i32* %1 ; [#uses=1] + ret i32 %9 +} + +; [#uses=1] +define internal void @_Z9simpleexpP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=13] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=11] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 3 ; [#uses=1] + %5 = getelementptr inbounds %struct.Token* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %67 [ + i32 284, label %7 + i32 286, label %18 + i32 269, label %27 + i32 275, label %29 + i32 263, label %31 + i32 279, label %33 + i32 123, label %57 + i32 265, label %60 + ] + +; <label>:7 ; preds = %0 + %8 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %8, i32 5, i32 0) + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 3 ; [#uses=1] + %11 = getelementptr inbounds %struct.Token* %10, i32 0, i32 1 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = load double* %12, align 4 ; [#uses=1] + %14 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.expdesc* %14, i32 0, i32 1 ; [#uses=1] + %16 = getelementptr inbounds %2* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %3* %16 to double* ; [#uses=1] + store double %13, double* %17, align 4 + br label %70 + +; <label>:18 ; preds = %0 + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.LexState* %21, i32 0, i32 3 ; [#uses=1] + %23 = getelementptr inbounds %struct.Token* %22, i32 0, i32 1 ; [#uses=1] + %24 = getelementptr inbounds %union.anon* %23, i32 0, i32 0 ; [#uses=1] + %25 = bitcast double* %24 to %union.TString** ; [#uses=1] + %26 = load %union.TString** %25, align 4 ; [#uses=1] + call void @_Z10codestringP8LexStateP7expdescP7TString(%struct.LexState* %19, %struct.expdesc* %20, %union.TString* %26) + br label %70 + +; <label>:27 ; preds = %0 + %28 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %28, i32 1, i32 0) + br label %70 + +; <label>:29 ; preds = %0 + %30 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %30, i32 2, i32 0) + br label %70 + +; <label>:31 ; preds = %0 + %32 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %32, i32 3, i32 0) + br label %70 + +; <label>:33 ; preds = %0 + %34 = load %struct.LexState** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.LexState* %34, i32 0, i32 5 ; [#uses=1] + %36 = load %struct.FuncState** %35, align 4 ; [#uses=1] + store %struct.FuncState* %36, %struct.FuncState** %fs, align 4 + %37 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.FuncState* %37, i32 0, i32 0 ; [#uses=1] + %39 = load %struct.Proto** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Proto* %39, i32 0, i32 21 ; [#uses=1] + %41 = load i8* %40, align 1 ; [#uses=1] + %42 = icmp ne i8 %41, 0 ; [#uses=1] + br i1 %42, label %45, label %43 + +; <label>:43 ; preds = %33 + %44 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %44, i8* getelementptr inbounds ([43 x i8]* @.str2131, i32 0, i32 0)) + br label %45 + +; <label>:45 ; preds = %43, %33 + %46 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.FuncState* %46, i32 0, i32 0 ; [#uses=1] + %48 = load %struct.Proto** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Proto* %48, i32 0, i32 21 ; [#uses=2] + %50 = load i8* %49, align 1 ; [#uses=1] + %51 = zext i8 %50 to i32 ; [#uses=1] + %52 = and i32 %51, -5 ; [#uses=1] + %53 = trunc i32 %52 to i8 ; [#uses=1] + store i8 %53, i8* %49, align 1 + %54 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %55 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %56 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %55, i32 37, i32 0, i32 1, i32 0) ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %54, i32 14, i32 %56) + br label %70 + +; <label>:57 ; preds = %0 + %58 = load %struct.LexState** %1, align 4 ; [#uses=1] + %59 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z11constructorP8LexStateP7expdesc(%struct.LexState* %58, %struct.expdesc* %59) + br label %72 + +; <label>:60 ; preds = %0 + %61 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %61) + %62 = load %struct.LexState** %1, align 4 ; [#uses=1] + %63 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %64 = load %struct.LexState** %1, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.LexState* %64, i32 0, i32 1 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + call void @_Z4bodyP8LexStateP7expdescii(%struct.LexState* %62, %struct.expdesc* %63, i32 0, i32 %66) + br label %72 + +; <label>:67 ; preds = %0 + %68 = load %struct.LexState** %1, align 4 ; [#uses=1] + %69 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z10primaryexpP8LexStateP7expdesc(%struct.LexState* %68, %struct.expdesc* %69) + br label %72 + +; <label>:70 ; preds = %45, %31, %29, %27, %18, %7 + %71 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %71) + br label %72 + +; <label>:72 ; preds = %70, %67, %60, %57 + ret void +} + +; [#uses=1] +define internal i32 @_Z9getbinopri(i32 %op) nounwind { + %1 = alloca i32, align 4 ; [#uses=17] + %2 = alloca i32, align 4 ; [#uses=2] + store i32 %op, i32* %2, align 4 + %3 = load i32* %2, align 4 ; [#uses=1] + switch i32 %3, label %19 [ + i32 43, label %4 + i32 45, label %5 + i32 42, label %6 + i32 47, label %7 + i32 37, label %8 + i32 94, label %9 + i32 278, label %10 + i32 283, label %11 + i32 280, label %12 + i32 60, label %13 + i32 282, label %14 + i32 62, label %15 + i32 281, label %16 + i32 257, label %17 + i32 271, label %18 + ] + +; <label>:4 ; preds = %0 + store i32 0, i32* %1 + br label %20 + +; <label>:5 ; preds = %0 + store i32 1, i32* %1 + br label %20 + +; <label>:6 ; preds = %0 + store i32 2, i32* %1 + br label %20 + +; <label>:7 ; preds = %0 + store i32 3, i32* %1 + br label %20 + +; <label>:8 ; preds = %0 + store i32 4, i32* %1 + br label %20 + +; <label>:9 ; preds = %0 + store i32 5, i32* %1 + br label %20 + +; <label>:10 ; preds = %0 + store i32 6, i32* %1 + br label %20 + +; <label>:11 ; preds = %0 + store i32 7, i32* %1 + br label %20 + +; <label>:12 ; preds = %0 + store i32 8, i32* %1 + br label %20 + +; <label>:13 ; preds = %0 + store i32 9, i32* %1 + br label %20 + +; <label>:14 ; preds = %0 + store i32 10, i32* %1 + br label %20 + +; <label>:15 ; preds = %0 + store i32 11, i32* %1 + br label %20 + +; <label>:16 ; preds = %0 + store i32 12, i32* %1 + br label %20 + +; <label>:17 ; preds = %0 + store i32 13, i32* %1 + br label %20 + +; <label>:18 ; preds = %0 + store i32 14, i32* %1 + br label %20 + +; <label>:19 ; preds = %0 + store i32 15, i32* %1 + br label %20 + +; <label>:20 ; preds = %19, %18, %17, %16, %15, %14, %13, %12, %11, %10, %9, %8, %7, %6, %5, %4 + %21 = load i32* %1 ; [#uses=1] + ret i32 %21 +} + +; [#uses=3] +define internal void @_Z10codestringP8LexStateP7expdescP7TString(%struct.LexState* %ls, %struct.expdesc* %e, %union.TString* %s) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=2] + %3 = alloca %union.TString*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store %union.TString* %s, %union.TString** %3, align 4 + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.FuncState** %6, align 4 ; [#uses=1] + %8 = load %union.TString** %3, align 4 ; [#uses=1] + %9 = call i32 @_Z12luaK_stringKP9FuncStateP7TString(%struct.FuncState* %7, %union.TString* %8) ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %4, i32 4, i32 %9) + ret void +} + +; [#uses=2] +define internal void @_Z11constructorP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %t) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=16] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=8] + %line = alloca i32, align 4 ; [#uses=2] + %pc = alloca i32, align 4 ; [#uses=6] + %cc = alloca %struct.ConsControl, align 4 ; [#uses=13] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %t, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + store i32 %8, i32* %line, align 4 + %9 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %10 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %9, i32 10, i32 0, i32 0, i32 0) ; [#uses=1] + store i32 %10, i32* %pc, align 4 + %11 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 4 ; [#uses=1] + store i32 0, i32* %11, align 4 + %12 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %12, align 4 + %13 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 3 ; [#uses=1] + store i32 0, i32* %13, align 4 + %14 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 1 ; [#uses=1] + store %struct.expdesc* %14, %struct.expdesc** %15, align 4 + %16 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %17 = load i32* %pc, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %16, i32 11, i32 %17) + %18 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 0 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %18, i32 0, i32 0) + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.LexState* %19, i32 0, i32 5 ; [#uses=1] + %21 = load %struct.FuncState** %20, align 4 ; [#uses=1] + %22 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %21, %struct.expdesc* %22) + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %23, i32 123) + br label %24 + +; <label>:24 ; preds = %62, %0 + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.LexState* %25, i32 0, i32 3 ; [#uses=1] + %27 = getelementptr inbounds %struct.Token* %26, i32 0, i32 0 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = icmp eq i32 %28, 125 ; [#uses=1] + br i1 %29, label %30, label %31 + +; <label>:30 ; preds = %24 + br label %64 + +; <label>:31 ; preds = %24 + %32 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z14closelistfieldP9FuncStateP11ConsControl(%struct.FuncState* %32, %struct.ConsControl* %cc) + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.LexState* %33, i32 0, i32 3 ; [#uses=1] + %35 = getelementptr inbounds %struct.Token* %34, i32 0, i32 0 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + switch i32 %36, label %51 [ + i32 285, label %37 + i32 91, label %49 + ] + +; <label>:37 ; preds = %31 + %38 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z14luaX_lookaheadP8LexState(%struct.LexState* %38) + %39 = load %struct.LexState** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.LexState* %39, i32 0, i32 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Token* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = icmp ne i32 %42, 61 ; [#uses=1] + br i1 %43, label %44, label %46 + +; <label>:44 ; preds = %37 + %45 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9listfieldP8LexStateP11ConsControl(%struct.LexState* %45, %struct.ConsControl* %cc) + br label %48 + +; <label>:46 ; preds = %37 + %47 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z8recfieldP8LexStateP11ConsControl(%struct.LexState* %47, %struct.ConsControl* %cc) + br label %48 + +; <label>:48 ; preds = %46, %44 + br label %53 + +; <label>:49 ; preds = %31 + %50 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z8recfieldP8LexStateP11ConsControl(%struct.LexState* %50, %struct.ConsControl* %cc) + br label %53 + +; <label>:51 ; preds = %31 + %52 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9listfieldP8LexStateP11ConsControl(%struct.LexState* %52, %struct.ConsControl* %cc) + br label %53 + +; <label>:53 ; preds = %51, %49, %48 + br label %54 + +; <label>:54 ; preds = %53 + %55 = load %struct.LexState** %1, align 4 ; [#uses=1] + %56 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %55, i32 44) ; [#uses=1] + %57 = icmp ne i32 %56, 0 ; [#uses=1] + br i1 %57, label %62, label %58 + +; <label>:58 ; preds = %54 + %59 = load %struct.LexState** %1, align 4 ; [#uses=1] + %60 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %59, i32 59) ; [#uses=1] + %61 = icmp ne i32 %60, 0 ; [#uses=1] + br label %62 + +; <label>:62 ; preds = %58, %54 + %63 = phi i1 [ true, %54 ], [ %61, %58 ] ; [#uses=1] + br i1 %63, label %24, label %64 + +; <label>:64 ; preds = %62, %30 + %65 = load %struct.LexState** %1, align 4 ; [#uses=1] + %66 = load i32* %line, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %65, i32 125, i32 123, i32 %66) + %67 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z13lastlistfieldP9FuncStateP11ConsControl(%struct.FuncState* %67, %struct.ConsControl* %cc) + %68 = load i32* %pc, align 4 ; [#uses=1] + %69 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.FuncState* %69, i32 0, i32 0 ; [#uses=1] + %71 = load %struct.Proto** %70, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.Proto* %71, i32 0, i32 4 ; [#uses=1] + %73 = load i32** %72, align 4 ; [#uses=1] + %74 = getelementptr inbounds i32* %73, i32 %68 ; [#uses=1] + %75 = load i32* %74 ; [#uses=1] + %76 = and i32 %75, 8388607 ; [#uses=1] + %77 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 3 ; [#uses=1] + %78 = load i32* %77, align 4 ; [#uses=1] + %79 = call i32 @_Z11luaO_int2fbj(i32 %78) ; [#uses=1] + %80 = shl i32 %79, 23 ; [#uses=1] + %81 = and i32 %80, -8388608 ; [#uses=1] + %82 = or i32 %76, %81 ; [#uses=1] + %83 = load i32* %pc, align 4 ; [#uses=1] + %84 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.FuncState* %84, i32 0, i32 0 ; [#uses=1] + %86 = load %struct.Proto** %85, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Proto* %86, i32 0, i32 4 ; [#uses=1] + %88 = load i32** %87, align 4 ; [#uses=1] + %89 = getelementptr inbounds i32* %88, i32 %83 ; [#uses=1] + store i32 %82, i32* %89 + %90 = load i32* %pc, align 4 ; [#uses=1] + %91 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %92 = getelementptr inbounds %struct.FuncState* %91, i32 0, i32 0 ; [#uses=1] + %93 = load %struct.Proto** %92, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.Proto* %93, i32 0, i32 4 ; [#uses=1] + %95 = load i32** %94, align 4 ; [#uses=1] + %96 = getelementptr inbounds i32* %95, i32 %90 ; [#uses=1] + %97 = load i32* %96 ; [#uses=1] + %98 = and i32 %97, -8372225 ; [#uses=1] + %99 = getelementptr inbounds %struct.ConsControl* %cc, i32 0, i32 2 ; [#uses=1] + %100 = load i32* %99, align 4 ; [#uses=1] + %101 = call i32 @_Z11luaO_int2fbj(i32 %100) ; [#uses=1] + %102 = shl i32 %101, 14 ; [#uses=1] + %103 = and i32 %102, 8372224 ; [#uses=1] + %104 = or i32 %98, %103 ; [#uses=1] + %105 = load i32* %pc, align 4 ; [#uses=1] + %106 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.FuncState* %106, i32 0, i32 0 ; [#uses=1] + %108 = load %struct.Proto** %107, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.Proto* %108, i32 0, i32 4 ; [#uses=1] + %110 = load i32** %109, align 4 ; [#uses=1] + %111 = getelementptr inbounds i32* %110, i32 %105 ; [#uses=1] + store i32 %104, i32* %111 + ret void +} + +; [#uses=3] +define internal void @_Z4bodyP8LexStateP7expdescii(%struct.LexState* %ls, %struct.expdesc* %e, i32 %needself, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=13] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=3] + %new_fs = alloca %struct.FuncState, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + store i32 %needself, i32* %3, align 4 + store i32 %line, i32* %4, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9open_funcP8LexStateP9FuncState(%struct.LexState* %5, %struct.FuncState* %new_fs) + %6 = load i32* %4, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %new_fs, i32 0, i32 0 ; [#uses=1] + %8 = load %struct.Proto** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 16 ; [#uses=1] + store i32 %6, i32* %9, align 4 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %10, i32 40) + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %18 + +; <label>:13 ; preds = %0 + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %15, i8* getelementptr inbounds ([5 x i8]* @.str3132, i32 0, i32 0), i32 4) ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %14, %union.TString* %16, i32 0) + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %17, i32 1) + br label %18 + +; <label>:18 ; preds = %13, %0 + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z7parlistP8LexState(%struct.LexState* %19) + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %20, i32 41) + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5chunkP8LexState(%struct.LexState* %21) + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.FuncState* %new_fs, i32 0, i32 0 ; [#uses=1] + %26 = load %struct.Proto** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 17 ; [#uses=1] + store i32 %24, i32* %27, align 4 + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + %29 = load i32* %4, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %28, i32 262, i32 265, i32 %29) + %30 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z10close_funcP8LexState(%struct.LexState* %30) + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z11pushclosureP8LexStateP9FuncStateP7expdesc(%struct.LexState* %31, %struct.FuncState* %new_fs, %struct.expdesc* %32) + ret void +} + +; [#uses=14] +define internal void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %ls, %union.TString* %name, i32 %n) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.TString* %name, %union.TString** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 5 ; [#uses=1] + %6 = load %struct.FuncState** %5, align 4 ; [#uses=1] + store %struct.FuncState* %6, %struct.FuncState** %fs, align 4 + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 13 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = zext i8 %9 to i32 ; [#uses=1] + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = add nsw i32 %10, %11 ; [#uses=1] + %13 = add nsw i32 %12, 1 ; [#uses=1] + %14 = icmp sgt i32 %13, 200 ; [#uses=1] + br i1 %14, label %15, label %17 + +; <label>:15 ; preds = %0 + %16 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %16, i32 200, i8* getelementptr inbounds ([16 x i8]* @.str7136, i32 0, i32 0)) + br label %17 + +; <label>:17 ; preds = %15, %0 + %18 = load %struct.LexState** %1, align 4 ; [#uses=1] + %19 = load %union.TString** %2, align 4 ; [#uses=1] + %20 = call i32 @_Z16registerlocalvarP8LexStateP7TString(%struct.LexState* %18, %union.TString* %19) ; [#uses=1] + %21 = trunc i32 %20 to i16 ; [#uses=1] + %22 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.FuncState* %22, i32 0, i32 13 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = add nsw i32 %25, %26 ; [#uses=1] + %28 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.FuncState* %28, i32 0, i32 15 ; [#uses=1] + %30 = getelementptr inbounds [200 x i16]* %29, i32 0, i32 %27 ; [#uses=1] + store i16 %21, i16* %30 + ret void +} + +; [#uses=6] +define internal void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %ls, i32 %nvars) nounwind { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=6] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=7] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %nvars, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 13 ; [#uses=1] + %8 = load i8* %7, align 1 ; [#uses=1] + %9 = zext i8 %8 to i32 ; [#uses=1] + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = add nsw i32 %9, %10 ; [#uses=1] + %12 = trunc i32 %11 to i8 ; [#uses=1] + %13 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.FuncState* %13, i32 0, i32 13 ; [#uses=1] + store i8 %12, i8* %14, align 1 + br label %15 + +; <label>:15 ; preds = %40, %0 + %16 = load i32* %2, align 4 ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %43 + +; <label>:18 ; preds = %15 + %19 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.FuncState* %19, i32 0, i32 6 ; [#uses=1] + %21 = load i32* %20, align 4 ; [#uses=1] + %22 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.FuncState* %22, i32 0, i32 13 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = load i32* %2, align 4 ; [#uses=1] + %27 = sub nsw i32 %25, %26 ; [#uses=1] + %28 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.FuncState* %28, i32 0, i32 15 ; [#uses=1] + %30 = getelementptr inbounds [200 x i16]* %29, i32 0, i32 %27 ; [#uses=1] + %31 = load i16* %30 ; [#uses=1] + %32 = zext i16 %31 to i32 ; [#uses=1] + %33 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.FuncState* %33, i32 0, i32 0 ; [#uses=1] + %35 = load %struct.Proto** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Proto* %35, i32 0, i32 7 ; [#uses=1] + %37 = load %struct.LocVar** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.LocVar* %37, i32 %32 ; [#uses=1] + %39 = getelementptr inbounds %struct.LocVar* %38, i32 0, i32 1 ; [#uses=1] + store i32 %21, i32* %39, align 4 + br label %40 + +; <label>:40 ; preds = %18 + %41 = load i32* %2, align 4 ; [#uses=1] + %42 = add nsw i32 %41, -1 ; [#uses=1] + store i32 %42, i32* %2, align 4 + br label %15 + +; <label>:43 ; preds = %15 + ret void +} + +; [#uses=1] +define internal void @_Z7parlistP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=12] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + %f = alloca %struct.Proto*, align 4 ; [#uses=7] + %nparams = alloca i32, align 4 ; [#uses=6] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.FuncState** %3, align 4 ; [#uses=1] + store %struct.FuncState* %4, %struct.FuncState** %fs, align 4 + %5 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.Proto** %6, align 4 ; [#uses=1] + store %struct.Proto* %7, %struct.Proto** %f, align 4 + store i32 0, i32* %nparams, align 4 + %8 = load %struct.Proto** %f, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 21 ; [#uses=1] + store i8 0, i8* %9, align 1 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.LexState* %10, i32 0, i32 3 ; [#uses=1] + %12 = getelementptr inbounds %struct.Token* %11, i32 0, i32 0 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp ne i32 %13, 41 ; [#uses=1] + br i1 %14, label %15, label %57 + +; <label>:15 ; preds = %0 + br label %16 + +; <label>:16 ; preds = %54, %15 + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.LexState* %17, i32 0, i32 3 ; [#uses=1] + %19 = getelementptr inbounds %struct.Token* %18, i32 0, i32 0 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + switch i32 %20, label %42 [ + i32 285, label %21 + i32 279, label %27 + ] + +; <label>:21 ; preds = %16 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %23) ; [#uses=1] + %25 = load i32* %nparams, align 4 ; [#uses=2] + %26 = add nsw i32 %25, 1 ; [#uses=1] + store i32 %26, i32* %nparams, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %22, %union.TString* %24, i32 %25) + br label %44 + +; <label>:27 ; preds = %16 + %28 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %28) + %29 = load %struct.LexState** %1, align 4 ; [#uses=1] + %30 = load %struct.LexState** %1, align 4 ; [#uses=1] + %31 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %30, i8* getelementptr inbounds ([4 x i8]* @.str5134, i32 0, i32 0), i32 3) ; [#uses=1] + %32 = load i32* %nparams, align 4 ; [#uses=2] + %33 = add nsw i32 %32, 1 ; [#uses=1] + store i32 %33, i32* %nparams, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %29, %union.TString* %31, i32 %32) + %34 = load %struct.Proto** %f, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 21 ; [#uses=1] + store i8 5, i8* %35, align 1 + %36 = load %struct.Proto** %f, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Proto* %36, i32 0, i32 21 ; [#uses=2] + %38 = load i8* %37, align 1 ; [#uses=1] + %39 = zext i8 %38 to i32 ; [#uses=1] + %40 = or i32 %39, 2 ; [#uses=1] + %41 = trunc i32 %40 to i8 ; [#uses=1] + store i8 %41, i8* %37, align 1 + br label %44 + +; <label>:42 ; preds = %16 + %43 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %43, i8* getelementptr inbounds ([25 x i8]* @.str6135, i32 0, i32 0)) + br label %44 + +; <label>:44 ; preds = %42, %27, %21 + br label %45 + +; <label>:45 ; preds = %44 + %46 = load %struct.Proto** %f, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Proto* %46, i32 0, i32 21 ; [#uses=1] + %48 = load i8* %47, align 1 ; [#uses=1] + %49 = icmp ne i8 %48, 0 ; [#uses=1] + br i1 %49, label %54, label %50 + +; <label>:50 ; preds = %45 + %51 = load %struct.LexState** %1, align 4 ; [#uses=1] + %52 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %51, i32 44) ; [#uses=1] + %53 = icmp ne i32 %52, 0 ; [#uses=1] + br label %54 + +; <label>:54 ; preds = %50, %45 + %55 = phi i1 [ false, %45 ], [ %53, %50 ] ; [#uses=1] + br i1 %55, label %16, label %56 + +; <label>:56 ; preds = %54 + br label %57 + +; <label>:57 ; preds = %56, %0 + %58 = load %struct.LexState** %1, align 4 ; [#uses=1] + %59 = load i32* %nparams, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %58, i32 %59) + %60 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.FuncState* %60, i32 0, i32 13 ; [#uses=1] + %62 = load i8* %61, align 1 ; [#uses=1] + %63 = zext i8 %62 to i32 ; [#uses=1] + %64 = load %struct.Proto** %f, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.Proto* %64, i32 0, i32 21 ; [#uses=1] + %66 = load i8* %65, align 1 ; [#uses=1] + %67 = zext i8 %66 to i32 ; [#uses=1] + %68 = and i32 %67, 1 ; [#uses=1] + %69 = sub nsw i32 %63, %68 ; [#uses=1] + %70 = trunc i32 %69 to i8 ; [#uses=1] + %71 = load %struct.Proto** %f, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.Proto* %71, i32 0, i32 20 ; [#uses=1] + store i8 %70, i8* %72, align 1 + %73 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %74 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.FuncState* %74, i32 0, i32 13 ; [#uses=1] + %76 = load i8* %75, align 1 ; [#uses=1] + %77 = zext i8 %76 to i32 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %73, i32 %77) + ret void +} + +; [#uses=1] +define internal void @_Z11pushclosureP8LexStateP9FuncStateP7expdesc(%struct.LexState* %ls, %struct.FuncState* %func, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=7] + %3 = alloca %struct.expdesc*, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=7] + %f = alloca %struct.Proto*, align 4 ; [#uses=11] + %oldsize = alloca i32, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=6] + %o = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.FuncState* %func, %struct.FuncState** %2, align 4 + store %struct.expdesc* %v, %struct.expdesc** %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 5 ; [#uses=1] + %6 = load %struct.FuncState** %5, align 4 ; [#uses=1] + store %struct.FuncState* %6, %struct.FuncState** %fs, align 4 + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 0 ; [#uses=1] + %9 = load %struct.Proto** %8, align 4 ; [#uses=1] + store %struct.Proto* %9, %struct.Proto** %f, align 4 + %10 = load %struct.Proto** %f, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Proto* %10, i32 0, i32 14 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + store i32 %12, i32* %oldsize, align 4 + %13 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.FuncState* %13, i32 0, i32 11 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + %17 = load %struct.Proto** %f, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Proto* %17, i32 0, i32 14 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp sgt i32 %16, %19 ; [#uses=1] + br i1 %20, label %21, label %35 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 6 ; [#uses=1] + %24 = load %struct.lua_State** %23, align 4 ; [#uses=1] + %25 = load %struct.Proto** %f, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Proto* %25, i32 0, i32 5 ; [#uses=1] + %27 = load %struct.Proto*** %26, align 4 ; [#uses=1] + %28 = bitcast %struct.Proto** %27 to i8* ; [#uses=1] + %29 = load %struct.Proto** %f, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Proto* %29, i32 0, i32 14 ; [#uses=1] + %31 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %24, i8* %28, i32* %30, i32 4, i32 262143, i8* getelementptr inbounds ([24 x i8]* @.str4133, i32 0, i32 0)) ; [#uses=1] + %32 = bitcast i8* %31 to %struct.Proto** ; [#uses=1] + %33 = load %struct.Proto** %f, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Proto* %33, i32 0, i32 5 ; [#uses=1] + store %struct.Proto** %32, %struct.Proto*** %34, align 4 + br label %35 + +; <label>:35 ; preds = %21, %0 + br label %36 + +; <label>:36 ; preds = %42, %35 + %37 = load i32* %oldsize, align 4 ; [#uses=1] + %38 = load %struct.Proto** %f, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Proto* %38, i32 0, i32 14 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = icmp slt i32 %37, %40 ; [#uses=1] + br i1 %41, label %42, label %49 + +; <label>:42 ; preds = %36 + %43 = load i32* %oldsize, align 4 ; [#uses=2] + %44 = add nsw i32 %43, 1 ; [#uses=1] + store i32 %44, i32* %oldsize, align 4 + %45 = load %struct.Proto** %f, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Proto* %45, i32 0, i32 5 ; [#uses=1] + %47 = load %struct.Proto*** %46, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.Proto** %47, i32 %43 ; [#uses=1] + store %struct.Proto* null, %struct.Proto** %48 + br label %36 + +; <label>:49 ; preds = %36 + %50 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.FuncState* %50, i32 0, i32 0 ; [#uses=1] + %52 = load %struct.Proto** %51, align 4 ; [#uses=1] + %53 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.FuncState* %53, i32 0, i32 11 ; [#uses=2] + %55 = load i32* %54, align 4 ; [#uses=2] + %56 = add nsw i32 %55, 1 ; [#uses=1] + store i32 %56, i32* %54, align 4 + %57 = load %struct.Proto** %f, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.Proto* %57, i32 0, i32 5 ; [#uses=1] + %59 = load %struct.Proto*** %58, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.Proto** %59, i32 %55 ; [#uses=1] + store %struct.Proto* %52, %struct.Proto** %60 + %61 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.FuncState* %61, i32 0, i32 0 ; [#uses=1] + %63 = load %struct.Proto** %62, align 4 ; [#uses=1] + %64 = bitcast %struct.Proto* %63 to %union.GCObject* ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %struct.GCheader* ; [#uses=1] + %67 = getelementptr inbounds %struct.GCheader* %66, i32 0, i32 2 ; [#uses=1] + %68 = load i8* %67, align 1 ; [#uses=1] + %69 = zext i8 %68 to i32 ; [#uses=1] + %70 = and i32 %69, 3 ; [#uses=1] + %71 = icmp ne i32 %70, 0 ; [#uses=1] + br i1 %71, label %72, label %92 + +; <label>:72 ; preds = %49 + %73 = load %struct.Proto** %f, align 4 ; [#uses=1] + %74 = bitcast %struct.Proto* %73 to %union.GCObject* ; [#uses=1] + %75 = getelementptr inbounds %union.GCObject* %74, i32 0, i32 0 ; [#uses=1] + %76 = bitcast %struct.lua_State* %75 to %struct.GCheader* ; [#uses=1] + %77 = getelementptr inbounds %struct.GCheader* %76, i32 0, i32 2 ; [#uses=1] + %78 = load i8* %77, align 1 ; [#uses=1] + %79 = zext i8 %78 to i32 ; [#uses=1] + %80 = and i32 %79, 4 ; [#uses=1] + %81 = icmp ne i32 %80, 0 ; [#uses=1] + br i1 %81, label %82, label %92 + +; <label>:82 ; preds = %72 + %83 = load %struct.LexState** %1, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.LexState* %83, i32 0, i32 6 ; [#uses=1] + %85 = load %struct.lua_State** %84, align 4 ; [#uses=1] + %86 = load %struct.Proto** %f, align 4 ; [#uses=1] + %87 = bitcast %struct.Proto* %86 to %union.GCObject* ; [#uses=1] + %88 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.FuncState* %88, i32 0, i32 0 ; [#uses=1] + %90 = load %struct.Proto** %89, align 4 ; [#uses=1] + %91 = bitcast %struct.Proto* %90 to %union.GCObject* ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %85, %union.GCObject* %87, %union.GCObject* %91) + br label %92 + +; <label>:92 ; preds = %82, %72, %49 + %93 = load %struct.expdesc** %3, align 4 ; [#uses=1] + %94 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %95 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.FuncState* %95, i32 0, i32 11 ; [#uses=1] + %97 = load i32* %96, align 4 ; [#uses=1] + %98 = sub nsw i32 %97, 1 ; [#uses=1] + %99 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %94, i32 36, i32 0, i32 %98) ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %93, i32 11, i32 %99) + store i32 0, i32* %i, align 4 + br label %100 + +; <label>:100 ; preds = %132, %92 + %101 = load i32* %i, align 4 ; [#uses=1] + %102 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.FuncState* %102, i32 0, i32 0 ; [#uses=1] + %104 = load %struct.Proto** %103, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.Proto* %104, i32 0, i32 19 ; [#uses=1] + %106 = load i8* %105, align 1 ; [#uses=1] + %107 = zext i8 %106 to i32 ; [#uses=1] + %108 = icmp slt i32 %101, %107 ; [#uses=1] + br i1 %108, label %109, label %135 + +; <label>:109 ; preds = %100 + %110 = load i32* %i, align 4 ; [#uses=1] + %111 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %112 = getelementptr inbounds %struct.FuncState* %111, i32 0, i32 14 ; [#uses=1] + %113 = getelementptr inbounds [60 x %struct.upvaldesc]* %112, i32 0, i32 %110 ; [#uses=1] + %114 = getelementptr inbounds %struct.upvaldesc* %113, i32 0, i32 0 ; [#uses=1] + %115 = load i8* %114, align 1 ; [#uses=1] + %116 = zext i8 %115 to i32 ; [#uses=1] + %117 = icmp eq i32 %116, 6 ; [#uses=1] + br i1 %117, label %118, label %119 + +; <label>:118 ; preds = %109 + br label %120 + +; <label>:119 ; preds = %109 + br label %120 + +; <label>:120 ; preds = %119, %118 + %121 = phi i32 [ 0, %118 ], [ 4, %119 ] ; [#uses=1] + store i32 %121, i32* %o, align 4 + %122 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %123 = load i32* %o, align 4 ; [#uses=1] + %124 = load i32* %i, align 4 ; [#uses=1] + %125 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %126 = getelementptr inbounds %struct.FuncState* %125, i32 0, i32 14 ; [#uses=1] + %127 = getelementptr inbounds [60 x %struct.upvaldesc]* %126, i32 0, i32 %124 ; [#uses=1] + %128 = getelementptr inbounds %struct.upvaldesc* %127, i32 0, i32 1 ; [#uses=1] + %129 = load i8* %128, align 1 ; [#uses=1] + %130 = zext i8 %129 to i32 ; [#uses=1] + %131 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %122, i32 %123, i32 0, i32 %130, i32 0) ; [#uses=0] + br label %132 + +; <label>:132 ; preds = %120 + %133 = load i32* %i, align 4 ; [#uses=1] + %134 = add nsw i32 %133, 1 ; [#uses=1] + store i32 %134, i32* %i, align 4 + br label %100 + +; <label>:135 ; preds = %100 + ret void +} + +; [#uses=7] +define internal %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %ts = alloca %union.TString*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5checkP8LexStatei(%struct.LexState* %2, i32 285) + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 3 ; [#uses=1] + %5 = getelementptr inbounds %struct.Token* %4, i32 0, i32 1 ; [#uses=1] + %6 = getelementptr inbounds %union.anon* %5, i32 0, i32 0 ; [#uses=1] + %7 = bitcast double* %6 to %union.TString** ; [#uses=1] + %8 = load %union.TString** %7, align 4 ; [#uses=1] + store %union.TString* %8, %union.TString** %ts, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %9) + %10 = load %union.TString** %ts, align 4 ; [#uses=1] + ret %union.TString* %10 +} + +; [#uses=1] +define internal i32 @_Z16registerlocalvarP8LexStateP7TString(%struct.LexState* %ls, %union.TString* %varname) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %2 = alloca %union.TString*, align 4 ; [#uses=4] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=5] + %f = alloca %struct.Proto*, align 4 ; [#uses=11] + %oldsize = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.TString* %varname, %union.TString** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 0 ; [#uses=1] + %8 = load %struct.Proto** %7, align 4 ; [#uses=1] + store %struct.Proto* %8, %struct.Proto** %f, align 4 + %9 = load %struct.Proto** %f, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Proto* %9, i32 0, i32 15 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + store i32 %11, i32* %oldsize, align 4 + %12 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.FuncState* %12, i32 0, i32 12 ; [#uses=1] + %14 = load i16* %13, align 2 ; [#uses=1] + %15 = sext i16 %14 to i32 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + %17 = load %struct.Proto** %f, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Proto* %17, i32 0, i32 15 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp sgt i32 %16, %19 ; [#uses=1] + br i1 %20, label %21, label %35 + +; <label>:21 ; preds = %0 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.LexState* %22, i32 0, i32 6 ; [#uses=1] + %24 = load %struct.lua_State** %23, align 4 ; [#uses=1] + %25 = load %struct.Proto** %f, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Proto* %25, i32 0, i32 7 ; [#uses=1] + %27 = load %struct.LocVar** %26, align 4 ; [#uses=1] + %28 = bitcast %struct.LocVar* %27 to i8* ; [#uses=1] + %29 = load %struct.Proto** %f, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Proto* %29, i32 0, i32 15 ; [#uses=1] + %31 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %24, i8* %28, i32* %30, i32 12, i32 32767, i8* getelementptr inbounds ([25 x i8]* @.str8137, i32 0, i32 0)) ; [#uses=1] + %32 = bitcast i8* %31 to %struct.LocVar* ; [#uses=1] + %33 = load %struct.Proto** %f, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.Proto* %33, i32 0, i32 7 ; [#uses=1] + store %struct.LocVar* %32, %struct.LocVar** %34, align 4 + br label %35 + +; <label>:35 ; preds = %21, %0 + br label %36 + +; <label>:36 ; preds = %42, %35 + %37 = load i32* %oldsize, align 4 ; [#uses=1] + %38 = load %struct.Proto** %f, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Proto* %38, i32 0, i32 15 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = icmp slt i32 %37, %40 ; [#uses=1] + br i1 %41, label %42, label %50 + +; <label>:42 ; preds = %36 + %43 = load i32* %oldsize, align 4 ; [#uses=2] + %44 = add nsw i32 %43, 1 ; [#uses=1] + store i32 %44, i32* %oldsize, align 4 + %45 = load %struct.Proto** %f, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Proto* %45, i32 0, i32 7 ; [#uses=1] + %47 = load %struct.LocVar** %46, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.LocVar* %47, i32 %43 ; [#uses=1] + %49 = getelementptr inbounds %struct.LocVar* %48, i32 0, i32 0 ; [#uses=1] + store %union.TString* null, %union.TString** %49, align 4 + br label %36 + +; <label>:50 ; preds = %36 + %51 = load %union.TString** %2, align 4 ; [#uses=1] + %52 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.FuncState* %52, i32 0, i32 12 ; [#uses=1] + %54 = load i16* %53, align 2 ; [#uses=1] + %55 = sext i16 %54 to i32 ; [#uses=1] + %56 = load %struct.Proto** %f, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.Proto* %56, i32 0, i32 7 ; [#uses=1] + %58 = load %struct.LocVar** %57, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.LocVar* %58, i32 %55 ; [#uses=1] + %60 = getelementptr inbounds %struct.LocVar* %59, i32 0, i32 0 ; [#uses=1] + store %union.TString* %51, %union.TString** %60, align 4 + %61 = load %union.TString** %2, align 4 ; [#uses=1] + %62 = bitcast %union.TString* %61 to %union.GCObject* ; [#uses=1] + %63 = getelementptr inbounds %union.GCObject* %62, i32 0, i32 0 ; [#uses=1] + %64 = bitcast %struct.lua_State* %63 to %struct.GCheader* ; [#uses=1] + %65 = getelementptr inbounds %struct.GCheader* %64, i32 0, i32 2 ; [#uses=1] + %66 = load i8* %65, align 1 ; [#uses=1] + %67 = zext i8 %66 to i32 ; [#uses=1] + %68 = and i32 %67, 3 ; [#uses=1] + %69 = icmp ne i32 %68, 0 ; [#uses=1] + br i1 %69, label %70, label %88 + +; <label>:70 ; preds = %50 + %71 = load %struct.Proto** %f, align 4 ; [#uses=1] + %72 = bitcast %struct.Proto* %71 to %union.GCObject* ; [#uses=1] + %73 = getelementptr inbounds %union.GCObject* %72, i32 0, i32 0 ; [#uses=1] + %74 = bitcast %struct.lua_State* %73 to %struct.GCheader* ; [#uses=1] + %75 = getelementptr inbounds %struct.GCheader* %74, i32 0, i32 2 ; [#uses=1] + %76 = load i8* %75, align 1 ; [#uses=1] + %77 = zext i8 %76 to i32 ; [#uses=1] + %78 = and i32 %77, 4 ; [#uses=1] + %79 = icmp ne i32 %78, 0 ; [#uses=1] + br i1 %79, label %80, label %88 + +; <label>:80 ; preds = %70 + %81 = load %struct.LexState** %1, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.LexState* %81, i32 0, i32 6 ; [#uses=1] + %83 = load %struct.lua_State** %82, align 4 ; [#uses=1] + %84 = load %struct.Proto** %f, align 4 ; [#uses=1] + %85 = bitcast %struct.Proto* %84 to %union.GCObject* ; [#uses=1] + %86 = load %union.TString** %2, align 4 ; [#uses=1] + %87 = bitcast %union.TString* %86 to %union.GCObject* ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %83, %union.GCObject* %85, %union.GCObject* %87) + br label %88 + +; <label>:88 ; preds = %80, %70, %50 + %89 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.FuncState* %89, i32 0, i32 12 ; [#uses=2] + %91 = load i16* %90, align 2 ; [#uses=2] + %92 = add nsw i16 %91, 1 ; [#uses=1] + store i16 %92, i16* %90, align 2 + %93 = sext i16 %91 to i32 ; [#uses=1] + ret i32 %93 +} + +; [#uses=1] +define internal void @_Z14closelistfieldP9FuncStateP11ConsControl(%struct.FuncState* %fs, %struct.ConsControl* %cc) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=3] + %2 = alloca %struct.ConsControl*, align 4 ; [#uses=9] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.ConsControl* %cc, %struct.ConsControl** %2, align 4 + %3 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.ConsControl* %3, i32 0, i32 0 ; [#uses=1] + %5 = getelementptr inbounds %struct.expdesc* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + br label %37 + +; <label>:9 ; preds = %0 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.ConsControl* %11, i32 0, i32 0 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %10, %struct.expdesc* %12) + %13 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.ConsControl* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %struct.expdesc* %14, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %15, align 4 + %16 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.ConsControl* %16, i32 0, i32 4 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 50 ; [#uses=1] + br i1 %19, label %20, label %37 + +; <label>:20 ; preds = %9 + %21 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %22 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.ConsControl* %22, i32 0, i32 1 ; [#uses=1] + %24 = load %struct.expdesc** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.expdesc* %24, i32 0, i32 1 ; [#uses=1] + %26 = getelementptr inbounds %2* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %3* %26, i32 0, i32 0 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.ConsControl* %29, i32 0, i32 3 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.ConsControl* %32, i32 0, i32 4 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + call void @_Z12luaK_setlistP9FuncStateiii(%struct.FuncState* %21, i32 %28, i32 %31, i32 %34) + %35 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.ConsControl* %35, i32 0, i32 4 ; [#uses=1] + store i32 0, i32* %36, align 4 + br label %37 + +; <label>:37 ; preds = %20, %9, %8 + ret void +} + +; [#uses=2] +define internal void @_Z9listfieldP8LexStateP11ConsControl(%struct.LexState* %ls, %struct.ConsControl* %cc) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca %struct.ConsControl*, align 4 ; [#uses=5] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.ConsControl* %cc, %struct.ConsControl** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.ConsControl* %4, i32 0, i32 0 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %3, %struct.expdesc* %5) + %6 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.ConsControl* %6, i32 0, i32 3 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp sgt i32 %8, 2147483645 ; [#uses=1] + br i1 %9, label %10, label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.LexState* %11, i32 0, i32 5 ; [#uses=1] + %13 = load %struct.FuncState** %12, align 4 ; [#uses=1] + call void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %13, i32 2147483645, i8* getelementptr inbounds ([23 x i8]* @.str9138, i32 0, i32 0)) + br label %14 + +; <label>:14 ; preds = %10, %0 + %15 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.ConsControl* %15, i32 0, i32 3 ; [#uses=2] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = add nsw i32 %17, 1 ; [#uses=1] + store i32 %18, i32* %16, align 4 + %19 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.ConsControl* %19, i32 0, i32 4 ; [#uses=2] + %21 = load i32* %20, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + store i32 %22, i32* %20, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z8recfieldP8LexStateP11ConsControl(%struct.LexState* %ls, %struct.ConsControl* %cc) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=8] + %2 = alloca %struct.ConsControl*, align 4 ; [#uses=4] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=6] + %reg = alloca i32, align 4 ; [#uses=2] + %key = alloca %struct.expdesc, align 4 ; [#uses=3] + %val = alloca %struct.expdesc, align 4 ; [#uses=2] + %rkkey = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.ConsControl* %cc, %struct.ConsControl** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 5 ; [#uses=1] + %8 = load %struct.FuncState** %7, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 9 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + store i32 %10, i32* %reg, align 4 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.LexState* %11, i32 0, i32 3 ; [#uses=1] + %13 = getelementptr inbounds %struct.Token* %12, i32 0, i32 0 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = icmp eq i32 %14, 285 ; [#uses=1] + br i1 %15, label %16, label %25 + +; <label>:16 ; preds = %0 + %17 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.ConsControl* %17, i32 0, i32 2 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp sgt i32 %19, 2147483645 ; [#uses=1] + br i1 %20, label %21, label %23 + +; <label>:21 ; preds = %16 + %22 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %22, i32 2147483645, i8* getelementptr inbounds ([23 x i8]* @.str9138, i32 0, i32 0)) + br label %23 + +; <label>:23 ; preds = %21, %16 + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknameP8LexStateP7expdesc(%struct.LexState* %24, %struct.expdesc* %key) + br label %27 + +; <label>:25 ; preds = %0 + %26 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z6yindexP8LexStateP7expdesc(%struct.LexState* %26, %struct.expdesc* %key) + br label %27 + +; <label>:27 ; preds = %25, %23 + %28 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.ConsControl* %28, i32 0, i32 2 ; [#uses=2] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + store i32 %31, i32* %29, align 4 + %32 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %32, i32 61) + %33 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %34 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %33, %struct.expdesc* %key) ; [#uses=1] + store i32 %34, i32* %rkkey, align 4 + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %35, %struct.expdesc* %val) + %36 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %37 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.ConsControl* %37, i32 0, i32 1 ; [#uses=1] + %39 = load %struct.expdesc** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.expdesc* %39, i32 0, i32 1 ; [#uses=1] + %41 = getelementptr inbounds %2* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %3* %41, i32 0, i32 0 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = load i32* %rkkey, align 4 ; [#uses=1] + %45 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %46 = call i32 @_Z11luaK_exp2RKP9FuncStateP7expdesc(%struct.FuncState* %45, %struct.expdesc* %val) ; [#uses=1] + %47 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %36, i32 9, i32 %43, i32 %44, i32 %46) ; [#uses=0] + %48 = load i32* %reg, align 4 ; [#uses=1] + %49 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.FuncState* %49, i32 0, i32 9 ; [#uses=1] + store i32 %48, i32* %50, align 4 + ret void +} + +; [#uses=1] +define internal void @_Z13lastlistfieldP9FuncStateP11ConsControl(%struct.FuncState* %fs, %struct.ConsControl* %cc) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=5] + %2 = alloca %struct.ConsControl*, align 4 ; [#uses=13] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.ConsControl* %cc, %struct.ConsControl** %2, align 4 + %3 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.ConsControl* %3, i32 0, i32 4 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + br label %64 + +; <label>:8 ; preds = %0 + %9 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.ConsControl* %9, i32 0, i32 0 ; [#uses=1] + %11 = getelementptr inbounds %struct.expdesc* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 13 ; [#uses=1] + br i1 %13, label %20, label %14 + +; <label>:14 ; preds = %8 + %15 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.ConsControl* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %struct.expdesc* %16, i32 0, i32 0 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 14 ; [#uses=1] + br i1 %19, label %20, label %39 + +; <label>:20 ; preds = %14, %8 + %21 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %22 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.ConsControl* %22, i32 0, i32 0 ; [#uses=1] + call void @_Z15luaK_setreturnsP9FuncStateP7expdesci(%struct.FuncState* %21, %struct.expdesc* %23, i32 -1) + %24 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %25 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.ConsControl* %25, i32 0, i32 1 ; [#uses=1] + %27 = load %struct.expdesc** %26, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.expdesc* %27, i32 0, i32 1 ; [#uses=1] + %29 = getelementptr inbounds %2* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %3* %29, i32 0, i32 0 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.ConsControl* %32, i32 0, i32 3 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + call void @_Z12luaK_setlistP9FuncStateiii(%struct.FuncState* %24, i32 %31, i32 %34, i32 -1) + %35 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.ConsControl* %35, i32 0, i32 3 ; [#uses=2] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = add nsw i32 %37, -1 ; [#uses=1] + store i32 %38, i32* %36, align 4 + br label %64 + +; <label>:39 ; preds = %14 + %40 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.ConsControl* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %struct.expdesc* %41, i32 0, i32 0 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %45, label %49 + +; <label>:45 ; preds = %39 + %46 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %47 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.ConsControl* %47, i32 0, i32 0 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %46, %struct.expdesc* %48) + br label %49 + +; <label>:49 ; preds = %45, %39 + %50 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %51 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.ConsControl* %51, i32 0, i32 1 ; [#uses=1] + %53 = load %struct.expdesc** %52, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.expdesc* %53, i32 0, i32 1 ; [#uses=1] + %55 = getelementptr inbounds %2* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %3* %55, i32 0, i32 0 ; [#uses=1] + %57 = load i32* %56, align 4 ; [#uses=1] + %58 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.ConsControl* %58, i32 0, i32 3 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = load %struct.ConsControl** %2, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.ConsControl* %61, i32 0, i32 4 ; [#uses=1] + %63 = load i32* %62, align 4 ; [#uses=1] + call void @_Z12luaK_setlistP9FuncStateiii(%struct.FuncState* %50, i32 %57, i32 %60, i32 %63) + br label %64 + +; <label>:64 ; preds = %49, %20, %7 + ret void +} + +; [#uses=3] +define internal void @_Z9checknameP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %e) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %e, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %5) ; [#uses=1] + call void @_Z10codestringP8LexStateP7expdescP7TString(%struct.LexState* %3, %struct.expdesc* %4, %union.TString* %6) + ret void +} + +; [#uses=2] +define internal void @_Z6yindexP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=5] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %3) + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %4, %struct.expdesc* %5) + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 5 ; [#uses=1] + %8 = load %struct.FuncState** %7, align 4 ; [#uses=1] + %9 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z12luaK_exp2valP9FuncStateP7expdesc(%struct.FuncState* %8, %struct.expdesc* %9) + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %10, i32 93) + ret void +} + +; [#uses=1] +define internal void @_Z9prefixexpP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=9] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %line = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 3 ; [#uses=1] + %5 = getelementptr inbounds %struct.Token* %4, i32 0, i32 0 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %23 [ + i32 40, label %7 + i32 285, label %20 + ] + +; <label>:7 ; preds = %0 + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + store i32 %10, i32* %line, align 4 + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %11) + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %12, %struct.expdesc* %13) + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load i32* %line, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %14, i32 41, i32 40, i32 %15) + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LexState* %16, i32 0, i32 5 ; [#uses=1] + %18 = load %struct.FuncState** %17, align 4 ; [#uses=1] + %19 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z18luaK_dischargevarsP9FuncStateP7expdesc(%struct.FuncState* %18, %struct.expdesc* %19) + br label %25 + +; <label>:20 ; preds = %0 + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + %22 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z9singlevarP8LexStateP7expdesc(%struct.LexState* %21, %struct.expdesc* %22) + br label %25 + +; <label>:23 ; preds = %0 + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %24, i8* getelementptr inbounds ([18 x i8]* @.str14143, i32 0, i32 0)) + br label %25 + +; <label>:25 ; preds = %23, %20, %7 + ret void +} + +; [#uses=3] +define internal void @_Z5fieldP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + %key = alloca %struct.expdesc, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %7 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z15luaK_exp2anyregP9FuncStateP7expdesc(%struct.FuncState* %6, %struct.expdesc* %7) ; [#uses=0] + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %9) + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknameP8LexStateP7expdesc(%struct.LexState* %10, %struct.expdesc* %key) + %11 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %12 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z12luaK_indexedP9FuncStateP7expdescS2_(%struct.FuncState* %11, %struct.expdesc* %12, %struct.expdesc* %key) + ret void +} + +; [#uses=2] +define internal void @_Z8funcargsP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %f) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=15] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=7] + %args = alloca %struct.expdesc, align 4 ; [#uses=9] + %base = alloca i32, align 4 ; [#uses=4] + %nparams = alloca i32, align 4 ; [#uses=3] + %line = alloca i32, align 4 ; [#uses=4] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %f, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 1 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + store i32 %8, i32* %line, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 3 ; [#uses=1] + %11 = getelementptr inbounds %struct.Token* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + switch i32 %12, label %48 [ + i32 40, label %13 + i32 123, label %37 + i32 286, label %39 + ] + +; <label>:13 ; preds = %0 + %14 = load i32* %line, align 4 ; [#uses=1] + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.LexState* %15, i32 0, i32 2 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp ne i32 %14, %17 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %13 + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %20, i8* getelementptr inbounds ([49 x i8]* @.str12141, i32 0, i32 0)) + br label %21 + +; <label>:21 ; preds = %19, %13 + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %22) + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LexState* %23, i32 0, i32 3 ; [#uses=1] + %25 = getelementptr inbounds %struct.Token* %24, i32 0, i32 0 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = icmp eq i32 %26, 41 ; [#uses=1] + br i1 %27, label %28, label %30 + +; <label>:28 ; preds = %21 + %29 = getelementptr inbounds %struct.expdesc* %args, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %29, align 4 + br label %34 + +; <label>:30 ; preds = %21 + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = call i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %31, %struct.expdesc* %args) ; [#uses=0] + %33 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z15luaK_setreturnsP9FuncStateP7expdesci(%struct.FuncState* %33, %struct.expdesc* %args, i32 -1) + br label %34 + +; <label>:34 ; preds = %30, %28 + %35 = load %struct.LexState** %1, align 4 ; [#uses=1] + %36 = load i32* %line, align 4 ; [#uses=1] + call void @_Z11check_matchP8LexStateiii(%struct.LexState* %35, i32 41, i32 40, i32 %36) + br label %50 + +; <label>:37 ; preds = %0 + %38 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z11constructorP8LexStateP7expdesc(%struct.LexState* %38, %struct.expdesc* %args) + br label %50 + +; <label>:39 ; preds = %0 + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = load %struct.LexState** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.LexState* %41, i32 0, i32 3 ; [#uses=1] + %43 = getelementptr inbounds %struct.Token* %42, i32 0, i32 1 ; [#uses=1] + %44 = getelementptr inbounds %union.anon* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast double* %44 to %union.TString** ; [#uses=1] + %46 = load %union.TString** %45, align 4 ; [#uses=1] + call void @_Z10codestringP8LexStateP7expdescP7TString(%struct.LexState* %40, %struct.expdesc* %args, %union.TString* %46) + %47 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %47) + br label %50 + +; <label>:48 ; preds = %0 + %49 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %49, i8* getelementptr inbounds ([28 x i8]* @.str13142, i32 0, i32 0)) + br label %90 + +; <label>:50 ; preds = %39, %37, %34 + %51 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.expdesc* %51, i32 0, i32 1 ; [#uses=1] + %53 = getelementptr inbounds %2* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %3* %53, i32 0, i32 0 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + store i32 %55, i32* %base, align 4 + %56 = getelementptr inbounds %struct.expdesc* %args, i32 0, i32 0 ; [#uses=1] + %57 = load i32* %56, align 4 ; [#uses=1] + %58 = icmp eq i32 %57, 13 ; [#uses=1] + br i1 %58, label %63, label %59 + +; <label>:59 ; preds = %50 + %60 = getelementptr inbounds %struct.expdesc* %args, i32 0, i32 0 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + %62 = icmp eq i32 %61, 14 ; [#uses=1] + br i1 %62, label %63, label %64 + +; <label>:63 ; preds = %59, %50 + store i32 -1, i32* %nparams, align 4 + br label %77 + +; <label>:64 ; preds = %59 + %65 = getelementptr inbounds %struct.expdesc* %args, i32 0, i32 0 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + %67 = icmp ne i32 %66, 0 ; [#uses=1] + br i1 %67, label %68, label %70 + +; <label>:68 ; preds = %64 + %69 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %69, %struct.expdesc* %args) + br label %70 + +; <label>:70 ; preds = %68, %64 + %71 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.FuncState* %71, i32 0, i32 9 ; [#uses=1] + %73 = load i32* %72, align 4 ; [#uses=1] + %74 = load i32* %base, align 4 ; [#uses=1] + %75 = add nsw i32 %74, 1 ; [#uses=1] + %76 = sub nsw i32 %73, %75 ; [#uses=1] + store i32 %76, i32* %nparams, align 4 + br label %77 + +; <label>:77 ; preds = %70, %63 + %78 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %79 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %80 = load i32* %base, align 4 ; [#uses=1] + %81 = load i32* %nparams, align 4 ; [#uses=1] + %82 = add nsw i32 %81, 1 ; [#uses=1] + %83 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %79, i32 28, i32 %80, i32 %82, i32 2) ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %78, i32 13, i32 %83) + %84 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %85 = load i32* %line, align 4 ; [#uses=1] + call void @_Z12luaK_fixlineP9FuncStatei(%struct.FuncState* %84, i32 %85) + %86 = load i32* %base, align 4 ; [#uses=1] + %87 = add nsw i32 %86, 1 ; [#uses=1] + %88 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.FuncState* %88, i32 0, i32 9 ; [#uses=1] + store i32 %87, i32* %89, align 4 + br label %90 + +; <label>:90 ; preds = %77, %48 + ret void +} + +; [#uses=2] +define internal void @_Z9singlevarP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %var) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=3] + %varname = alloca %union.TString*, align 4 ; [#uses=3] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %var, %struct.expdesc** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %3) ; [#uses=1] + store %union.TString* %4, %union.TString** %varname, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.FuncState** %6, align 4 ; [#uses=1] + store %struct.FuncState* %7, %struct.FuncState** %fs, align 4 + %8 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %9 = load %union.TString** %varname, align 4 ; [#uses=1] + %10 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %11 = call i32 @_Z12singlevarauxP9FuncStateP7TStringP7expdesci(%struct.FuncState* %8, %union.TString* %9, %struct.expdesc* %10, i32 1) ; [#uses=1] + %12 = icmp eq i32 %11, 8 ; [#uses=1] + br i1 %12, label %13, label %21 + +; <label>:13 ; preds = %0 + %14 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %15 = load %union.TString** %varname, align 4 ; [#uses=1] + %16 = call i32 @_Z12luaK_stringKP9FuncStateP7TString(%struct.FuncState* %14, %union.TString* %15) ; [#uses=1] + %17 = load %struct.expdesc** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.expdesc* %17, i32 0, i32 1 ; [#uses=1] + %19 = getelementptr inbounds %2* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %3* %19, i32 0, i32 0 ; [#uses=1] + store i32 %16, i32* %20, align 4 + br label %21 + +; <label>:21 ; preds = %13, %0 + ret void +} + +; [#uses=2] +define internal i32 @_Z12singlevarauxP9FuncStateP7TStringP7expdesci(%struct.FuncState* %fs, %union.TString* %n, %struct.expdesc* %var, i32 %base) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=6] + %3 = alloca %union.TString*, align 4 ; [#uses=4] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=7] + %5 = alloca i32, align 4 ; [#uses=2] + %v = alloca i32, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %union.TString* %n, %union.TString** %3, align 4 + store %struct.expdesc* %var, %struct.expdesc** %4, align 4 + store i32 %base, i32* %5, align 4 + %6 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %7 = icmp eq %struct.FuncState* %6, null ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load %struct.expdesc** %4, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %9, i32 8, i32 255) + store i32 8, i32* %1 + br label %45 + +; <label>:10 ; preds = %0 + %11 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %12 = load %union.TString** %3, align 4 ; [#uses=1] + %13 = call i32 @_Z9searchvarP9FuncStateP7TString(%struct.FuncState* %11, %union.TString* %12) ; [#uses=1] + store i32 %13, i32* %v, align 4 + %14 = load i32* %v, align 4 ; [#uses=1] + %15 = icmp sge i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %25 + +; <label>:16 ; preds = %10 + %17 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %18 = load i32* %v, align 4 ; [#uses=1] + call void @_Z8init_expP7expdesc7expkindi(%struct.expdesc* %17, i32 6, i32 %18) + %19 = load i32* %5, align 4 ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %24, label %21 + +; <label>:21 ; preds = %16 + %22 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %23 = load i32* %v, align 4 ; [#uses=1] + call void @_Z9markupvalP9FuncStatei(%struct.FuncState* %22, i32 %23) + br label %24 + +; <label>:24 ; preds = %21, %16 + store i32 6, i32* %1 + br label %45 + +; <label>:25 ; preds = %10 + %26 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.FuncState* %26, i32 0, i32 2 ; [#uses=1] + %28 = load %struct.FuncState** %27, align 4 ; [#uses=1] + %29 = load %union.TString** %3, align 4 ; [#uses=1] + %30 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %31 = call i32 @_Z12singlevarauxP9FuncStateP7TStringP7expdesci(%struct.FuncState* %28, %union.TString* %29, %struct.expdesc* %30, i32 0) ; [#uses=1] + %32 = icmp eq i32 %31, 8 ; [#uses=1] + br i1 %32, label %33, label %34 + +; <label>:33 ; preds = %25 + store i32 8, i32* %1 + br label %45 + +; <label>:34 ; preds = %25 + %35 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %36 = load %union.TString** %3, align 4 ; [#uses=1] + %37 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %38 = call i32 @_Z12indexupvalueP9FuncStateP7TStringP7expdesc(%struct.FuncState* %35, %union.TString* %36, %struct.expdesc* %37) ; [#uses=1] + %39 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.expdesc* %39, i32 0, i32 1 ; [#uses=1] + %41 = getelementptr inbounds %2* %40, i32 0, i32 0 ; [#uses=1] + %42 = getelementptr inbounds %3* %41, i32 0, i32 0 ; [#uses=1] + store i32 %38, i32* %42, align 4 + %43 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.expdesc* %43, i32 0, i32 0 ; [#uses=1] + store i32 7, i32* %44, align 4 + store i32 7, i32* %1 + br label %45 + +; <label>:45 ; preds = %34, %33, %24, %8 + %46 = load i32* %1 ; [#uses=1] + ret i32 %46 +} + +; [#uses=1] +define internal i32 @_Z9searchvarP9FuncStateP7TString(%struct.FuncState* %fs, %union.TString* %n) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %3 = alloca %union.TString*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=6] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %union.TString* %n, %union.TString** %3, align 4 + %4 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.FuncState* %4, i32 0, i32 13 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = zext i8 %6 to i32 ; [#uses=1] + %8 = sub nsw i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %i, align 4 + br label %9 + +; <label>:9 ; preds = %32, %0 + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = icmp sge i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %35 + +; <label>:12 ; preds = %9 + %13 = load %union.TString** %3, align 4 ; [#uses=1] + %14 = load i32* %i, align 4 ; [#uses=1] + %15 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.FuncState* %15, i32 0, i32 15 ; [#uses=1] + %17 = getelementptr inbounds [200 x i16]* %16, i32 0, i32 %14 ; [#uses=1] + %18 = load i16* %17 ; [#uses=1] + %19 = zext i16 %18 to i32 ; [#uses=1] + %20 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.FuncState* %20, i32 0, i32 0 ; [#uses=1] + %22 = load %struct.Proto** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Proto* %22, i32 0, i32 7 ; [#uses=1] + %24 = load %struct.LocVar** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.LocVar* %24, i32 %19 ; [#uses=1] + %26 = getelementptr inbounds %struct.LocVar* %25, i32 0, i32 0 ; [#uses=1] + %27 = load %union.TString** %26, align 4 ; [#uses=1] + %28 = icmp eq %union.TString* %13, %27 ; [#uses=1] + br i1 %28, label %29, label %31 + +; <label>:29 ; preds = %12 + %30 = load i32* %i, align 4 ; [#uses=1] + store i32 %30, i32* %1 + br label %36 + +; <label>:31 ; preds = %12 + br label %32 + +; <label>:32 ; preds = %31 + %33 = load i32* %i, align 4 ; [#uses=1] + %34 = add nsw i32 %33, -1 ; [#uses=1] + store i32 %34, i32* %i, align 4 + br label %9 + +; <label>:35 ; preds = %9 + store i32 -1, i32* %1 + br label %36 + +; <label>:36 ; preds = %35, %29 + %37 = load i32* %1 ; [#uses=1] + ret i32 %37 +} + +; [#uses=1] +define internal void @_Z9markupvalP9FuncStatei(%struct.FuncState* %fs, i32 %level) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %bl = alloca %struct.BlockCnt*, align 4 ; [#uses=7] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store i32 %level, i32* %2, align 4 + %3 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.FuncState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.BlockCnt** %4, align 4 ; [#uses=1] + store %struct.BlockCnt* %5, %struct.BlockCnt** %bl, align 4 + br label %6 + +; <label>:6 ; preds = %18, %0 + %7 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %8 = icmp ne %struct.BlockCnt* %7, null ; [#uses=1] + br i1 %8, label %9, label %16 + +; <label>:9 ; preds = %6 + %10 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.BlockCnt* %10, i32 0, i32 2 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = load i32* %2, align 4 ; [#uses=1] + %15 = icmp sgt i32 %13, %14 ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %9, %6 + %17 = phi i1 [ false, %6 ], [ %15, %9 ] ; [#uses=1] + br i1 %17, label %18, label %22 + +; <label>:18 ; preds = %16 + %19 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.BlockCnt* %19, i32 0, i32 0 ; [#uses=1] + %21 = load %struct.BlockCnt** %20, align 4 ; [#uses=1] + store %struct.BlockCnt* %21, %struct.BlockCnt** %bl, align 4 + br label %6 + +; <label>:22 ; preds = %16 + %23 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %24 = icmp ne %struct.BlockCnt* %23, null ; [#uses=1] + br i1 %24, label %25, label %28 + +; <label>:25 ; preds = %22 + %26 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.BlockCnt* %26, i32 0, i32 3 ; [#uses=1] + store i8 1, i8* %27, align 1 + br label %28 + +; <label>:28 ; preds = %25, %22 + ret void +} + +; [#uses=1] +define internal i32 @_Z12indexupvalueP9FuncStateP7TStringP7expdesc(%struct.FuncState* %fs, %union.TString* %name, %struct.expdesc* %v) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.FuncState*, align 4 ; [#uses=9] + %3 = alloca %union.TString*, align 4 ; [#uses=4] + %4 = alloca %struct.expdesc*, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=7] + %f = alloca %struct.Proto*, align 4 ; [#uses=18] + %oldsize = alloca i32, align 4 ; [#uses=4] + store %struct.FuncState* %fs, %struct.FuncState** %2, align 4 + store %union.TString* %name, %union.TString** %3, align 4 + store %struct.expdesc* %v, %struct.expdesc** %4, align 4 + %5 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.FuncState* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.Proto** %6, align 4 ; [#uses=1] + store %struct.Proto* %7, %struct.Proto** %f, align 4 + %8 = load %struct.Proto** %f, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Proto* %8, i32 0, i32 10 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + store i32 %10, i32* %oldsize, align 4 + store i32 0, i32* %i, align 4 + br label %11 + +; <label>:11 ; preds = %47, %0 + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = load %struct.Proto** %f, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Proto* %13, i32 0, i32 19 ; [#uses=1] + %15 = load i8* %14, align 1 ; [#uses=1] + %16 = zext i8 %15 to i32 ; [#uses=1] + %17 = icmp slt i32 %12, %16 ; [#uses=1] + br i1 %17, label %18, label %50 + +; <label>:18 ; preds = %11 + %19 = load i32* %i, align 4 ; [#uses=1] + %20 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.FuncState* %20, i32 0, i32 14 ; [#uses=1] + %22 = getelementptr inbounds [60 x %struct.upvaldesc]* %21, i32 0, i32 %19 ; [#uses=1] + %23 = getelementptr inbounds %struct.upvaldesc* %22, i32 0, i32 0 ; [#uses=1] + %24 = load i8* %23, align 1 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.expdesc* %26, i32 0, i32 0 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = icmp eq i32 %25, %28 ; [#uses=1] + br i1 %29, label %30, label %46 + +; <label>:30 ; preds = %18 + %31 = load i32* %i, align 4 ; [#uses=1] + %32 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.FuncState* %32, i32 0, i32 14 ; [#uses=1] + %34 = getelementptr inbounds [60 x %struct.upvaldesc]* %33, i32 0, i32 %31 ; [#uses=1] + %35 = getelementptr inbounds %struct.upvaldesc* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i8* %35, align 1 ; [#uses=1] + %37 = zext i8 %36 to i32 ; [#uses=1] + %38 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.expdesc* %38, i32 0, i32 1 ; [#uses=1] + %40 = getelementptr inbounds %2* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %3* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = icmp eq i32 %37, %42 ; [#uses=1] + br i1 %43, label %44, label %46 + +; <label>:44 ; preds = %30 + %45 = load i32* %i, align 4 ; [#uses=1] + store i32 %45, i32* %1 + br label %166 + +; <label>:46 ; preds = %30, %18 + br label %47 + +; <label>:47 ; preds = %46 + %48 = load i32* %i, align 4 ; [#uses=1] + %49 = add nsw i32 %48, 1 ; [#uses=1] + store i32 %49, i32* %i, align 4 + br label %11 + +; <label>:50 ; preds = %11 + %51 = load %struct.Proto** %f, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Proto* %51, i32 0, i32 19 ; [#uses=1] + %53 = load i8* %52, align 1 ; [#uses=1] + %54 = zext i8 %53 to i32 ; [#uses=1] + %55 = add nsw i32 %54, 1 ; [#uses=1] + %56 = icmp sgt i32 %55, 60 ; [#uses=1] + br i1 %56, label %57, label %59 + +; <label>:57 ; preds = %50 + %58 = load %struct.FuncState** %2, align 4 ; [#uses=1] + call void @_Z10errorlimitP9FuncStateiPKc(%struct.FuncState* %58, i32 60, i8* getelementptr inbounds ([9 x i8]* @.str15144, i32 0, i32 0)) + br label %59 + +; <label>:59 ; preds = %57, %50 + %60 = load %struct.Proto** %f, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.Proto* %60, i32 0, i32 19 ; [#uses=1] + %62 = load i8* %61, align 1 ; [#uses=1] + %63 = zext i8 %62 to i32 ; [#uses=1] + %64 = add nsw i32 %63, 1 ; [#uses=1] + %65 = load %struct.Proto** %f, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.Proto* %65, i32 0, i32 10 ; [#uses=1] + %67 = load i32* %66, align 4 ; [#uses=1] + %68 = icmp sgt i32 %64, %67 ; [#uses=1] + br i1 %68, label %69, label %83 + +; <label>:69 ; preds = %59 + %70 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.FuncState* %70, i32 0, i32 4 ; [#uses=1] + %72 = load %struct.lua_State** %71, align 4 ; [#uses=1] + %73 = load %struct.Proto** %f, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.Proto* %73, i32 0, i32 8 ; [#uses=1] + %75 = load %union.TString*** %74, align 4 ; [#uses=1] + %76 = bitcast %union.TString** %75 to i8* ; [#uses=1] + %77 = load %struct.Proto** %f, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.Proto* %77, i32 0, i32 10 ; [#uses=1] + %79 = call i8* @_Z13luaM_growaux_P9lua_StatePvPijiPKc(%struct.lua_State* %72, i8* %76, i32* %78, i32 4, i32 2147483645, i8* getelementptr inbounds ([1 x i8]* @.str16145, i32 0, i32 0)) ; [#uses=1] + %80 = bitcast i8* %79 to %union.TString** ; [#uses=1] + %81 = load %struct.Proto** %f, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.Proto* %81, i32 0, i32 8 ; [#uses=1] + store %union.TString** %80, %union.TString*** %82, align 4 + br label %83 + +; <label>:83 ; preds = %69, %59 + br label %84 + +; <label>:84 ; preds = %90, %83 + %85 = load i32* %oldsize, align 4 ; [#uses=1] + %86 = load %struct.Proto** %f, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Proto* %86, i32 0, i32 10 ; [#uses=1] + %88 = load i32* %87, align 4 ; [#uses=1] + %89 = icmp slt i32 %85, %88 ; [#uses=1] + br i1 %89, label %90, label %97 + +; <label>:90 ; preds = %84 + %91 = load i32* %oldsize, align 4 ; [#uses=2] + %92 = add nsw i32 %91, 1 ; [#uses=1] + store i32 %92, i32* %oldsize, align 4 + %93 = load %struct.Proto** %f, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.Proto* %93, i32 0, i32 8 ; [#uses=1] + %95 = load %union.TString*** %94, align 4 ; [#uses=1] + %96 = getelementptr inbounds %union.TString** %95, i32 %91 ; [#uses=1] + store %union.TString* null, %union.TString** %96 + br label %84 + +; <label>:97 ; preds = %84 + %98 = load %union.TString** %3, align 4 ; [#uses=1] + %99 = load %struct.Proto** %f, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.Proto* %99, i32 0, i32 19 ; [#uses=1] + %101 = load i8* %100, align 1 ; [#uses=1] + %102 = zext i8 %101 to i32 ; [#uses=1] + %103 = load %struct.Proto** %f, align 4 ; [#uses=1] + %104 = getelementptr inbounds %struct.Proto* %103, i32 0, i32 8 ; [#uses=1] + %105 = load %union.TString*** %104, align 4 ; [#uses=1] + %106 = getelementptr inbounds %union.TString** %105, i32 %102 ; [#uses=1] + store %union.TString* %98, %union.TString** %106 + %107 = load %union.TString** %3, align 4 ; [#uses=1] + %108 = bitcast %union.TString* %107 to %union.GCObject* ; [#uses=1] + %109 = getelementptr inbounds %union.GCObject* %108, i32 0, i32 0 ; [#uses=1] + %110 = bitcast %struct.lua_State* %109 to %struct.GCheader* ; [#uses=1] + %111 = getelementptr inbounds %struct.GCheader* %110, i32 0, i32 2 ; [#uses=1] + %112 = load i8* %111, align 1 ; [#uses=1] + %113 = zext i8 %112 to i32 ; [#uses=1] + %114 = and i32 %113, 3 ; [#uses=1] + %115 = icmp ne i32 %114, 0 ; [#uses=1] + br i1 %115, label %116, label %134 + +; <label>:116 ; preds = %97 + %117 = load %struct.Proto** %f, align 4 ; [#uses=1] + %118 = bitcast %struct.Proto* %117 to %union.GCObject* ; [#uses=1] + %119 = getelementptr inbounds %union.GCObject* %118, i32 0, i32 0 ; [#uses=1] + %120 = bitcast %struct.lua_State* %119 to %struct.GCheader* ; [#uses=1] + %121 = getelementptr inbounds %struct.GCheader* %120, i32 0, i32 2 ; [#uses=1] + %122 = load i8* %121, align 1 ; [#uses=1] + %123 = zext i8 %122 to i32 ; [#uses=1] + %124 = and i32 %123, 4 ; [#uses=1] + %125 = icmp ne i32 %124, 0 ; [#uses=1] + br i1 %125, label %126, label %134 + +; <label>:126 ; preds = %116 + %127 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.FuncState* %127, i32 0, i32 4 ; [#uses=1] + %129 = load %struct.lua_State** %128, align 4 ; [#uses=1] + %130 = load %struct.Proto** %f, align 4 ; [#uses=1] + %131 = bitcast %struct.Proto* %130 to %union.GCObject* ; [#uses=1] + %132 = load %union.TString** %3, align 4 ; [#uses=1] + %133 = bitcast %union.TString* %132 to %union.GCObject* ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %129, %union.GCObject* %131, %union.GCObject* %133) + br label %134 + +; <label>:134 ; preds = %126, %116, %97 + %135 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %136 = getelementptr inbounds %struct.expdesc* %135, i32 0, i32 0 ; [#uses=1] + %137 = load i32* %136, align 4 ; [#uses=1] + %138 = trunc i32 %137 to i8 ; [#uses=1] + %139 = load %struct.Proto** %f, align 4 ; [#uses=1] + %140 = getelementptr inbounds %struct.Proto* %139, i32 0, i32 19 ; [#uses=1] + %141 = load i8* %140, align 1 ; [#uses=1] + %142 = zext i8 %141 to i32 ; [#uses=1] + %143 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %144 = getelementptr inbounds %struct.FuncState* %143, i32 0, i32 14 ; [#uses=1] + %145 = getelementptr inbounds [60 x %struct.upvaldesc]* %144, i32 0, i32 %142 ; [#uses=1] + %146 = getelementptr inbounds %struct.upvaldesc* %145, i32 0, i32 0 ; [#uses=1] + store i8 %138, i8* %146, align 1 + %147 = load %struct.expdesc** %4, align 4 ; [#uses=1] + %148 = getelementptr inbounds %struct.expdesc* %147, i32 0, i32 1 ; [#uses=1] + %149 = getelementptr inbounds %2* %148, i32 0, i32 0 ; [#uses=1] + %150 = getelementptr inbounds %3* %149, i32 0, i32 0 ; [#uses=1] + %151 = load i32* %150, align 4 ; [#uses=1] + %152 = trunc i32 %151 to i8 ; [#uses=1] + %153 = load %struct.Proto** %f, align 4 ; [#uses=1] + %154 = getelementptr inbounds %struct.Proto* %153, i32 0, i32 19 ; [#uses=1] + %155 = load i8* %154, align 1 ; [#uses=1] + %156 = zext i8 %155 to i32 ; [#uses=1] + %157 = load %struct.FuncState** %2, align 4 ; [#uses=1] + %158 = getelementptr inbounds %struct.FuncState* %157, i32 0, i32 14 ; [#uses=1] + %159 = getelementptr inbounds [60 x %struct.upvaldesc]* %158, i32 0, i32 %156 ; [#uses=1] + %160 = getelementptr inbounds %struct.upvaldesc* %159, i32 0, i32 1 ; [#uses=1] + store i8 %152, i8* %160, align 1 + %161 = load %struct.Proto** %f, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.Proto* %161, i32 0, i32 19 ; [#uses=2] + %163 = load i8* %162, align 1 ; [#uses=2] + %164 = add i8 %163, 1 ; [#uses=1] + store i8 %164, i8* %162, align 1 + %165 = zext i8 %163 to i32 ; [#uses=1] + store i32 %165, i32* %1 + br label %166 + +; <label>:166 ; preds = %134, %44 + %167 = load i32* %1 ; [#uses=1] + ret i32 %167 +} + +; [#uses=1] +define internal i32 @_Z8funcnameP8LexStateP7expdesc(%struct.LexState* %ls, %struct.expdesc* %v) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %2 = alloca %struct.expdesc*, align 4 ; [#uses=4] + %needself = alloca i32, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %struct.expdesc* %v, %struct.expdesc** %2, align 4 + store i32 0, i32* %needself, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z9singlevarP8LexStateP7expdesc(%struct.LexState* %3, %struct.expdesc* %4) + br label %5 + +; <label>:5 ; preds = %11, %0 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 3 ; [#uses=1] + %8 = getelementptr inbounds %struct.Token* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 46 ; [#uses=1] + br i1 %10, label %11, label %14 + +; <label>:11 ; preds = %5 + %12 = load %struct.LexState** %1, align 4 ; [#uses=1] + %13 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z5fieldP8LexStateP7expdesc(%struct.LexState* %12, %struct.expdesc* %13) + br label %5 + +; <label>:14 ; preds = %5 + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.LexState* %15, i32 0, i32 3 ; [#uses=1] + %17 = getelementptr inbounds %struct.Token* %16, i32 0, i32 0 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 58 ; [#uses=1] + br i1 %19, label %20, label %23 + +; <label>:20 ; preds = %14 + store i32 1, i32* %needself, align 4 + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + %22 = load %struct.expdesc** %2, align 4 ; [#uses=1] + call void @_Z5fieldP8LexStateP7expdesc(%struct.LexState* %21, %struct.expdesc* %22) + br label %23 + +; <label>:23 ; preds = %20, %14 + %24 = load i32* %needself, align 4 ; [#uses=1] + ret i32 %24 +} + +; [#uses=6] +define internal void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %fs, %struct.BlockCnt* %bl, i8 zeroext %isbreakable) nounwind { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=4] + %2 = alloca %struct.BlockCnt*, align 4 ; [#uses=7] + %3 = alloca i8, align 1 ; [#uses=2] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + store %struct.BlockCnt* %bl, %struct.BlockCnt** %2, align 4 + store i8 %isbreakable, i8* %3, align 1 + %4 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.BlockCnt* %4, i32 0, i32 1 ; [#uses=1] + store i32 -1, i32* %5, align 4 + %6 = load i8* %3, align 1 ; [#uses=1] + %7 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.BlockCnt* %7, i32 0, i32 4 ; [#uses=1] + store i8 %6, i8* %8, align 1 + %9 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.FuncState* %9, i32 0, i32 13 ; [#uses=1] + %11 = load i8* %10, align 1 ; [#uses=1] + %12 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.BlockCnt* %12, i32 0, i32 2 ; [#uses=1] + store i8 %11, i8* %13, align 1 + %14 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.BlockCnt* %14, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %15, align 1 + %16 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.FuncState* %16, i32 0, i32 5 ; [#uses=1] + %18 = load %struct.BlockCnt** %17, align 4 ; [#uses=1] + %19 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.BlockCnt* %19, i32 0, i32 0 ; [#uses=1] + store %struct.BlockCnt* %18, %struct.BlockCnt** %20, align 4 + %21 = load %struct.BlockCnt** %2, align 4 ; [#uses=1] + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.FuncState* %22, i32 0, i32 5 ; [#uses=1] + store %struct.BlockCnt* %21, %struct.BlockCnt** %23, align 4 + ret void +} + +; [#uses=3] +define internal i32 @_Z4condP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %v = alloca %struct.expdesc, align 4 ; [#uses=5] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %2, %struct.expdesc* %v) + %3 = getelementptr inbounds %struct.expdesc* %v, i32 0, i32 0 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 1 ; [#uses=1] + br i1 %5, label %6, label %8 + +; <label>:6 ; preds = %0 + %7 = getelementptr inbounds %struct.expdesc* %v, i32 0, i32 0 ; [#uses=1] + store i32 3, i32* %7, align 4 + br label %8 + +; <label>:8 ; preds = %6, %0 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.LexState* %9, i32 0, i32 5 ; [#uses=1] + %11 = load %struct.FuncState** %10, align 4 ; [#uses=1] + call void @_Z13luaK_goiftrueP9FuncStateP7expdesc(%struct.FuncState* %11, %struct.expdesc* %v) + %12 = getelementptr inbounds %struct.expdesc* %v, i32 0, i32 3 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + ret i32 %13 +} + +; [#uses=7] +define internal void @_Z10leaveblockP9FuncState(%struct.FuncState* %fs) { + %1 = alloca %struct.FuncState*, align 4 ; [#uses=8] + %bl = alloca %struct.BlockCnt*, align 4 ; [#uses=6] + store %struct.FuncState* %fs, %struct.FuncState** %1, align 4 + %2 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.FuncState* %2, i32 0, i32 5 ; [#uses=1] + %4 = load %struct.BlockCnt** %3, align 4 ; [#uses=1] + store %struct.BlockCnt* %4, %struct.BlockCnt** %bl, align 4 + %5 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.BlockCnt* %5, i32 0, i32 0 ; [#uses=1] + %7 = load %struct.BlockCnt** %6, align 4 ; [#uses=1] + %8 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.FuncState* %8, i32 0, i32 5 ; [#uses=1] + store %struct.BlockCnt* %7, %struct.BlockCnt** %9, align 4 + %10 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.FuncState* %10, i32 0, i32 3 ; [#uses=1] + %12 = load %struct.LexState** %11, align 4 ; [#uses=1] + %13 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.BlockCnt* %13, i32 0, i32 2 ; [#uses=1] + %15 = load i8* %14, align 1 ; [#uses=1] + %16 = zext i8 %15 to i32 ; [#uses=1] + call void @_Z10removevarsP8LexStatei(%struct.LexState* %12, i32 %16) + %17 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.BlockCnt* %17, i32 0, i32 3 ; [#uses=1] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = icmp ne i8 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %28 + +; <label>:21 ; preds = %0 + %22 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %23 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.BlockCnt* %23, i32 0, i32 2 ; [#uses=1] + %25 = load i8* %24, align 1 ; [#uses=1] + %26 = zext i8 %25 to i32 ; [#uses=1] + %27 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %22, i32 35, i32 %26, i32 0, i32 0) ; [#uses=0] + br label %28 + +; <label>:28 ; preds = %21, %0 + %29 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.FuncState* %29, i32 0, i32 13 ; [#uses=1] + %31 = load i8* %30, align 1 ; [#uses=1] + %32 = zext i8 %31 to i32 ; [#uses=1] + %33 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.FuncState* %33, i32 0, i32 9 ; [#uses=1] + store i32 %32, i32* %34, align 4 + %35 = load %struct.FuncState** %1, align 4 ; [#uses=1] + %36 = load %struct.BlockCnt** %bl, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.BlockCnt* %36, i32 0, i32 1 ; [#uses=1] + %38 = load i32* %37, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %35, i32 %38) + ret void +} + +; [#uses=2] +define internal void @_Z10removevarsP8LexStatei(%struct.LexState* %ls, i32 %tolevel) nounwind { + %1 = alloca %struct.LexState*, align 4 ; [#uses=2] + %2 = alloca i32, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=6] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %tolevel, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + br label %6 + +; <label>:6 ; preds = %13, %0 + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 13 ; [#uses=1] + %9 = load i8* %8, align 1 ; [#uses=1] + %10 = zext i8 %9 to i32 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = icmp sgt i32 %10, %11 ; [#uses=1] + br i1 %12, label %13, label %34 + +; <label>:13 ; preds = %6 + %14 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.FuncState* %14, i32 0, i32 6 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.FuncState* %17, i32 0, i32 13 ; [#uses=2] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = add i8 %19, -1 ; [#uses=2] + store i8 %20, i8* %18, align 1 + %21 = zext i8 %20 to i32 ; [#uses=1] + %22 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.FuncState* %22, i32 0, i32 15 ; [#uses=1] + %24 = getelementptr inbounds [200 x i16]* %23, i32 0, i32 %21 ; [#uses=1] + %25 = load i16* %24 ; [#uses=1] + %26 = zext i16 %25 to i32 ; [#uses=1] + %27 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.FuncState* %27, i32 0, i32 0 ; [#uses=1] + %29 = load %struct.Proto** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Proto* %29, i32 0, i32 7 ; [#uses=1] + %31 = load %struct.LocVar** %30, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.LocVar* %31, i32 %26 ; [#uses=1] + %33 = getelementptr inbounds %struct.LocVar* %32, i32 0, i32 2 ; [#uses=1] + store i32 %16, i32* %33, align 4 + br label %6 + +; <label>:34 ; preds = %6 + ret void +} + +; [#uses=1] +define internal void @_Z6fornumP8LexStateP7TStringi(%struct.LexState* %ls, %union.TString* %varname, i32 %line) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=16] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=6] + %base = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.TString* %varname, %union.TString** %2, align 4 + store i32 %line, i32* %3, align 4 + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 5 ; [#uses=1] + %6 = load %struct.FuncState** %5, align 4 ; [#uses=1] + store %struct.FuncState* %6, %struct.FuncState** %fs, align 4 + %7 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.FuncState* %7, i32 0, i32 9 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + store i32 %9, i32* %base, align 4 + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = load %struct.LexState** %1, align 4 ; [#uses=1] + %12 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %11, i8* getelementptr inbounds ([12 x i8]* @.str22151, i32 0, i32 0), i32 11) ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %10, %union.TString* %12, i32 0) + %13 = load %struct.LexState** %1, align 4 ; [#uses=1] + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %14, i8* getelementptr inbounds ([12 x i8]* @.str23152, i32 0, i32 0), i32 11) ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %13, %union.TString* %15, i32 1) + %16 = load %struct.LexState** %1, align 4 ; [#uses=1] + %17 = load %struct.LexState** %1, align 4 ; [#uses=1] + %18 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %17, i8* getelementptr inbounds ([11 x i8]* @.str24153, i32 0, i32 0), i32 10) ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %16, %union.TString* %18, i32 2) + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = load %union.TString** %2, align 4 ; [#uses=1] + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %19, %union.TString* %20, i32 3) + %21 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %21, i32 61) + %22 = load %struct.LexState** %1, align 4 ; [#uses=1] + %23 = call i32 @_Z4exp1P8LexState(%struct.LexState* %22) ; [#uses=0] + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %24, i32 44) + %25 = load %struct.LexState** %1, align 4 ; [#uses=1] + %26 = call i32 @_Z4exp1P8LexState(%struct.LexState* %25) ; [#uses=0] + %27 = load %struct.LexState** %1, align 4 ; [#uses=1] + %28 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %27, i32 44) ; [#uses=1] + %29 = icmp ne i32 %28, 0 ; [#uses=1] + br i1 %29, label %30, label %33 + +; <label>:30 ; preds = %0 + %31 = load %struct.LexState** %1, align 4 ; [#uses=1] + %32 = call i32 @_Z4exp1P8LexState(%struct.LexState* %31) ; [#uses=0] + br label %42 + +; <label>:33 ; preds = %0 + %34 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %35 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.FuncState* %35, i32 0, i32 9 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %39 = call i32 @_Z12luaK_numberKP9FuncStated(%struct.FuncState* %38, double 1.000000e+00) ; [#uses=1] + %40 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %34, i32 1, i32 %37, i32 %39) ; [#uses=0] + %41 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %41, i32 1) + br label %42 + +; <label>:42 ; preds = %33, %30 + %43 = load %struct.LexState** %1, align 4 ; [#uses=1] + %44 = load i32* %base, align 4 ; [#uses=1] + %45 = load i32* %3, align 4 ; [#uses=1] + call void @_Z7forbodyP8LexStateiiii(%struct.LexState* %43, i32 %44, i32 %45, i32 1, i32 1) + ret void +} + +; [#uses=1] +define internal void @_Z7forlistP8LexStateP7TString(%struct.LexState* %ls, %union.TString* %indexname) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=17] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=3] + %e = alloca %struct.expdesc, align 4 ; [#uses=2] + %nvars = alloca i32, align 4 ; [#uses=12] + %line = alloca i32, align 4 ; [#uses=2] + %base = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store %union.TString* %indexname, %union.TString** %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.LexState* %3, i32 0, i32 5 ; [#uses=1] + %5 = load %struct.FuncState** %4, align 4 ; [#uses=1] + store %struct.FuncState* %5, %struct.FuncState** %fs, align 4 + store i32 0, i32* %nvars, align 4 + %6 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.FuncState* %6, i32 0, i32 9 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + store i32 %8, i32* %base, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + %11 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %10, i8* getelementptr inbounds ([16 x i8]* @.str19148, i32 0, i32 0), i32 15) ; [#uses=1] + %12 = load i32* %nvars, align 4 ; [#uses=2] + %13 = add nsw i32 %12, 1 ; [#uses=1] + store i32 %13, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %9, %union.TString* %11, i32 %12) + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = load %struct.LexState** %1, align 4 ; [#uses=1] + %16 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %15, i8* getelementptr inbounds ([12 x i8]* @.str20149, i32 0, i32 0), i32 11) ; [#uses=1] + %17 = load i32* %nvars, align 4 ; [#uses=2] + %18 = add nsw i32 %17, 1 ; [#uses=1] + store i32 %18, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %14, %union.TString* %16, i32 %17) + %19 = load %struct.LexState** %1, align 4 ; [#uses=1] + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %20, i8* getelementptr inbounds ([14 x i8]* @.str21150, i32 0, i32 0), i32 13) ; [#uses=1] + %22 = load i32* %nvars, align 4 ; [#uses=2] + %23 = add nsw i32 %22, 1 ; [#uses=1] + store i32 %23, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %19, %union.TString* %21, i32 %22) + %24 = load %struct.LexState** %1, align 4 ; [#uses=1] + %25 = load %union.TString** %2, align 4 ; [#uses=1] + %26 = load i32* %nvars, align 4 ; [#uses=2] + %27 = add nsw i32 %26, 1 ; [#uses=1] + store i32 %27, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %24, %union.TString* %25, i32 %26) + br label %28 + +; <label>:28 ; preds = %32, %0 + %29 = load %struct.LexState** %1, align 4 ; [#uses=1] + %30 = call i32 @_Z8testnextP8LexStatei(%struct.LexState* %29, i32 44) ; [#uses=1] + %31 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %31, label %32, label %38 + +; <label>:32 ; preds = %28 + %33 = load %struct.LexState** %1, align 4 ; [#uses=1] + %34 = load %struct.LexState** %1, align 4 ; [#uses=1] + %35 = call %union.TString* @_Z13str_checknameP8LexState(%struct.LexState* %34) ; [#uses=1] + %36 = load i32* %nvars, align 4 ; [#uses=2] + %37 = add nsw i32 %36, 1 ; [#uses=1] + store i32 %37, i32* %nvars, align 4 + call void @_Z12new_localvarP8LexStateP7TStringi(%struct.LexState* %33, %union.TString* %35, i32 %36) + br label %28 + +; <label>:38 ; preds = %28 + %39 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %39, i32 267) + %40 = load %struct.LexState** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.LexState* %40, i32 0, i32 1 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + store i32 %42, i32* %line, align 4 + %43 = load %struct.LexState** %1, align 4 ; [#uses=1] + %44 = load %struct.LexState** %1, align 4 ; [#uses=1] + %45 = call i32 @_Z8explist1P8LexStateP7expdesc(%struct.LexState* %44, %struct.expdesc* %e) ; [#uses=1] + call void @_Z13adjust_assignP8LexStateiiP7expdesc(%struct.LexState* %43, i32 3, i32 %45, %struct.expdesc* %e) + %46 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z15luaK_checkstackP9FuncStatei(%struct.FuncState* %46, i32 3) + %47 = load %struct.LexState** %1, align 4 ; [#uses=1] + %48 = load i32* %base, align 4 ; [#uses=1] + %49 = load i32* %line, align 4 ; [#uses=1] + %50 = load i32* %nvars, align 4 ; [#uses=1] + %51 = sub nsw i32 %50, 3 ; [#uses=1] + call void @_Z7forbodyP8LexStateiiii(%struct.LexState* %47, i32 %48, i32 %49, i32 %51, i32 0) + ret void +} + +; [#uses=2] +define internal void @_Z7forbodyP8LexStateiiii(%struct.LexState* %ls, i32 %base, i32 %line, i32 %nvars, i32 %isnum) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=4] + %5 = alloca i32, align 4 ; [#uses=4] + %bl = alloca %struct.BlockCnt, align 4 ; [#uses=1] + %fs = alloca %struct.FuncState*, align 4 ; [#uses=12] + %prep = alloca i32, align 4 ; [#uses=3] + %endfor = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %base, i32* %2, align 4 + store i32 %line, i32* %3, align 4 + store i32 %nvars, i32* %4, align 4 + store i32 %isnum, i32* %5, align 4 + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.LexState* %6, i32 0, i32 5 ; [#uses=1] + %8 = load %struct.FuncState** %7, align 4 ; [#uses=1] + store %struct.FuncState* %8, %struct.FuncState** %fs, align 4 + %9 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %9, i32 3) + %10 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %10, i32 259) + %11 = load i32* %5, align 4 ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %17 + +; <label>:13 ; preds = %0 + %14 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %15 = load i32* %2, align 4 ; [#uses=1] + %16 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %14, i32 32, i32 %15, i32 131070) ; [#uses=1] + br label %20 + +; <label>:17 ; preds = %0 + %18 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %19 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %18) ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %17, %13 + %21 = phi i32 [ %16, %13 ], [ %19, %17 ] ; [#uses=1] + store i32 %21, i32* %prep, align 4 + %22 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10enterblockP9FuncStateP8BlockCnth(%struct.FuncState* %22, %struct.BlockCnt* %bl, i8 zeroext 0) + %23 = load %struct.LexState** %1, align 4 ; [#uses=1] + %24 = load i32* %4, align 4 ; [#uses=1] + call void @_Z15adjustlocalvarsP8LexStatei(%struct.LexState* %23, i32 %24) + %25 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %26 = load i32* %4, align 4 ; [#uses=1] + call void @_Z16luaK_reserveregsP9FuncStatei(%struct.FuncState* %25, i32 %26) + %27 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5blockP8LexState(%struct.LexState* %27) + %28 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + call void @_Z10leaveblockP9FuncState(%struct.FuncState* %28) + %29 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %30 = load i32* %prep, align 4 ; [#uses=1] + call void @_Z16luaK_patchtohereP9FuncStatei(%struct.FuncState* %29, i32 %30) + %31 = load i32* %5, align 4 ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %37 + +; <label>:33 ; preds = %20 + %34 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %35 = load i32* %2, align 4 ; [#uses=1] + %36 = call i32 @_Z12luaK_codeABxP9FuncState6OpCodeij(%struct.FuncState* %34, i32 31, i32 %35, i32 131070) ; [#uses=1] + br label %42 + +; <label>:37 ; preds = %20 + %38 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %39 = load i32* %2, align 4 ; [#uses=1] + %40 = load i32* %4, align 4 ; [#uses=1] + %41 = call i32 @_Z12luaK_codeABCP9FuncState6OpCodeiii(%struct.FuncState* %38, i32 33, i32 %39, i32 0, i32 %40) ; [#uses=1] + br label %42 + +; <label>:42 ; preds = %37, %33 + %43 = phi i32 [ %36, %33 ], [ %41, %37 ] ; [#uses=1] + store i32 %43, i32* %endfor, align 4 + %44 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %45 = load i32* %3, align 4 ; [#uses=1] + call void @_Z12luaK_fixlineP9FuncStatei(%struct.FuncState* %44, i32 %45) + %46 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %47 = load i32* %5, align 4 ; [#uses=1] + %48 = icmp ne i32 %47, 0 ; [#uses=1] + br i1 %48, label %49, label %51 + +; <label>:49 ; preds = %42 + %50 = load i32* %endfor, align 4 ; [#uses=1] + br label %54 + +; <label>:51 ; preds = %42 + %52 = load %struct.FuncState** %fs, align 4 ; [#uses=1] + %53 = call i32 @_Z9luaK_jumpP9FuncState(%struct.FuncState* %52) ; [#uses=1] + br label %54 + +; <label>:54 ; preds = %51, %49 + %55 = phi i32 [ %50, %49 ], [ %53, %51 ] ; [#uses=1] + %56 = load i32* %prep, align 4 ; [#uses=1] + %57 = add nsw i32 %56, 1 ; [#uses=1] + call void @_Z14luaK_patchlistP9FuncStateii(%struct.FuncState* %46, i32 %55, i32 %57) + ret void +} + +; [#uses=3] +define internal i32 @_Z4exp1P8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=3] + %e = alloca %struct.expdesc, align 4 ; [#uses=3] + %k = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z4exprP8LexStateP7expdesc(%struct.LexState* %2, %struct.expdesc* %e) + %3 = getelementptr inbounds %struct.expdesc* %e, i32 0, i32 0 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + store i32 %4, i32* %k, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LexState* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.FuncState** %6, align 4 ; [#uses=1] + call void @_Z16luaK_exp2nextregP9FuncStateP7expdesc(%struct.FuncState* %7, %struct.expdesc* %e) + %8 = load i32* %k, align 4 ; [#uses=1] + ret i32 %8 +} + +; [#uses=2] +define internal void @_Z14error_expectedP8LexStatei(%struct.LexState* %ls, i32 %token) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + store i32 %token, i32* %2, align 4 + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = load %struct.LexState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.LexState* %4, i32 0, i32 6 ; [#uses=1] + %6 = load %struct.lua_State** %5, align 4 ; [#uses=1] + %7 = load %struct.LexState** %1, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = call i8* @_Z14luaX_token2strP8LexStatei(%struct.LexState* %7, i32 %8) ; [#uses=1] + %10 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %6, i8* getelementptr inbounds ([14 x i8]* @.str26155, i32 0, i32 0), i8* %9) ; [#uses=1] + call void @_Z16luaX_syntaxerrorP8LexStatePKc(%struct.LexState* %3, i8* %10) + ret void +} + +; [#uses=2] +define internal i32 @_Z15test_then_blockP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=5] + %condexit = alloca i32, align 4 ; [#uses=2] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9luaX_nextP8LexState(%struct.LexState* %2) + %3 = load %struct.LexState** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z4condP8LexState(%struct.LexState* %3) ; [#uses=1] + store i32 %4, i32* %condexit, align 4 + %5 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z9checknextP8LexStatei(%struct.LexState* %5, i32 274) + %6 = load %struct.LexState** %1, align 4 ; [#uses=1] + call void @_Z5blockP8LexState(%struct.LexState* %6) + %7 = load i32* %condexit, align 4 ; [#uses=1] + ret i32 %7 +} + +; [#uses=1] +define internal void @_Z12anchor_tokenP8LexState(%struct.LexState* %ls) { + %1 = alloca %struct.LexState*, align 4 ; [#uses=5] + %ts = alloca %union.TString*, align 4 ; [#uses=3] + store %struct.LexState* %ls, %struct.LexState** %1, align 4 + %2 = load %struct.LexState** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.LexState* %2, i32 0, i32 3 ; [#uses=1] + %4 = getelementptr inbounds %struct.Token* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 285 ; [#uses=1] + br i1 %6, label %13, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.LexState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.LexState* %8, i32 0, i32 3 ; [#uses=1] + %10 = getelementptr inbounds %struct.Token* %9, i32 0, i32 0 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 286 ; [#uses=1] + br i1 %12, label %13, label %29 + +; <label>:13 ; preds = %7, %0 + %14 = load %struct.LexState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.LexState* %14, i32 0, i32 3 ; [#uses=1] + %16 = getelementptr inbounds %struct.Token* %15, i32 0, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.TString** ; [#uses=1] + %19 = load %union.TString** %18, align 4 ; [#uses=1] + store %union.TString* %19, %union.TString** %ts, align 4 + %20 = load %struct.LexState** %1, align 4 ; [#uses=1] + %21 = load %union.TString** %ts, align 4 ; [#uses=1] + %22 = getelementptr inbounds %union.TString* %21, i32 1 ; [#uses=1] + %23 = bitcast %union.TString* %22 to i8* ; [#uses=1] + %24 = load %union.TString** %ts, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.TString* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %struct.anon* %25, i32 0, i32 5 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = call %union.TString* @_Z14luaX_newstringP8LexStatePKcj(%struct.LexState* %20, i8* %23, i32 %27) ; [#uses=0] + br label %29 + +; <label>:29 ; preds = %13, %7 + ret void +} + +; [#uses=1] +define hidden %struct.lua_State* @_Z14luaE_newthreadP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %2, i8* null, i32 0, i32 112) ; [#uses=1] + %4 = getelementptr inbounds i8* %3, i32 0 ; [#uses=1] + %5 = bitcast i8* %4 to %struct.lua_State* ; [#uses=1] + store %struct.lua_State* %5, %struct.lua_State** %L1, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %8 = bitcast %struct.lua_State* %7 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %6, %union.GCObject* %8, i8 zeroext 8) + %9 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 6 ; [#uses=1] + %12 = load %struct.global_State** %11, align 4 ; [#uses=1] + call void @_Z13preinit_stateP9lua_StateP12global_State(%struct.lua_State* %9, %struct.global_State* %12) + %13 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10stack_initP9lua_StateS0_(%struct.lua_State* %13, %struct.lua_State* %14) + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %o2, align 4 + %17 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %o1, align 4 + %19 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %union.anon* %20 to i8* ; [#uses=1] + %24 = bitcast %union.anon* %22 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %24, i32 8, i32 4, i1 false) + %25 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 %27, i32* %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 17 ; [#uses=1] + %32 = load i8* %31, align 1 ; [#uses=1] + %33 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 17 ; [#uses=1] + store i8 %32, i8* %34, align 1 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 19 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_State* %38, i32 0, i32 19 ; [#uses=1] + store i32 %37, i32* %39, align 4 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 21 ; [#uses=1] + %42 = load void (%struct.lua_State*, %struct.lua_Debug*)** %41, align 4 ; [#uses=1] + %43 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 21 ; [#uses=1] + store void (%struct.lua_State*, %struct.lua_Debug*)* %42, void (%struct.lua_State*, %struct.lua_Debug*)** %44, align 4 + %45 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_State* %45, i32 0, i32 19 ; [#uses=1] + %47 = load i32* %46, align 4 ; [#uses=1] + %48 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 20 ; [#uses=1] + store i32 %47, i32* %49, align 4 + %50 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + ret %struct.lua_State* %50 +} + +; [#uses=2] +define internal void @_Z13preinit_stateP9lua_StateP12global_State(%struct.lua_State* %L, %struct.global_State* %g) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=21] + %2 = alloca %struct.global_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.global_State* %g, %struct.global_State** %2, align 4 + %3 = load %struct.global_State** %2, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 6 ; [#uses=1] + store %struct.global_State* %3, %struct.global_State** %5, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 10 ; [#uses=1] + store %struct.lua_TValue* null, %struct.lua_TValue** %7, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 13 ; [#uses=1] + store i32 0, i32* %9, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 26 ; [#uses=1] + store %struct.lua_longjmp* null, %struct.lua_longjmp** %11, align 4 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_State* %12, i32 0, i32 21 ; [#uses=1] + store void (%struct.lua_State*, %struct.lua_Debug*)* null, void (%struct.lua_State*, %struct.lua_Debug*)** %13, align 4 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 17 ; [#uses=1] + store i8 0, i8* %15, align 1 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 19 ; [#uses=1] + store i32 0, i32* %17, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 18 ; [#uses=1] + store i8 1, i8* %19, align 1 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 19 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 20 ; [#uses=1] + store i32 %22, i32* %24, align 4 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 24 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %26, align 4 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 14 ; [#uses=1] + store i32 0, i32* %28, align 4 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 16 ; [#uses=1] + store i16 0, i16* %30, align 2 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 15 ; [#uses=1] + store i16 0, i16* %32, align 2 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %34, align 1 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* null, %struct.CallInfo** %36, align 4 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 12 ; [#uses=1] + store %struct.CallInfo* null, %struct.CallInfo** %38, align 4 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 8 ; [#uses=1] + store i32* null, i32** %40, align 4 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_State* %41, i32 0, i32 27 ; [#uses=1] + store i32 0, i32* %42, align 4 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 22 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %45, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z10stack_initP9lua_StateS0_(%struct.lua_State* %L1, %struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=23] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L1, %struct.lua_State** %1, align 4 + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %3, i8* null, i32 0, i32 192) ; [#uses=1] + %5 = bitcast i8* %4 to %struct.CallInfo* ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 12 ; [#uses=1] + store %struct.CallInfo* %5, %struct.CallInfo** %7, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 12 ; [#uses=1] + %10 = load %struct.CallInfo** %9, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* %10, %struct.CallInfo** %12, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 14 ; [#uses=1] + store i32 8, i32* %14, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 12 ; [#uses=1] + %17 = load %struct.CallInfo** %16, align 4 ; [#uses=1] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 14 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.CallInfo* %17, i32 %20 ; [#uses=1] + %22 = getelementptr inbounds %struct.CallInfo* %21, i32 -1 ; [#uses=1] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 11 ; [#uses=1] + store %struct.CallInfo* %22, %struct.CallInfo** %24, align 4 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %25, i8* null, i32 0, i32 540) ; [#uses=1] + %27 = bitcast i8* %26 to %struct.lua_TValue* ; [#uses=1] + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 10 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 13 ; [#uses=1] + store i32 45, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 10 ; [#uses=1] + %34 = load %struct.lua_TValue** %33, align 4 ; [#uses=1] + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %34, %struct.lua_TValue** %36, align 4 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_State* %37, i32 0, i32 10 ; [#uses=1] + %39 = load %struct.lua_TValue** %38, align 4 ; [#uses=1] + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 13 ; [#uses=1] + %42 = load i32* %41, align 4 ; [#uses=1] + %43 = sub nsw i32 %42, 5 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %39, i32 %43 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 -1 ; [#uses=1] + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_State* %46, i32 0, i32 9 ; [#uses=1] + store %struct.lua_TValue* %45, %struct.lua_TValue** %47, align 4 + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 4 ; [#uses=1] + %50 = load %struct.lua_TValue** %49, align 4 ; [#uses=1] + %51 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_State* %51, i32 0, i32 7 ; [#uses=1] + %53 = load %struct.CallInfo** %52, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.CallInfo* %53, i32 0, i32 1 ; [#uses=1] + store %struct.lua_TValue* %50, %struct.lua_TValue** %54, align 4 + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 4 ; [#uses=2] + %57 = load %struct.lua_TValue** %56, align 4 ; [#uses=2] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 1 ; [#uses=1] + store %struct.lua_TValue* %58, %struct.lua_TValue** %56, align 4 + %59 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %59, align 4 + %60 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_State* %60, i32 0, i32 4 ; [#uses=1] + %62 = load %struct.lua_TValue** %61, align 4 ; [#uses=2] + %63 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_State* %63, i32 0, i32 7 ; [#uses=1] + %65 = load %struct.CallInfo** %64, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.CallInfo* %65, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %62, %struct.lua_TValue** %66, align 4 + %67 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_State* %67, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %62, %struct.lua_TValue** %68, align 4 + %69 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_State* %69, i32 0, i32 4 ; [#uses=1] + %71 = load %struct.lua_TValue** %70, align 4 ; [#uses=1] + %72 = getelementptr inbounds %struct.lua_TValue* %71, i32 20 ; [#uses=1] + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_State* %73, i32 0, i32 7 ; [#uses=1] + %75 = load %struct.CallInfo** %74, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.CallInfo* %75, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %72, %struct.lua_TValue** %76, align 4 + ret void +} + +; [#uses=1] +define hidden void @_Z15luaE_freethreadP9lua_StateS0_(%struct.lua_State* %L, %struct.lua_State* %L1) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_State* %L1, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 10 ; [#uses=1] + %6 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %3, %struct.lua_TValue* %6) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z9freestackP9lua_StateS0_(%struct.lua_State* %7, %struct.lua_State* %8) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = bitcast %struct.lua_State* %10 to i8* ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 0 ; [#uses=1] + %13 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %9, i8* %12, i32 112, i32 0) ; [#uses=0] + ret void +} + +; [#uses=2] +define internal void @_Z9freestackP9lua_StateS0_(%struct.lua_State* %L, %struct.lua_State* %L1) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_State* %L1, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 12 ; [#uses=1] + %6 = load %struct.CallInfo** %5, align 4 ; [#uses=1] + %7 = bitcast %struct.CallInfo* %6 to i8* ; [#uses=1] + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 14 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = mul i32 %10, 24 ; [#uses=1] + %12 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %3, i8* %7, i32 %11, i32 0) ; [#uses=0] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_State* %14, i32 0, i32 10 ; [#uses=1] + %16 = load %struct.lua_TValue** %15, align 4 ; [#uses=1] + %17 = bitcast %struct.lua_TValue* %16 to i8* ; [#uses=1] + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 13 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = mul i32 %20, 12 ; [#uses=1] + %22 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %13, i8* %17, i32 %21, i32 0) ; [#uses=0] + ret void +} + +; [#uses=1] +define %struct.lua_State* @_Z12lua_newstatePFPvS_S_jjES_(i8* (i8*, i8*, i32, i32)* %f, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8* (i8*, i8*, i32, i32)*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=5] + %L = alloca %struct.lua_State*, align 4 ; [#uses=14] + %g = alloca %struct.global_State*, align 4 ; [#uses=32] + %l = alloca i8*, align 4 ; [#uses=3] + store i8* (i8*, i8*, i32, i32)* %f, i8* (i8*, i8*, i32, i32)** %2, align 4 + store i8* %ud, i8** %3, align 4 + %4 = load i8* (i8*, i8*, i32, i32)** %2, align 4 ; [#uses=1] + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = call i8* %4(i8* %5, i8* null, i32 0, i32 348) ; [#uses=1] + store i8* %6, i8** %l, align 4 + %7 = load i8** %l, align 4 ; [#uses=1] + %8 = icmp eq i8* %7, null ; [#uses=1] + br i1 %8, label %9, label %10 + +; <label>:9 ; preds = %0 + store %struct.lua_State* null, %struct.lua_State** %1 + br label %136 + +; <label>:10 ; preds = %0 + %11 = load i8** %l, align 4 ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 0 ; [#uses=1] + %13 = bitcast i8* %12 to %struct.lua_State* ; [#uses=1] + store %struct.lua_State* %13, %struct.lua_State** %L, align 4 + %14 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %15 = bitcast %struct.lua_State* %14 to %struct.LG* ; [#uses=1] + %16 = getelementptr inbounds %struct.LG* %15, i32 0, i32 1 ; [#uses=1] + store %struct.global_State* %16, %struct.global_State** %g, align 4 + %17 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %18, align 4 + %19 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 1 ; [#uses=1] + store i8 8, i8* %20, align 1 + %21 = load %struct.global_State** %g, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 3 ; [#uses=1] + store i8 33, i8* %22, align 1 + %23 = load %struct.global_State** %g, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.global_State* %23, i32 0, i32 3 ; [#uses=1] + %25 = load i8* %24, align 1 ; [#uses=1] + %26 = zext i8 %25 to i32 ; [#uses=1] + %27 = and i32 %26, 3 ; [#uses=1] + %28 = trunc i32 %27 to i8 ; [#uses=1] + %29 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_State* %29, i32 0, i32 2 ; [#uses=1] + store i8 %28, i8* %30, align 1 + %31 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 2 ; [#uses=2] + %33 = load i8* %32, align 1 ; [#uses=1] + %34 = zext i8 %33 to i32 ; [#uses=1] + %35 = or i32 %34, 96 ; [#uses=1] + %36 = trunc i32 %35 to i8 ; [#uses=1] + store i8 %36, i8* %32, align 1 + %37 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %38 = load %struct.global_State** %g, align 4 ; [#uses=1] + call void @_Z13preinit_stateP9lua_StateP12global_State(%struct.lua_State* %37, %struct.global_State* %38) + %39 = load i8* (i8*, i8*, i32, i32)** %2, align 4 ; [#uses=1] + %40 = load %struct.global_State** %g, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.global_State* %40, i32 0, i32 1 ; [#uses=1] + store i8* (i8*, i8*, i32, i32)* %39, i8* (i8*, i8*, i32, i32)** %41, align 4 + %42 = load i8** %3, align 4 ; [#uses=1] + %43 = load %struct.global_State** %g, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.global_State* %43, i32 0, i32 2 ; [#uses=1] + store i8* %42, i8** %44, align 4 + %45 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %46 = load %struct.global_State** %g, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.global_State* %46, i32 0, i32 21 ; [#uses=1] + store %struct.lua_State* %45, %struct.lua_State** %47, align 4 + %48 = load %struct.global_State** %g, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.global_State* %48, i32 0, i32 22 ; [#uses=1] + %50 = load %struct.global_State** %g, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.global_State* %50, i32 0, i32 22 ; [#uses=1] + %52 = getelementptr inbounds %struct.UpVal* %51, i32 0, i32 4 ; [#uses=1] + %53 = getelementptr inbounds %0* %52, i32 0, i32 0 ; [#uses=1] + %54 = bitcast %struct.lua_TValue* %53 to %13* ; [#uses=1] + %55 = getelementptr inbounds %13* %54, i32 0, i32 0 ; [#uses=1] + store %struct.UpVal* %49, %struct.UpVal** %55, align 4 + %56 = load %struct.global_State** %g, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.global_State* %56, i32 0, i32 22 ; [#uses=1] + %58 = load %struct.global_State** %g, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.global_State* %58, i32 0, i32 22 ; [#uses=1] + %60 = getelementptr inbounds %struct.UpVal* %59, i32 0, i32 4 ; [#uses=1] + %61 = getelementptr inbounds %0* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast %struct.lua_TValue* %61 to %13* ; [#uses=1] + %63 = getelementptr inbounds %13* %62, i32 0, i32 1 ; [#uses=1] + store %struct.UpVal* %57, %struct.UpVal** %63, align 4 + %64 = load %struct.global_State** %g, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.global_State* %64, i32 0, i32 13 ; [#uses=1] + store i32 0, i32* %65, align 4 + %66 = load %struct.global_State** %g, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.global_State* %66, i32 0, i32 0 ; [#uses=1] + %68 = getelementptr inbounds %struct.stringtable* %67, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %68, align 4 + %69 = load %struct.global_State** %g, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.global_State* %69, i32 0, i32 0 ; [#uses=1] + %71 = getelementptr inbounds %struct.stringtable* %70, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %71, align 4 + %72 = load %struct.global_State** %g, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.global_State* %72, i32 0, i32 0 ; [#uses=1] + %74 = getelementptr inbounds %struct.stringtable* %73, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** null, %union.GCObject*** %74, align 4 + %75 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_State* %75, i32 0, i32 6 ; [#uses=1] + %77 = load %struct.global_State** %76, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.global_State* %77, i32 0, i32 20 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %79, align 4 + %80 = load %struct.global_State** %g, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.global_State* %80, i32 0, i32 12 ; [#uses=1] + %82 = getelementptr inbounds %struct.Mbuffer* %81, i32 0, i32 0 ; [#uses=1] + store i8* null, i8** %82, align 4 + %83 = load %struct.global_State** %g, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.global_State* %83, i32 0, i32 12 ; [#uses=1] + %85 = getelementptr inbounds %struct.Mbuffer* %84, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %85, align 4 + %86 = load %struct.global_State** %g, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.global_State* %86, i32 0, i32 19 ; [#uses=1] + store i32 (%struct.lua_State*)* null, i32 (%struct.lua_State*)** %87, align 4 + %88 = load %struct.global_State** %g, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.global_State* %88, i32 0, i32 4 ; [#uses=1] + store i8 0, i8* %89, align 1 + %90 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %91 = bitcast %struct.lua_State* %90 to %union.GCObject* ; [#uses=1] + %92 = load %struct.global_State** %g, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.global_State* %92, i32 0, i32 6 ; [#uses=1] + store %union.GCObject* %91, %union.GCObject** %93, align 4 + %94 = load %struct.global_State** %g, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.global_State* %94, i32 0, i32 5 ; [#uses=1] + store i32 0, i32* %95, align 4 + %96 = load %struct.global_State** %g, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.global_State* %96, i32 0, i32 6 ; [#uses=1] + %98 = load %struct.global_State** %g, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.global_State* %98, i32 0, i32 7 ; [#uses=1] + store %union.GCObject** %97, %union.GCObject*** %99, align 4 + %100 = load %struct.global_State** %g, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.global_State* %100, i32 0, i32 8 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %101, align 4 + %102 = load %struct.global_State** %g, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.global_State* %102, i32 0, i32 9 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %103, align 4 + %104 = load %struct.global_State** %g, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.global_State* %104, i32 0, i32 10 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %105, align 4 + %106 = load %struct.global_State** %g, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.global_State* %106, i32 0, i32 11 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %107, align 4 + %108 = load %struct.global_State** %g, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.global_State* %108, i32 0, i32 14 ; [#uses=1] + store i32 348, i32* %109, align 4 + %110 = load %struct.global_State** %g, align 4 ; [#uses=1] + %111 = getelementptr inbounds %struct.global_State* %110, i32 0, i32 17 ; [#uses=1] + store i32 200, i32* %111, align 4 + %112 = load %struct.global_State** %g, align 4 ; [#uses=1] + %113 = getelementptr inbounds %struct.global_State* %112, i32 0, i32 18 ; [#uses=1] + store i32 200, i32* %113, align 4 + %114 = load %struct.global_State** %g, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.global_State* %114, i32 0, i32 16 ; [#uses=1] + store i32 0, i32* %115, align 4 + store i32 0, i32* %i, align 4 + br label %116 + +; <label>:116 ; preds = %124, %10 + %117 = load i32* %i, align 4 ; [#uses=1] + %118 = icmp slt i32 %117, 9 ; [#uses=1] + br i1 %118, label %119, label %127 + +; <label>:119 ; preds = %116 + %120 = load i32* %i, align 4 ; [#uses=1] + %121 = load %struct.global_State** %g, align 4 ; [#uses=1] + %122 = getelementptr inbounds %struct.global_State* %121, i32 0, i32 23 ; [#uses=1] + %123 = getelementptr inbounds [9 x %struct.Table*]* %122, i32 0, i32 %120 ; [#uses=1] + store %struct.Table* null, %struct.Table** %123 + br label %124 + +; <label>:124 ; preds = %119 + %125 = load i32* %i, align 4 ; [#uses=1] + %126 = add nsw i32 %125, 1 ; [#uses=1] + store i32 %126, i32* %i, align 4 + br label %116 + +; <label>:127 ; preds = %116 + %128 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %129 = call i32 @_Z20luaD_rawrunprotectedP9lua_StatePFvS0_PvES1_(%struct.lua_State* %128, void (%struct.lua_State*, i8*)* @_Z9f_luaopenP9lua_StatePv, i8* null) ; [#uses=1] + %130 = icmp ne i32 %129, 0 ; [#uses=1] + br i1 %130, label %131, label %133 + +; <label>:131 ; preds = %127 + %132 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z11close_stateP9lua_State(%struct.lua_State* %132) + store %struct.lua_State* null, %struct.lua_State** %L, align 4 + br label %134 + +; <label>:133 ; preds = %127 + br label %134 + +; <label>:134 ; preds = %133, %131 + %135 = load %struct.lua_State** %L, align 4 ; [#uses=1] + store %struct.lua_State* %135, %struct.lua_State** %1 + br label %136 + +; <label>:136 ; preds = %134, %9 + %137 = load %struct.lua_State** %1 ; [#uses=1] + ret %struct.lua_State* %137 +} + +; [#uses=1] +define internal void @_Z9f_luaopenP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %2 = alloca i8*, align 4 ; [#uses=1] + %g = alloca %struct.global_State*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + store %struct.global_State* %5, %struct.global_State** %g, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10stack_initP9lua_StateS0_(%struct.lua_State* %6, %struct.lua_State* %7) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 22 ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %i_o, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %10, i32 0, i32 2) ; [#uses=1] + %12 = bitcast %struct.Table* %11 to %union.GCObject* ; [#uses=1] + %13 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %union.anon* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast double* %15 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %12, %union.GCObject** %16, align 4 + %17 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %18, align 4 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 6 ; [#uses=1] + %21 = load %struct.global_State** %20, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.global_State* %21, i32 0, i32 20 ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %i_o1, align 4 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %23, i32 0, i32 2) ; [#uses=1] + %25 = bitcast %struct.Table* %24 to %union.GCObject* ; [#uses=1] + %26 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %25, %union.GCObject** %29, align 4 + %30 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %31, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11luaS_resizeP9lua_Statei(%struct.lua_State* %32, i32 32) + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaT_initP9lua_State(%struct.lua_State* %33) + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaX_initP9lua_State(%struct.lua_State* %34) + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %35, i8* getelementptr inbounds ([18 x i8]* @.str158, i32 0, i32 0), i32 17) ; [#uses=1] + %37 = getelementptr inbounds %union.TString* %36, i32 0, i32 0 ; [#uses=1] + %38 = getelementptr inbounds %struct.anon* %37, i32 0, i32 2 ; [#uses=2] + %39 = load i8* %38, align 1 ; [#uses=1] + %40 = zext i8 %39 to i32 ; [#uses=1] + %41 = or i32 %40, 32 ; [#uses=1] + %42 = trunc i32 %41 to i8 ; [#uses=1] + store i8 %42, i8* %38, align 1 + %43 = load %struct.global_State** %g, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.global_State* %43, i32 0, i32 14 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = mul i32 4, %45 ; [#uses=1] + %47 = load %struct.global_State** %g, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.global_State* %47, i32 0, i32 13 ; [#uses=1] + store i32 %46, i32* %48, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z11close_stateP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %g = alloca %struct.global_State*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + store %struct.global_State* %4, %struct.global_State** %g, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 10 ; [#uses=1] + %8 = load %struct.lua_TValue** %7, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %5, %struct.lua_TValue* %8) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12luaC_freeallP9lua_State(%struct.lua_State* %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_State* %11, i32 0, i32 6 ; [#uses=1] + %13 = load %struct.global_State** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.global_State* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds %struct.stringtable* %14, i32 0, i32 0 ; [#uses=1] + %16 = load %union.GCObject*** %15, align 4 ; [#uses=1] + %17 = bitcast %union.GCObject** %16 to i8* ; [#uses=1] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_State* %18, i32 0, i32 6 ; [#uses=1] + %20 = load %struct.global_State** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.global_State* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %struct.stringtable* %21, i32 0, i32 2 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + %24 = mul i32 %23, 4 ; [#uses=1] + %25 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %10, i8* %17, i32 %24, i32 0) ; [#uses=0] + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = load %struct.global_State** %g, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.global_State* %27, i32 0, i32 12 ; [#uses=1] + %29 = getelementptr inbounds %struct.Mbuffer* %28, i32 0, i32 0 ; [#uses=1] + %30 = load i8** %29, align 4 ; [#uses=1] + %31 = load %struct.global_State** %g, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.global_State* %31, i32 0, i32 12 ; [#uses=1] + %33 = getelementptr inbounds %struct.Mbuffer* %32, i32 0, i32 2 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = mul i32 %34, 1 ; [#uses=1] + %36 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %26, i8* %30, i32 %35, i32 0) ; [#uses=1] + %37 = load %struct.global_State** %g, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 12 ; [#uses=1] + %39 = getelementptr inbounds %struct.Mbuffer* %38, i32 0, i32 0 ; [#uses=1] + store i8* %36, i8** %39, align 4 + %40 = load %struct.global_State** %g, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.global_State* %40, i32 0, i32 12 ; [#uses=1] + %42 = getelementptr inbounds %struct.Mbuffer* %41, i32 0, i32 2 ; [#uses=1] + store i32 0, i32* %42, align 4 + %43 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9freestackP9lua_StateS0_(%struct.lua_State* %43, %struct.lua_State* %44) + %45 = load %struct.global_State** %g, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.global_State* %45, i32 0, i32 1 ; [#uses=1] + %47 = load i8* (i8*, i8*, i32, i32)** %46, align 4 ; [#uses=1] + %48 = load %struct.global_State** %g, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.global_State* %48, i32 0, i32 2 ; [#uses=1] + %50 = load i8** %49, align 4 ; [#uses=1] + %51 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %52 = bitcast %struct.lua_State* %51 to i8* ; [#uses=1] + %53 = getelementptr inbounds i8* %52, i32 0 ; [#uses=1] + %54 = call i8* %47(i8* %50, i8* %53, i32 348, i32 0) ; [#uses=0] + ret void +} + +; [#uses=1] +define void @_Z9lua_closeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=16] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.lua_State* %2, i32 0, i32 6 ; [#uses=1] + %4 = load %struct.global_State** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.global_State* %4, i32 0, i32 21 ; [#uses=1] + %6 = load %struct.lua_State** %5, align 4 ; [#uses=1] + store %struct.lua_State* %6, %struct.lua_State** %1, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 10 ; [#uses=1] + %10 = load %struct.lua_TValue** %9, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %7, %struct.lua_TValue* %10) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z18luaC_separateudataP9lua_Statei(%struct.lua_State* %11, i32 1) ; [#uses=0] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_State* %13, i32 0, i32 27 ; [#uses=1] + store i32 0, i32* %14, align 4 + br label %15 + +; <label>:15 ; preds = %34, %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 12 ; [#uses=1] + %18 = load %struct.CallInfo** %17, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_State* %19, i32 0, i32 7 ; [#uses=1] + store %struct.CallInfo* %18, %struct.CallInfo** %20, align 4 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_State* %21, i32 0, i32 7 ; [#uses=1] + %23 = load %struct.CallInfo** %22, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.CallInfo* %23, i32 0, i32 0 ; [#uses=1] + %25 = load %struct.lua_TValue** %24, align 4 ; [#uses=2] + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_State* %26, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %27, align 4 + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_State* %28, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_State* %30, i32 0, i32 16 ; [#uses=1] + store i16 0, i16* %31, align 2 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 15 ; [#uses=1] + store i16 0, i16* %33, align 2 + br label %34 + +; <label>:34 ; preds = %15 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = call i32 @_Z20luaD_rawrunprotectedP9lua_StatePFvS0_PvES1_(%struct.lua_State* %35, void (%struct.lua_State*, i8*)* @_Z11callallgcTMP9lua_StatePv, i8* null) ; [#uses=1] + %37 = icmp ne i32 %36, 0 ; [#uses=1] + br i1 %37, label %15, label %38 + +; <label>:38 ; preds = %34 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11close_stateP9lua_State(%struct.lua_State* %39) + ret void +} + +; [#uses=1] +define internal void @_Z11callallgcTMP9lua_StatePv(%struct.lua_State* %L, i8* %ud) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %ud, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaC_callGCTMP9lua_State(%struct.lua_State* %3) + ret void +} + +; [#uses=3] +define hidden void @_Z11luaS_resizeP9lua_Statei(%struct.lua_State* %L, i32 %newsize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=6] + %newhash = alloca %union.GCObject**, align 4 ; [#uses=5] + %tb = alloca %struct.stringtable*, align 4 ; [#uses=7] + %i = alloca i32, align 4 ; [#uses=10] + %p = alloca %union.GCObject*, align 4 ; [#uses=7] + %next = alloca %union.GCObject*, align 4 ; [#uses=2] + %h = alloca i32, align 4 ; [#uses=2] + %h1 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %newsize, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 6 ; [#uses=1] + %5 = load %struct.global_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.global_State* %5, i32 0, i32 4 ; [#uses=1] + %7 = load i8* %6, align 1 ; [#uses=1] + %8 = zext i8 %7 to i32 ; [#uses=1] + %9 = icmp eq i32 %8, 2 ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + br label %108 + +; <label>:11 ; preds = %0 + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = add nsw i32 %12, 1 ; [#uses=1] + %14 = icmp ule i32 %13, 1073741823 ; [#uses=1] + br i1 %14, label %15, label %20 + +; <label>:15 ; preds = %11 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = mul i32 %17, 4 ; [#uses=1] + %19 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %16, i8* null, i32 0, i32 %18) ; [#uses=1] + br label %23 + +; <label>:20 ; preds = %11 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %21) ; [#uses=1] + br label %23 + +; <label>:23 ; preds = %20, %15 + %24 = phi i8* [ %19, %15 ], [ %22, %20 ] ; [#uses=1] + %25 = bitcast i8* %24 to %union.GCObject** ; [#uses=1] + store %union.GCObject** %25, %union.GCObject*** %newhash, align 4 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_State* %26, i32 0, i32 6 ; [#uses=1] + %28 = load %struct.global_State** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.global_State* %28, i32 0, i32 0 ; [#uses=1] + store %struct.stringtable* %29, %struct.stringtable** %tb, align 4 + store i32 0, i32* %i, align 4 + br label %30 + +; <label>:30 ; preds = %38, %23 + %31 = load i32* %i, align 4 ; [#uses=1] + %32 = load i32* %2, align 4 ; [#uses=1] + %33 = icmp slt i32 %31, %32 ; [#uses=1] + br i1 %33, label %34, label %41 + +; <label>:34 ; preds = %30 + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = load %union.GCObject*** %newhash, align 4 ; [#uses=1] + %37 = getelementptr inbounds %union.GCObject** %36, i32 %35 ; [#uses=1] + store %union.GCObject* null, %union.GCObject** %37 + br label %38 + +; <label>:38 ; preds = %34 + %39 = load i32* %i, align 4 ; [#uses=1] + %40 = add nsw i32 %39, 1 ; [#uses=1] + store i32 %40, i32* %i, align 4 + br label %30 + +; <label>:41 ; preds = %30 + store i32 0, i32* %i, align 4 + br label %42 + +; <label>:42 ; preds = %88, %41 + %43 = load i32* %i, align 4 ; [#uses=1] + %44 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.stringtable* %44, i32 0, i32 2 ; [#uses=1] + %46 = load i32* %45, align 4 ; [#uses=1] + %47 = icmp slt i32 %43, %46 ; [#uses=1] + br i1 %47, label %48, label %91 + +; <label>:48 ; preds = %42 + %49 = load i32* %i, align 4 ; [#uses=1] + %50 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.stringtable* %50, i32 0, i32 0 ; [#uses=1] + %52 = load %union.GCObject*** %51, align 4 ; [#uses=1] + %53 = getelementptr inbounds %union.GCObject** %52, i32 %49 ; [#uses=1] + %54 = load %union.GCObject** %53 ; [#uses=1] + store %union.GCObject* %54, %union.GCObject** %p, align 4 + br label %55 + +; <label>:55 ; preds = %58, %48 + %56 = load %union.GCObject** %p, align 4 ; [#uses=1] + %57 = icmp ne %union.GCObject* %56, null ; [#uses=1] + br i1 %57, label %58, label %87 + +; <label>:58 ; preds = %55 + %59 = load %union.GCObject** %p, align 4 ; [#uses=1] + %60 = getelementptr inbounds %union.GCObject* %59, i32 0, i32 0 ; [#uses=1] + %61 = bitcast %struct.lua_State* %60 to %struct.GCheader* ; [#uses=1] + %62 = getelementptr inbounds %struct.GCheader* %61, i32 0, i32 0 ; [#uses=1] + %63 = load %union.GCObject** %62, align 4 ; [#uses=1] + store %union.GCObject* %63, %union.GCObject** %next, align 4 + %64 = load %union.GCObject** %p, align 4 ; [#uses=1] + %65 = getelementptr inbounds %union.GCObject* %64, i32 0, i32 0 ; [#uses=1] + %66 = bitcast %struct.lua_State* %65 to %union.TString* ; [#uses=1] + %67 = getelementptr inbounds %union.TString* %66, i32 0, i32 0 ; [#uses=1] + %68 = getelementptr inbounds %struct.anon* %67, i32 0, i32 4 ; [#uses=1] + %69 = load i32* %68, align 4 ; [#uses=1] + store i32 %69, i32* %h, align 4 + %70 = load i32* %h, align 4 ; [#uses=1] + %71 = load i32* %2, align 4 ; [#uses=1] + %72 = sub nsw i32 %71, 1 ; [#uses=1] + %73 = and i32 %70, %72 ; [#uses=1] + store i32 %73, i32* %h1, align 4 + %74 = load i32* %h1, align 4 ; [#uses=1] + %75 = load %union.GCObject*** %newhash, align 4 ; [#uses=1] + %76 = getelementptr inbounds %union.GCObject** %75, i32 %74 ; [#uses=1] + %77 = load %union.GCObject** %76 ; [#uses=1] + %78 = load %union.GCObject** %p, align 4 ; [#uses=1] + %79 = getelementptr inbounds %union.GCObject* %78, i32 0, i32 0 ; [#uses=1] + %80 = bitcast %struct.lua_State* %79 to %struct.GCheader* ; [#uses=1] + %81 = getelementptr inbounds %struct.GCheader* %80, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %77, %union.GCObject** %81, align 4 + %82 = load %union.GCObject** %p, align 4 ; [#uses=1] + %83 = load i32* %h1, align 4 ; [#uses=1] + %84 = load %union.GCObject*** %newhash, align 4 ; [#uses=1] + %85 = getelementptr inbounds %union.GCObject** %84, i32 %83 ; [#uses=1] + store %union.GCObject* %82, %union.GCObject** %85 + %86 = load %union.GCObject** %next, align 4 ; [#uses=1] + store %union.GCObject* %86, %union.GCObject** %p, align 4 + br label %55 + +; <label>:87 ; preds = %55 + br label %88 + +; <label>:88 ; preds = %87 + %89 = load i32* %i, align 4 ; [#uses=1] + %90 = add nsw i32 %89, 1 ; [#uses=1] + store i32 %90, i32* %i, align 4 + br label %42 + +; <label>:91 ; preds = %42 + %92 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %93 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.stringtable* %93, i32 0, i32 0 ; [#uses=1] + %95 = load %union.GCObject*** %94, align 4 ; [#uses=1] + %96 = bitcast %union.GCObject** %95 to i8* ; [#uses=1] + %97 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.stringtable* %97, i32 0, i32 2 ; [#uses=1] + %99 = load i32* %98, align 4 ; [#uses=1] + %100 = mul i32 %99, 4 ; [#uses=1] + %101 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %92, i8* %96, i32 %100, i32 0) ; [#uses=0] + %102 = load i32* %2, align 4 ; [#uses=1] + %103 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %104 = getelementptr inbounds %struct.stringtable* %103, i32 0, i32 2 ; [#uses=1] + store i32 %102, i32* %104, align 4 + %105 = load %union.GCObject*** %newhash, align 4 ; [#uses=1] + %106 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.stringtable* %106, i32 0, i32 0 ; [#uses=1] + store %union.GCObject** %105, %union.GCObject*** %107, align 4 + br label %108 + +; <label>:108 ; preds = %91, %10 + ret void +} + +; [#uses=19] +define hidden %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %L, i8* %str, i32 %l) { + %1 = alloca %union.TString*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i32, align 4 ; [#uses=7] + %o = alloca %union.GCObject*, align 4 ; [#uses=7] + %h = alloca i32, align 4 ; [#uses=7] + %step = alloca i32, align 4 ; [#uses=3] + %l1 = alloca i32, align 4 ; [#uses=5] + %ts = alloca %union.TString*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %str, i8** %3, align 4 + store i32 %l, i32* %4, align 4 + %5 = load i32* %4, align 4 ; [#uses=1] + store i32 %5, i32* %h, align 4 + %6 = load i32* %4, align 4 ; [#uses=1] + %7 = lshr i32 %6, 5 ; [#uses=1] + %8 = add i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %step, align 4 + %9 = load i32* %4, align 4 ; [#uses=1] + store i32 %9, i32* %l1, align 4 + br label %10 + +; <label>:10 ; preds = %29, %0 + %11 = load i32* %l1, align 4 ; [#uses=1] + %12 = load i32* %step, align 4 ; [#uses=1] + %13 = icmp uge i32 %11, %12 ; [#uses=1] + br i1 %13, label %14, label %33 + +; <label>:14 ; preds = %10 + %15 = load i32* %h, align 4 ; [#uses=1] + %16 = load i32* %h, align 4 ; [#uses=1] + %17 = shl i32 %16, 5 ; [#uses=1] + %18 = load i32* %h, align 4 ; [#uses=1] + %19 = lshr i32 %18, 2 ; [#uses=1] + %20 = add i32 %17, %19 ; [#uses=1] + %21 = load i32* %l1, align 4 ; [#uses=1] + %22 = sub i32 %21, 1 ; [#uses=1] + %23 = load i8** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds i8* %23, i32 %22 ; [#uses=1] + %25 = load i8* %24 ; [#uses=1] + %26 = zext i8 %25 to i32 ; [#uses=1] + %27 = add i32 %20, %26 ; [#uses=1] + %28 = xor i32 %15, %27 ; [#uses=1] + store i32 %28, i32* %h, align 4 + br label %29 + +; <label>:29 ; preds = %14 + %30 = load i32* %step, align 4 ; [#uses=1] + %31 = load i32* %l1, align 4 ; [#uses=1] + %32 = sub i32 %31, %30 ; [#uses=1] + store i32 %32, i32* %l1, align 4 + br label %10 + +; <label>:33 ; preds = %10 + %34 = load i32* %h, align 4 ; [#uses=1] + %35 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_State* %35, i32 0, i32 6 ; [#uses=1] + %37 = load %struct.global_State** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.global_State* %37, i32 0, i32 0 ; [#uses=1] + %39 = getelementptr inbounds %struct.stringtable* %38, i32 0, i32 2 ; [#uses=1] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = sub nsw i32 %40, 1 ; [#uses=1] + %42 = and i32 %34, %41 ; [#uses=1] + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_State* %43, i32 0, i32 6 ; [#uses=1] + %45 = load %struct.global_State** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.global_State* %45, i32 0, i32 0 ; [#uses=1] + %47 = getelementptr inbounds %struct.stringtable* %46, i32 0, i32 0 ; [#uses=1] + %48 = load %union.GCObject*** %47, align 4 ; [#uses=1] + %49 = getelementptr inbounds %union.GCObject** %48, i32 %42 ; [#uses=1] + %50 = load %union.GCObject** %49 ; [#uses=1] + store %union.GCObject* %50, %union.GCObject** %o, align 4 + br label %51 + +; <label>:51 ; preds = %101, %33 + %52 = load %union.GCObject** %o, align 4 ; [#uses=1] + %53 = icmp ne %union.GCObject* %52, null ; [#uses=1] + br i1 %53, label %54, label %107 + +; <label>:54 ; preds = %51 + %55 = load %union.GCObject** %o, align 4 ; [#uses=1] + %56 = getelementptr inbounds %union.GCObject* %55, i32 0, i32 0 ; [#uses=1] + %57 = bitcast %struct.lua_State* %56 to %union.TString* ; [#uses=1] + store %union.TString* %57, %union.TString** %ts, align 4 + %58 = load %union.TString** %ts, align 4 ; [#uses=1] + %59 = getelementptr inbounds %union.TString* %58, i32 0, i32 0 ; [#uses=1] + %60 = getelementptr inbounds %struct.anon* %59, i32 0, i32 5 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + %62 = load i32* %4, align 4 ; [#uses=1] + %63 = icmp eq i32 %61, %62 ; [#uses=1] + br i1 %63, label %64, label %100 + +; <label>:64 ; preds = %54 + %65 = load i8** %3, align 4 ; [#uses=1] + %66 = load %union.TString** %ts, align 4 ; [#uses=1] + %67 = getelementptr inbounds %union.TString* %66, i32 1 ; [#uses=1] + %68 = bitcast %union.TString* %67 to i8* ; [#uses=1] + %69 = load i32* %4, align 4 ; [#uses=1] + %70 = call i32 @memcmp(i8* %65, i8* %68, i32 %69) nounwind readonly ; [#uses=1] + %71 = icmp eq i32 %70, 0 ; [#uses=1] + br i1 %71, label %72, label %100 + +; <label>:72 ; preds = %64 + %73 = load %union.GCObject** %o, align 4 ; [#uses=1] + %74 = getelementptr inbounds %union.GCObject* %73, i32 0, i32 0 ; [#uses=1] + %75 = bitcast %struct.lua_State* %74 to %struct.GCheader* ; [#uses=1] + %76 = getelementptr inbounds %struct.GCheader* %75, i32 0, i32 2 ; [#uses=1] + %77 = load i8* %76, align 1 ; [#uses=1] + %78 = zext i8 %77 to i32 ; [#uses=1] + %79 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.lua_State* %79, i32 0, i32 6 ; [#uses=1] + %81 = load %struct.global_State** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.global_State* %81, i32 0, i32 3 ; [#uses=1] + %83 = load i8* %82, align 1 ; [#uses=1] + %84 = zext i8 %83 to i32 ; [#uses=1] + %85 = xor i32 %84, 3 ; [#uses=1] + %86 = and i32 %78, %85 ; [#uses=1] + %87 = and i32 %86, 3 ; [#uses=1] + %88 = icmp ne i32 %87, 0 ; [#uses=1] + br i1 %88, label %89, label %98 + +; <label>:89 ; preds = %72 + %90 = load %union.GCObject** %o, align 4 ; [#uses=1] + %91 = getelementptr inbounds %union.GCObject* %90, i32 0, i32 0 ; [#uses=1] + %92 = bitcast %struct.lua_State* %91 to %struct.GCheader* ; [#uses=1] + %93 = getelementptr inbounds %struct.GCheader* %92, i32 0, i32 2 ; [#uses=2] + %94 = load i8* %93, align 1 ; [#uses=1] + %95 = zext i8 %94 to i32 ; [#uses=1] + %96 = xor i32 %95, 3 ; [#uses=1] + %97 = trunc i32 %96 to i8 ; [#uses=1] + store i8 %97, i8* %93, align 1 + br label %98 + +; <label>:98 ; preds = %89, %72 + %99 = load %union.TString** %ts, align 4 ; [#uses=1] + store %union.TString* %99, %union.TString** %1 + br label %113 + +; <label>:100 ; preds = %64, %54 + br label %101 + +; <label>:101 ; preds = %100 + %102 = load %union.GCObject** %o, align 4 ; [#uses=1] + %103 = getelementptr inbounds %union.GCObject* %102, i32 0, i32 0 ; [#uses=1] + %104 = bitcast %struct.lua_State* %103 to %struct.GCheader* ; [#uses=1] + %105 = getelementptr inbounds %struct.GCheader* %104, i32 0, i32 0 ; [#uses=1] + %106 = load %union.GCObject** %105, align 4 ; [#uses=1] + store %union.GCObject* %106, %union.GCObject** %o, align 4 + br label %51 + +; <label>:107 ; preds = %51 + %108 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %109 = load i8** %3, align 4 ; [#uses=1] + %110 = load i32* %4, align 4 ; [#uses=1] + %111 = load i32* %h, align 4 ; [#uses=1] + %112 = call %union.TString* @_Z7newlstrP9lua_StatePKcjj(%struct.lua_State* %108, i8* %109, i32 %110, i32 %111) ; [#uses=1] + store %union.TString* %112, %union.TString** %1 + br label %113 + +; <label>:113 ; preds = %107, %98 + %114 = load %union.TString** %1 ; [#uses=1] + ret %union.TString* %114 +} + +; [#uses=4] +declare i32 @memcmp(i8*, i8*, i32) nounwind readonly + +; [#uses=1] +define internal %union.TString* @_Z7newlstrP9lua_StatePKcjj(%struct.lua_State* %L, i8* %str, i32 %l, i32 %h) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=6] + %4 = alloca i32, align 4 ; [#uses=6] + %ts = alloca %union.TString*, align 4 ; [#uses=11] + %tb = alloca %struct.stringtable*, align 4 ; [#uses=9] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %str, i8** %2, align 4 + store i32 %l, i32* %3, align 4 + store i32 %h, i32* %4, align 4 + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = add i32 %5, 1 ; [#uses=1] + %7 = icmp ugt i32 %6, -19 ; [#uses=1] + br i1 %7, label %8, label %11 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %9) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %8, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = add i32 %13, 1 ; [#uses=1] + %15 = mul i32 %14, 1 ; [#uses=1] + %16 = add i32 %15, 16 ; [#uses=1] + %17 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %12, i8* null, i32 0, i32 %16) ; [#uses=1] + %18 = bitcast i8* %17 to %union.TString* ; [#uses=1] + store %union.TString* %18, %union.TString** %ts, align 4 + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = load %union.TString** %ts, align 4 ; [#uses=1] + %21 = getelementptr inbounds %union.TString* %20, i32 0, i32 0 ; [#uses=1] + %22 = getelementptr inbounds %struct.anon* %21, i32 0, i32 5 ; [#uses=1] + store i32 %19, i32* %22, align 4 + %23 = load i32* %4, align 4 ; [#uses=1] + %24 = load %union.TString** %ts, align 4 ; [#uses=1] + %25 = getelementptr inbounds %union.TString* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %struct.anon* %25, i32 0, i32 4 ; [#uses=1] + store i32 %23, i32* %26, align 4 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 6 ; [#uses=1] + %29 = load %struct.global_State** %28, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.global_State* %29, i32 0, i32 3 ; [#uses=1] + %31 = load i8* %30, align 1 ; [#uses=1] + %32 = zext i8 %31 to i32 ; [#uses=1] + %33 = and i32 %32, 3 ; [#uses=1] + %34 = trunc i32 %33 to i8 ; [#uses=1] + %35 = load %union.TString** %ts, align 4 ; [#uses=1] + %36 = getelementptr inbounds %union.TString* %35, i32 0, i32 0 ; [#uses=1] + %37 = getelementptr inbounds %struct.anon* %36, i32 0, i32 2 ; [#uses=1] + store i8 %34, i8* %37, align 1 + %38 = load %union.TString** %ts, align 4 ; [#uses=1] + %39 = getelementptr inbounds %union.TString* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %struct.anon* %39, i32 0, i32 1 ; [#uses=1] + store i8 4, i8* %40, align 1 + %41 = load %union.TString** %ts, align 4 ; [#uses=1] + %42 = getelementptr inbounds %union.TString* %41, i32 0, i32 0 ; [#uses=1] + %43 = getelementptr inbounds %struct.anon* %42, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %43, align 1 + %44 = load %union.TString** %ts, align 4 ; [#uses=1] + %45 = getelementptr inbounds %union.TString* %44, i32 1 ; [#uses=1] + %46 = bitcast %union.TString* %45 to i8* ; [#uses=1] + %47 = load i8** %2, align 4 ; [#uses=1] + %48 = load i32* %3, align 4 ; [#uses=1] + %49 = mul i32 %48, 1 ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %46, i8* %47, i32 %49, i32 1, i1 false) + %50 = load i32* %3, align 4 ; [#uses=1] + %51 = load %union.TString** %ts, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.TString* %51, i32 1 ; [#uses=1] + %53 = bitcast %union.TString* %52 to i8* ; [#uses=1] + %54 = getelementptr inbounds i8* %53, i32 %50 ; [#uses=1] + store i8 0, i8* %54 + %55 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 6 ; [#uses=1] + %57 = load %struct.global_State** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.global_State* %57, i32 0, i32 0 ; [#uses=1] + store %struct.stringtable* %58, %struct.stringtable** %tb, align 4 + %59 = load i32* %4, align 4 ; [#uses=1] + %60 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.stringtable* %60, i32 0, i32 2 ; [#uses=1] + %62 = load i32* %61, align 4 ; [#uses=1] + %63 = sub nsw i32 %62, 1 ; [#uses=1] + %64 = and i32 %59, %63 ; [#uses=1] + store i32 %64, i32* %4, align 4 + %65 = load i32* %4, align 4 ; [#uses=1] + %66 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.stringtable* %66, i32 0, i32 0 ; [#uses=1] + %68 = load %union.GCObject*** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds %union.GCObject** %68, i32 %65 ; [#uses=1] + %70 = load %union.GCObject** %69 ; [#uses=1] + %71 = load %union.TString** %ts, align 4 ; [#uses=1] + %72 = getelementptr inbounds %union.TString* %71, i32 0, i32 0 ; [#uses=1] + %73 = getelementptr inbounds %struct.anon* %72, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %70, %union.GCObject** %73, align 4 + %74 = load %union.TString** %ts, align 4 ; [#uses=1] + %75 = bitcast %union.TString* %74 to %union.GCObject* ; [#uses=1] + %76 = load i32* %4, align 4 ; [#uses=1] + %77 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.stringtable* %77, i32 0, i32 0 ; [#uses=1] + %79 = load %union.GCObject*** %78, align 4 ; [#uses=1] + %80 = getelementptr inbounds %union.GCObject** %79, i32 %76 ; [#uses=1] + store %union.GCObject* %75, %union.GCObject** %80 + %81 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %82 = getelementptr inbounds %struct.stringtable* %81, i32 0, i32 1 ; [#uses=2] + %83 = load i32* %82, align 4 ; [#uses=1] + %84 = add i32 %83, 1 ; [#uses=1] + store i32 %84, i32* %82, align 4 + %85 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.stringtable* %85, i32 0, i32 1 ; [#uses=1] + %87 = load i32* %86, align 4 ; [#uses=1] + %88 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.stringtable* %88, i32 0, i32 2 ; [#uses=1] + %90 = load i32* %89, align 4 ; [#uses=1] + %91 = icmp ugt i32 %87, %90 ; [#uses=1] + br i1 %91, label %92, label %103 + +; <label>:92 ; preds = %11 + %93 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.stringtable* %93, i32 0, i32 2 ; [#uses=1] + %95 = load i32* %94, align 4 ; [#uses=1] + %96 = icmp sle i32 %95, 1073741822 ; [#uses=1] + br i1 %96, label %97, label %103 + +; <label>:97 ; preds = %92 + %98 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %99 = load %struct.stringtable** %tb, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.stringtable* %99, i32 0, i32 2 ; [#uses=1] + %101 = load i32* %100, align 4 ; [#uses=1] + %102 = mul nsw i32 %101, 2 ; [#uses=1] + call void @_Z11luaS_resizeP9lua_Statei(%struct.lua_State* %98, i32 %102) + br label %103 + +; <label>:103 ; preds = %97, %92, %11 + %104 = load %union.TString** %ts, align 4 ; [#uses=1] + ret %union.TString* %104 +} + +; [#uses=1] +define hidden %union.Udata* @_Z13luaS_newudataP9lua_StatejP5Table(%struct.lua_State* %L, i32 %s, %struct.Table* %e) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca %struct.Table*, align 4 ; [#uses=2] + %u = alloca %union.Udata*, align 4 ; [#uses=9] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %s, i32* %2, align 4 + store %struct.Table* %e, %struct.Table** %3, align 4 + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = icmp ugt i32 %4, -23 ; [#uses=1] + br i1 %5, label %6, label %9 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %7) ; [#uses=0] + br label %9 + +; <label>:9 ; preds = %6, %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = add i32 %11, 20 ; [#uses=1] + %13 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %10, i8* null, i32 0, i32 %12) ; [#uses=1] + %14 = bitcast i8* %13 to %union.Udata* ; [#uses=1] + store %union.Udata* %14, %union.Udata** %u, align 4 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_State* %15, i32 0, i32 6 ; [#uses=1] + %17 = load %struct.global_State** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.global_State* %17, i32 0, i32 3 ; [#uses=1] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + %21 = and i32 %20, 3 ; [#uses=1] + %22 = trunc i32 %21 to i8 ; [#uses=1] + %23 = load %union.Udata** %u, align 4 ; [#uses=1] + %24 = getelementptr inbounds %union.Udata* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %4* %24, i32 0, i32 2 ; [#uses=1] + store i8 %22, i8* %25, align 1 + %26 = load %union.Udata** %u, align 4 ; [#uses=1] + %27 = getelementptr inbounds %union.Udata* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %4* %27, i32 0, i32 1 ; [#uses=1] + store i8 7, i8* %28, align 1 + %29 = load i32* %2, align 4 ; [#uses=1] + %30 = load %union.Udata** %u, align 4 ; [#uses=1] + %31 = getelementptr inbounds %union.Udata* %30, i32 0, i32 0 ; [#uses=1] + %32 = getelementptr inbounds %4* %31, i32 0, i32 5 ; [#uses=1] + store i32 %29, i32* %32, align 4 + %33 = load %union.Udata** %u, align 4 ; [#uses=1] + %34 = getelementptr inbounds %union.Udata* %33, i32 0, i32 0 ; [#uses=1] + %35 = getelementptr inbounds %4* %34, i32 0, i32 3 ; [#uses=1] + store %struct.Table* null, %struct.Table** %35, align 4 + %36 = load %struct.Table** %3, align 4 ; [#uses=1] + %37 = load %union.Udata** %u, align 4 ; [#uses=1] + %38 = getelementptr inbounds %union.Udata* %37, i32 0, i32 0 ; [#uses=1] + %39 = getelementptr inbounds %4* %38, i32 0, i32 4 ; [#uses=1] + store %struct.Table* %36, %struct.Table** %39, align 4 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 6 ; [#uses=1] + %42 = load %struct.global_State** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.global_State* %42, i32 0, i32 21 ; [#uses=1] + %44 = load %struct.lua_State** %43, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_State* %44, i32 0, i32 0 ; [#uses=1] + %46 = load %union.GCObject** %45, align 4 ; [#uses=1] + %47 = load %union.Udata** %u, align 4 ; [#uses=1] + %48 = getelementptr inbounds %union.Udata* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %4* %48, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %46, %union.GCObject** %49, align 4 + %50 = load %union.Udata** %u, align 4 ; [#uses=1] + %51 = bitcast %union.Udata* %50 to %union.GCObject* ; [#uses=1] + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_State* %52, i32 0, i32 6 ; [#uses=1] + %54 = load %struct.global_State** %53, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.global_State* %54, i32 0, i32 21 ; [#uses=1] + %56 = load %struct.lua_State** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_State* %56, i32 0, i32 0 ; [#uses=1] + store %union.GCObject* %51, %union.GCObject** %57, align 4 + %58 = load %union.Udata** %u, align 4 ; [#uses=1] + ret %union.Udata* %58 +} + +; [#uses=1] +define hidden i32 @_Z9luaH_nextP9lua_StateP5TableP10lua_TValue(%struct.lua_State* %L, %struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.Table*, align 4 ; [#uses=10] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=17] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o23 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o14 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load %struct.Table** %3, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %8 = call i32 @_Z9findindexP9lua_StateP5TableP10lua_TValue(%struct.lua_State* %5, %struct.Table* %6, %struct.lua_TValue* %7) ; [#uses=1] + store i32 %8, i32* %i, align 4 + %9 = load i32* %i, align 4 ; [#uses=1] + %10 = add nsw i32 %9, 1 ; [#uses=1] + store i32 %10, i32* %i, align 4 + br label %11 + +; <label>:11 ; preds = %55, %0 + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = load %struct.Table** %3, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Table* %13, i32 0, i32 10 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = icmp slt i32 %12, %15 ; [#uses=1] + br i1 %16, label %17, label %58 + +; <label>:17 ; preds = %11 + %18 = load i32* %i, align 4 ; [#uses=1] + %19 = load %struct.Table** %3, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Table* %19, i32 0, i32 6 ; [#uses=1] + %21 = load %struct.lua_TValue** %20, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 %18 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = icmp eq i32 %24, 0 ; [#uses=1] + br i1 %25, label %54, label %26 + +; <label>:26 ; preds = %17 + %27 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %i_o, align 4 + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = add nsw i32 %28, 1 ; [#uses=1] + %30 = sitofp i32 %29 to double ; [#uses=1] + %31 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %union.anon* %32, i32 0, i32 0 ; [#uses=1] + store double %30, double* %33, align 4 + %34 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %35, align 4 + %36 = load i32* %i, align 4 ; [#uses=1] + %37 = load %struct.Table** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.Table* %37, i32 0, i32 6 ; [#uses=1] + %39 = load %struct.lua_TValue** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 %36 ; [#uses=1] + store %struct.lua_TValue* %40, %struct.lua_TValue** %o2, align 4 + %41 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %41, i32 1 ; [#uses=1] + store %struct.lua_TValue* %42, %struct.lua_TValue** %o1, align 4 + %43 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 0, i32 0 ; [#uses=1] + %45 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_TValue* %45, i32 0, i32 0 ; [#uses=1] + %47 = bitcast %union.anon* %44 to i8* ; [#uses=1] + %48 = bitcast %union.anon* %46 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %47, i8* %48, i32 8, i32 4, i1 false) + %49 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 0, i32 1 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + %52 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 0, i32 1 ; [#uses=1] + store i32 %51, i32* %53, align 4 + store i32 1, i32* %1 + br label %127 + +; <label>:54 ; preds = %17 + br label %55 + +; <label>:55 ; preds = %54 + %56 = load i32* %i, align 4 ; [#uses=1] + %57 = add nsw i32 %56, 1 ; [#uses=1] + store i32 %57, i32* %i, align 4 + br label %11 + +; <label>:58 ; preds = %11 + %59 = load %struct.Table** %3, align 4 ; [#uses=1] + %60 = getelementptr inbounds %struct.Table* %59, i32 0, i32 10 ; [#uses=1] + %61 = load i32* %60, align 4 ; [#uses=1] + %62 = load i32* %i, align 4 ; [#uses=1] + %63 = sub nsw i32 %62, %61 ; [#uses=1] + store i32 %63, i32* %i, align 4 + br label %64 + +; <label>:64 ; preds = %123, %58 + %65 = load i32* %i, align 4 ; [#uses=1] + %66 = load %struct.Table** %3, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Table* %66, i32 0, i32 4 ; [#uses=1] + %68 = load i8* %67, align 1 ; [#uses=1] + %69 = zext i8 %68 to i32 ; [#uses=1] + %70 = shl i32 1, %69 ; [#uses=1] + %71 = icmp slt i32 %65, %70 ; [#uses=1] + br i1 %71, label %72, label %126 + +; <label>:72 ; preds = %64 + %73 = load i32* %i, align 4 ; [#uses=1] + %74 = load %struct.Table** %3, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.Table* %74, i32 0, i32 7 ; [#uses=1] + %76 = load %struct.Node** %75, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.Node* %76, i32 %73 ; [#uses=1] + %78 = getelementptr inbounds %struct.Node* %77, i32 0, i32 0 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 0, i32 1 ; [#uses=1] + %80 = load i32* %79, align 4 ; [#uses=1] + %81 = icmp eq i32 %80, 0 ; [#uses=1] + br i1 %81, label %122, label %82 + +; <label>:82 ; preds = %72 + %83 = load i32* %i, align 4 ; [#uses=1] + %84 = load %struct.Table** %3, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.Table* %84, i32 0, i32 7 ; [#uses=1] + %86 = load %struct.Node** %85, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Node* %86, i32 %83 ; [#uses=1] + %88 = getelementptr inbounds %struct.Node* %87, i32 0, i32 1 ; [#uses=1] + %89 = getelementptr inbounds %union.TKey* %88, i32 0, i32 0 ; [#uses=1] + %90 = bitcast %1* %89 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %90, %struct.lua_TValue** %o21, align 4 + %91 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %91, %struct.lua_TValue** %o12, align 4 + %92 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_TValue* %92, i32 0, i32 0 ; [#uses=1] + %94 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.lua_TValue* %94, i32 0, i32 0 ; [#uses=1] + %96 = bitcast %union.anon* %93 to i8* ; [#uses=1] + %97 = bitcast %union.anon* %95 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %96, i8* %97, i32 8, i32 4, i1 false) + %98 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_TValue* %98, i32 0, i32 1 ; [#uses=1] + %100 = load i32* %99, align 4 ; [#uses=1] + %101 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.lua_TValue* %101, i32 0, i32 1 ; [#uses=1] + store i32 %100, i32* %102, align 4 + %103 = load i32* %i, align 4 ; [#uses=1] + %104 = load %struct.Table** %3, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.Table* %104, i32 0, i32 7 ; [#uses=1] + %106 = load %struct.Node** %105, align 4 ; [#uses=1] + %107 = getelementptr inbounds %struct.Node* %106, i32 %103 ; [#uses=1] + %108 = getelementptr inbounds %struct.Node* %107, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %108, %struct.lua_TValue** %o23, align 4 + %109 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %110 = getelementptr inbounds %struct.lua_TValue* %109, i32 1 ; [#uses=1] + store %struct.lua_TValue* %110, %struct.lua_TValue** %o14, align 4 + %111 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %112 = getelementptr inbounds %struct.lua_TValue* %111, i32 0, i32 0 ; [#uses=1] + %113 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.lua_TValue* %113, i32 0, i32 0 ; [#uses=1] + %115 = bitcast %union.anon* %112 to i8* ; [#uses=1] + %116 = bitcast %union.anon* %114 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %115, i8* %116, i32 8, i32 4, i1 false) + %117 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %118 = getelementptr inbounds %struct.lua_TValue* %117, i32 0, i32 1 ; [#uses=1] + %119 = load i32* %118, align 4 ; [#uses=1] + %120 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_TValue* %120, i32 0, i32 1 ; [#uses=1] + store i32 %119, i32* %121, align 4 + store i32 1, i32* %1 + br label %127 + +; <label>:122 ; preds = %72 + br label %123 + +; <label>:123 ; preds = %122 + %124 = load i32* %i, align 4 ; [#uses=1] + %125 = add nsw i32 %124, 1 ; [#uses=1] + store i32 %125, i32* %i, align 4 + br label %64 + +; <label>:126 ; preds = %64 + store i32 0, i32* %1 + br label %127 + +; <label>:127 ; preds = %126, %82, %26 + %128 = load i32* %1 ; [#uses=1] + ret i32 %128 +} + +; [#uses=1] +define internal i32 @_Z9findindexP9lua_StateP5TableP10lua_TValue(%struct.lua_State* %L, %struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.Table*, align 4 ; [#uses=5] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %i = alloca i32, align 4 ; [#uses=6] + %n = alloca %struct.Node*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %4, align 4 + %5 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %10 + +; <label>:9 ; preds = %0 + store i32 -1, i32* %1 + br label %89 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %12 = call i32 @_Z10arrayindexPK10lua_TValue(%struct.lua_TValue* %11) ; [#uses=1] + store i32 %12, i32* %i, align 4 + %13 = load i32* %i, align 4 ; [#uses=1] + %14 = icmp slt i32 0, %13 ; [#uses=1] + br i1 %14, label %15, label %24 + +; <label>:15 ; preds = %10 + %16 = load i32* %i, align 4 ; [#uses=1] + %17 = load %struct.Table** %3, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Table* %17, i32 0, i32 10 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp sle i32 %16, %19 ; [#uses=1] + br i1 %20, label %21, label %24 + +; <label>:21 ; preds = %15 + %22 = load i32* %i, align 4 ; [#uses=1] + %23 = sub nsw i32 %22, 1 ; [#uses=1] + store i32 %23, i32* %1 + br label %89 + +; <label>:24 ; preds = %15, %10 + %25 = load %struct.Table** %3, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %27 = call %struct.Node* @_Z12mainpositionPK5TablePK10lua_TValue(%struct.Table* %25, %struct.lua_TValue* %26) ; [#uses=1] + store %struct.Node* %27, %struct.Node** %n, align 4 + br label %28 + +; <label>:28 ; preds = %84, %24 + %29 = load %struct.Node** %n, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Node* %29, i32 0, i32 1 ; [#uses=1] + %31 = getelementptr inbounds %union.TKey* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast %1* %31 to %struct.lua_TValue* ; [#uses=1] + %33 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %34 = call i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %32, %struct.lua_TValue* %33) ; [#uses=1] + %35 = icmp ne i32 %34, 0 ; [#uses=1] + br i1 %35, label %62, label %36 + +; <label>:36 ; preds = %28 + %37 = load %struct.Node** %n, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.Node* %37, i32 0, i32 1 ; [#uses=1] + %39 = getelementptr inbounds %union.TKey* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %1* %39, i32 0, i32 1 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = icmp eq i32 %41, 11 ; [#uses=1] + br i1 %42, label %43, label %77 + +; <label>:43 ; preds = %36 + %44 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 1 ; [#uses=1] + %46 = load i32* %45, align 4 ; [#uses=1] + %47 = icmp sge i32 %46, 4 ; [#uses=1] + br i1 %47, label %48, label %77 + +; <label>:48 ; preds = %43 + %49 = load %struct.Node** %n, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Node* %49, i32 0, i32 1 ; [#uses=1] + %51 = getelementptr inbounds %union.TKey* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %1* %51, i32 0, i32 0 ; [#uses=1] + %53 = getelementptr inbounds %union.anon* %52, i32 0, i32 0 ; [#uses=1] + %54 = bitcast double* %53 to %union.GCObject** ; [#uses=1] + %55 = load %union.GCObject** %54, align 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds %union.anon* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast double* %58 to %union.GCObject** ; [#uses=1] + %60 = load %union.GCObject** %59, align 4 ; [#uses=1] + %61 = icmp eq %union.GCObject* %55, %60 ; [#uses=1] + br i1 %61, label %62, label %77 + +; <label>:62 ; preds = %48, %28 + %63 = load %struct.Node** %n, align 4 ; [#uses=1] + %64 = load %struct.Table** %3, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.Table* %64, i32 0, i32 7 ; [#uses=1] + %66 = load %struct.Node** %65, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Node* %66, i32 0 ; [#uses=1] + %68 = ptrtoint %struct.Node* %63 to i32 ; [#uses=1] + %69 = ptrtoint %struct.Node* %67 to i32 ; [#uses=1] + %70 = sub i32 %68, %69 ; [#uses=1] + %71 = sdiv exact i32 %70, 28 ; [#uses=1] + store i32 %71, i32* %i, align 4 + %72 = load i32* %i, align 4 ; [#uses=1] + %73 = load %struct.Table** %3, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.Table* %73, i32 0, i32 10 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + %76 = add nsw i32 %72, %75 ; [#uses=1] + store i32 %76, i32* %1 + br label %89 + +; <label>:77 ; preds = %48, %43, %36 + %78 = load %struct.Node** %n, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.Node* %78, i32 0, i32 1 ; [#uses=1] + %80 = getelementptr inbounds %union.TKey* %79, i32 0, i32 0 ; [#uses=1] + %81 = getelementptr inbounds %1* %80, i32 0, i32 2 ; [#uses=1] + %82 = load %struct.Node** %81, align 4 ; [#uses=1] + store %struct.Node* %82, %struct.Node** %n, align 4 + br label %83 + +; <label>:83 ; preds = %77 + br label %84 + +; <label>:84 ; preds = %83 + %85 = load %struct.Node** %n, align 4 ; [#uses=1] + %86 = icmp ne %struct.Node* %85, null ; [#uses=1] + br i1 %86, label %28, label %87 + +; <label>:87 ; preds = %84 + %88 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %88, i8* getelementptr inbounds ([22 x i8]* @.str3167, i32 0, i32 0)) + store i32 0, i32* %1 + br label %89 + +; <label>:89 ; preds = %87, %62, %21, %9 + %90 = load i32* %1 ; [#uses=1] + ret i32 %90 +} + +; [#uses=1] +define hidden void @_Z16luaH_resizearrayP9lua_StateP5Tablei(%struct.lua_State* %L, %struct.Table* %t, i32 %nasize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=2] + %nsize = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %nasize, i32* %3, align 4 + %4 = load %struct.Table** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Table* %4, i32 0, i32 7 ; [#uses=1] + %6 = load %struct.Node** %5, align 4 ; [#uses=1] + %7 = icmp eq %struct.Node* %6, bitcast (%9* @_ZL10dummynode_ to %struct.Node*) ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + br label %15 + +; <label>:9 ; preds = %0 + %10 = load %struct.Table** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Table* %10, i32 0, i32 4 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = shl i32 1, %13 ; [#uses=1] + br label %15 + +; <label>:15 ; preds = %9, %8 + %16 = phi i32 [ 0, %8 ], [ %14, %9 ] ; [#uses=1] + store i32 %16, i32* %nsize, align 4 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = load %struct.Table** %2, align 4 ; [#uses=1] + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = load i32* %nsize, align 4 ; [#uses=1] + call void @_Z6resizeP9lua_StateP5Tableii(%struct.lua_State* %17, %struct.Table* %18, i32 %19, i32 %20) + ret void +} + +; [#uses=2] +define internal void @_Z6resizeP9lua_StateP5Tableii(%struct.lua_State* %L, %struct.Table* %t, i32 %nasize, i32 %nhsize) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca %struct.Table*, align 4 ; [#uses=13] + %3 = alloca i32, align 4 ; [#uses=8] + %4 = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=12] + %oldasize = alloca i32, align 4 ; [#uses=5] + %oldhsize = alloca i32, align 4 ; [#uses=3] + %nold = alloca %struct.Node*, align 4 ; [#uses=4] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %old = alloca %struct.Node*, align 4 ; [#uses=4] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %nasize, i32* %3, align 4 + store i32 %nhsize, i32* %4, align 4 + %5 = load %struct.Table** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.Table* %5, i32 0, i32 10 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + store i32 %7, i32* %oldasize, align 4 + %8 = load %struct.Table** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Table* %8, i32 0, i32 4 ; [#uses=1] + %10 = load i8* %9, align 1 ; [#uses=1] + %11 = zext i8 %10 to i32 ; [#uses=1] + store i32 %11, i32* %oldhsize, align 4 + %12 = load %struct.Table** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Table* %12, i32 0, i32 7 ; [#uses=1] + %14 = load %struct.Node** %13, align 4 ; [#uses=1] + store %struct.Node* %14, %struct.Node** %nold, align 4 + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = load i32* %oldasize, align 4 ; [#uses=1] + %17 = icmp sgt i32 %15, %16 ; [#uses=1] + br i1 %17, label %18, label %22 + +; <label>:18 ; preds = %0 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load %struct.Table** %2, align 4 ; [#uses=1] + %21 = load i32* %3, align 4 ; [#uses=1] + call void @_Z14setarrayvectorP9lua_StateP5Tablei(%struct.lua_State* %19, %struct.Table* %20, i32 %21) + br label %22 + +; <label>:22 ; preds = %18, %0 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load %struct.Table** %2, align 4 ; [#uses=1] + %25 = load i32* %4, align 4 ; [#uses=1] + call void @_Z13setnodevectorP9lua_StateP5Tablei(%struct.lua_State* %23, %struct.Table* %24, i32 %25) + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = load i32* %oldasize, align 4 ; [#uses=1] + %28 = icmp slt i32 %26, %27 ; [#uses=1] + br i1 %28, label %29, label %96 + +; <label>:29 ; preds = %22 + %30 = load i32* %3, align 4 ; [#uses=1] + %31 = load %struct.Table** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.Table* %31, i32 0, i32 10 ; [#uses=1] + store i32 %30, i32* %32, align 4 + %33 = load i32* %3, align 4 ; [#uses=1] + store i32 %33, i32* %i, align 4 + br label %34 + +; <label>:34 ; preds = %70, %29 + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = load i32* %oldasize, align 4 ; [#uses=1] + %37 = icmp slt i32 %35, %36 ; [#uses=1] + br i1 %37, label %38, label %73 + +; <label>:38 ; preds = %34 + %39 = load i32* %i, align 4 ; [#uses=1] + %40 = load %struct.Table** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Table* %40, i32 0, i32 6 ; [#uses=1] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 %39 ; [#uses=1] + %44 = getelementptr inbounds %struct.lua_TValue* %43, i32 0, i32 1 ; [#uses=1] + %45 = load i32* %44, align 4 ; [#uses=1] + %46 = icmp eq i32 %45, 0 ; [#uses=1] + br i1 %46, label %69, label %47 + +; <label>:47 ; preds = %38 + %48 = load i32* %i, align 4 ; [#uses=1] + %49 = load %struct.Table** %2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Table* %49, i32 0, i32 6 ; [#uses=1] + %51 = load %struct.lua_TValue** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 %48 ; [#uses=1] + store %struct.lua_TValue* %52, %struct.lua_TValue** %o2, align 4 + %53 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %54 = load %struct.Table** %2, align 4 ; [#uses=1] + %55 = load i32* %i, align 4 ; [#uses=1] + %56 = add nsw i32 %55, 1 ; [#uses=1] + %57 = call %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %53, %struct.Table* %54, i32 %56) ; [#uses=1] + store %struct.lua_TValue* %57, %struct.lua_TValue** %o1, align 4 + %58 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 0, i32 0 ; [#uses=1] + %60 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast %union.anon* %59 to i8* ; [#uses=1] + %63 = bitcast %union.anon* %61 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %62, i8* %63, i32 8, i32 4, i1 false) + %64 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_TValue* %64, i32 0, i32 1 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + %67 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_TValue* %67, i32 0, i32 1 ; [#uses=1] + store i32 %66, i32* %68, align 4 + br label %69 + +; <label>:69 ; preds = %47, %38 + br label %70 + +; <label>:70 ; preds = %69 + %71 = load i32* %i, align 4 ; [#uses=1] + %72 = add nsw i32 %71, 1 ; [#uses=1] + store i32 %72, i32* %i, align 4 + br label %34 + +; <label>:73 ; preds = %34 + %74 = load i32* %3, align 4 ; [#uses=1] + %75 = add nsw i32 %74, 1 ; [#uses=1] + %76 = icmp ule i32 %75, 357913941 ; [#uses=1] + br i1 %76, label %77, label %88 + +; <label>:77 ; preds = %73 + %78 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %79 = load %struct.Table** %2, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.Table* %79, i32 0, i32 6 ; [#uses=1] + %81 = load %struct.lua_TValue** %80, align 4 ; [#uses=1] + %82 = bitcast %struct.lua_TValue* %81 to i8* ; [#uses=1] + %83 = load i32* %oldasize, align 4 ; [#uses=1] + %84 = mul i32 %83, 12 ; [#uses=1] + %85 = load i32* %3, align 4 ; [#uses=1] + %86 = mul i32 %85, 12 ; [#uses=1] + %87 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %78, i8* %82, i32 %84, i32 %86) ; [#uses=1] + br label %91 + +; <label>:88 ; preds = %73 + %89 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %90 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %89) ; [#uses=1] + br label %91 + +; <label>:91 ; preds = %88, %77 + %92 = phi i8* [ %87, %77 ], [ %90, %88 ] ; [#uses=1] + %93 = bitcast i8* %92 to %struct.lua_TValue* ; [#uses=1] + %94 = load %struct.Table** %2, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.Table* %94, i32 0, i32 6 ; [#uses=1] + store %struct.lua_TValue* %93, %struct.lua_TValue** %95, align 4 + br label %96 + +; <label>:96 ; preds = %91, %22 + %97 = load i32* %oldhsize, align 4 ; [#uses=1] + %98 = shl i32 1, %97 ; [#uses=1] + %99 = sub nsw i32 %98, 1 ; [#uses=1] + store i32 %99, i32* %i, align 4 + br label %100 + +; <label>:100 ; preds = %134, %96 + %101 = load i32* %i, align 4 ; [#uses=1] + %102 = icmp sge i32 %101, 0 ; [#uses=1] + br i1 %102, label %103, label %137 + +; <label>:103 ; preds = %100 + %104 = load %struct.Node** %nold, align 4 ; [#uses=1] + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = getelementptr inbounds %struct.Node* %104, i32 %105 ; [#uses=1] + store %struct.Node* %106, %struct.Node** %old, align 4 + %107 = load %struct.Node** %old, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.Node* %107, i32 0, i32 0 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_TValue* %108, i32 0, i32 1 ; [#uses=1] + %110 = load i32* %109, align 4 ; [#uses=1] + %111 = icmp eq i32 %110, 0 ; [#uses=1] + br i1 %111, label %133, label %112 + +; <label>:112 ; preds = %103 + %113 = load %struct.Node** %old, align 4 ; [#uses=1] + %114 = getelementptr inbounds %struct.Node* %113, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %114, %struct.lua_TValue** %o21, align 4 + %115 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %116 = load %struct.Table** %2, align 4 ; [#uses=1] + %117 = load %struct.Node** %old, align 4 ; [#uses=1] + %118 = getelementptr inbounds %struct.Node* %117, i32 0, i32 1 ; [#uses=1] + %119 = getelementptr inbounds %union.TKey* %118, i32 0, i32 0 ; [#uses=1] + %120 = bitcast %1* %119 to %struct.lua_TValue* ; [#uses=1] + %121 = call %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %115, %struct.Table* %116, %struct.lua_TValue* %120) ; [#uses=1] + store %struct.lua_TValue* %121, %struct.lua_TValue** %o12, align 4 + %122 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_TValue* %122, i32 0, i32 0 ; [#uses=1] + %124 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %125 = getelementptr inbounds %struct.lua_TValue* %124, i32 0, i32 0 ; [#uses=1] + %126 = bitcast %union.anon* %123 to i8* ; [#uses=1] + %127 = bitcast %union.anon* %125 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %126, i8* %127, i32 8, i32 4, i1 false) + %128 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.lua_TValue* %128, i32 0, i32 1 ; [#uses=1] + %130 = load i32* %129, align 4 ; [#uses=1] + %131 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.lua_TValue* %131, i32 0, i32 1 ; [#uses=1] + store i32 %130, i32* %132, align 4 + br label %133 + +; <label>:133 ; preds = %112, %103 + br label %134 + +; <label>:134 ; preds = %133 + %135 = load i32* %i, align 4 ; [#uses=1] + %136 = add nsw i32 %135, -1 ; [#uses=1] + store i32 %136, i32* %i, align 4 + br label %100 + +; <label>:137 ; preds = %100 + %138 = load %struct.Node** %nold, align 4 ; [#uses=1] + %139 = icmp ne %struct.Node* %138, bitcast (%9* @_ZL10dummynode_ to %struct.Node*) ; [#uses=1] + br i1 %139, label %140, label %148 + +; <label>:140 ; preds = %137 + %141 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %142 = load %struct.Node** %nold, align 4 ; [#uses=1] + %143 = bitcast %struct.Node* %142 to i8* ; [#uses=1] + %144 = load i32* %oldhsize, align 4 ; [#uses=1] + %145 = shl i32 1, %144 ; [#uses=1] + %146 = mul i32 %145, 28 ; [#uses=1] + %147 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %141, i8* %143, i32 %146, i32 0) ; [#uses=0] + br label %148 + +; <label>:148 ; preds = %140, %137 + ret void +} + +; [#uses=7] +define hidden %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %L, i32 %narray, i32 %nhash) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %t = alloca %struct.Table*, align 4 ; [#uses=11] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narray, i32* %2, align 4 + store i32 %nhash, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %4, i8* null, i32 0, i32 32) ; [#uses=1] + %6 = bitcast i8* %5 to %struct.Table* ; [#uses=1] + store %struct.Table* %6, %struct.Table** %t, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.Table** %t, align 4 ; [#uses=1] + %9 = bitcast %struct.Table* %8 to %union.GCObject* ; [#uses=1] + call void @_Z9luaC_linkP9lua_StateP8GCObjecth(%struct.lua_State* %7, %union.GCObject* %9, i8 zeroext 5) + %10 = load %struct.Table** %t, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Table* %10, i32 0, i32 5 ; [#uses=1] + store %struct.Table* null, %struct.Table** %11, align 4 + %12 = load %struct.Table** %t, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Table* %12, i32 0, i32 3 ; [#uses=1] + store i8 -1, i8* %13, align 1 + %14 = load %struct.Table** %t, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Table* %14, i32 0, i32 6 ; [#uses=1] + store %struct.lua_TValue* null, %struct.lua_TValue** %15, align 4 + %16 = load %struct.Table** %t, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Table* %16, i32 0, i32 10 ; [#uses=1] + store i32 0, i32* %17, align 4 + %18 = load %struct.Table** %t, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.Table* %18, i32 0, i32 4 ; [#uses=1] + store i8 0, i8* %19, align 1 + %20 = load %struct.Table** %t, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Table* %20, i32 0, i32 7 ; [#uses=1] + store %struct.Node* bitcast (%9* @_ZL10dummynode_ to %struct.Node*), %struct.Node** %21, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = load %struct.Table** %t, align 4 ; [#uses=1] + %24 = load i32* %2, align 4 ; [#uses=1] + call void @_Z14setarrayvectorP9lua_StateP5Tablei(%struct.lua_State* %22, %struct.Table* %23, i32 %24) + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load %struct.Table** %t, align 4 ; [#uses=1] + %27 = load i32* %3, align 4 ; [#uses=1] + call void @_Z13setnodevectorP9lua_StateP5Tablei(%struct.lua_State* %25, %struct.Table* %26, i32 %27) + %28 = load %struct.Table** %t, align 4 ; [#uses=1] + ret %struct.Table* %28 +} + +; [#uses=2] +define internal void @_Z14setarrayvectorP9lua_StateP5Tablei(%struct.lua_State* %L, %struct.Table* %t, i32 %size) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %size, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = add nsw i32 %4, 1 ; [#uses=1] + %6 = icmp ule i32 %5, 357913941 ; [#uses=1] + br i1 %6, label %7, label %20 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load %struct.Table** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Table* %9, i32 0, i32 6 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = bitcast %struct.lua_TValue* %11 to i8* ; [#uses=1] + %13 = load %struct.Table** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Table* %13, i32 0, i32 10 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = mul i32 %15, 12 ; [#uses=1] + %17 = load i32* %3, align 4 ; [#uses=1] + %18 = mul i32 %17, 12 ; [#uses=1] + %19 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %8, i8* %12, i32 %16, i32 %18) ; [#uses=1] + br label %23 + +; <label>:20 ; preds = %0 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %21) ; [#uses=1] + br label %23 + +; <label>:23 ; preds = %20, %7 + %24 = phi i8* [ %19, %7 ], [ %22, %20 ] ; [#uses=1] + %25 = bitcast i8* %24 to %struct.lua_TValue* ; [#uses=1] + %26 = load %struct.Table** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Table* %26, i32 0, i32 6 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %27, align 4 + %28 = load %struct.Table** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Table* %28, i32 0, i32 10 ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + store i32 %30, i32* %i, align 4 + br label %31 + +; <label>:31 ; preds = %42, %23 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = load i32* %3, align 4 ; [#uses=1] + %34 = icmp slt i32 %32, %33 ; [#uses=1] + br i1 %34, label %35, label %45 + +; <label>:35 ; preds = %31 + %36 = load i32* %i, align 4 ; [#uses=1] + %37 = load %struct.Table** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.Table* %37, i32 0, i32 6 ; [#uses=1] + %39 = load %struct.lua_TValue** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 %36 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %41, align 4 + br label %42 + +; <label>:42 ; preds = %35 + %43 = load i32* %i, align 4 ; [#uses=1] + %44 = add nsw i32 %43, 1 ; [#uses=1] + store i32 %44, i32* %i, align 4 + br label %31 + +; <label>:45 ; preds = %31 + %46 = load i32* %3, align 4 ; [#uses=1] + %47 = load %struct.Table** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.Table* %47, i32 0, i32 10 ; [#uses=1] + store i32 %46, i32* %48, align 4 + ret void +} + +; [#uses=2] +define internal void @_Z13setnodevectorP9lua_StateP5Tablei(%struct.lua_State* %L, %struct.Table* %t, i32 %size) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca %struct.Table*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=8] + %lsize = alloca i32, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=5] + %n = alloca %struct.Node*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %size, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %9 + +; <label>:6 ; preds = %0 + %7 = load %struct.Table** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Table* %7, i32 0, i32 7 ; [#uses=1] + store %struct.Node* bitcast (%9* @_ZL10dummynode_ to %struct.Node*), %struct.Node** %8, align 4 + store i32 0, i32* %lsize, align 4 + br label %62 + +; <label>:9 ; preds = %0 + %10 = load i32* %3, align 4 ; [#uses=1] + %11 = sub nsw i32 %10, 1 ; [#uses=1] + %12 = call i32 @_Z9luaO_log2j(i32 %11) ; [#uses=1] + %13 = add nsw i32 %12, 1 ; [#uses=1] + store i32 %13, i32* %lsize, align 4 + %14 = load i32* %lsize, align 4 ; [#uses=1] + %15 = icmp sgt i32 %14, 26 ; [#uses=1] + br i1 %15, label %16, label %18 + +; <label>:16 ; preds = %9 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %17, i8* getelementptr inbounds ([15 x i8]* @.str2166, i32 0, i32 0)) + br label %18 + +; <label>:18 ; preds = %16, %9 + %19 = load i32* %lsize, align 4 ; [#uses=1] + %20 = shl i32 1, %19 ; [#uses=1] + store i32 %20, i32* %3, align 4 + %21 = load i32* %3, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + %23 = icmp ule i32 %22, 153391689 ; [#uses=1] + br i1 %23, label %24, label %29 + +; <label>:24 ; preds = %18 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = mul i32 %26, 28 ; [#uses=1] + %28 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %25, i8* null, i32 0, i32 %27) ; [#uses=1] + br label %32 + +; <label>:29 ; preds = %18 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %30) ; [#uses=1] + br label %32 + +; <label>:32 ; preds = %29, %24 + %33 = phi i8* [ %28, %24 ], [ %31, %29 ] ; [#uses=1] + %34 = bitcast i8* %33 to %struct.Node* ; [#uses=1] + %35 = load %struct.Table** %2, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Table* %35, i32 0, i32 7 ; [#uses=1] + store %struct.Node* %34, %struct.Node** %36, align 4 + store i32 0, i32* %i, align 4 + br label %37 + +; <label>:37 ; preds = %58, %32 + %38 = load i32* %i, align 4 ; [#uses=1] + %39 = load i32* %3, align 4 ; [#uses=1] + %40 = icmp slt i32 %38, %39 ; [#uses=1] + br i1 %40, label %41, label %61 + +; <label>:41 ; preds = %37 + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = load %struct.Table** %2, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.Table* %43, i32 0, i32 7 ; [#uses=1] + %45 = load %struct.Node** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Node* %45, i32 %42 ; [#uses=1] + store %struct.Node* %46, %struct.Node** %n, align 4 + %47 = load %struct.Node** %n, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.Node* %47, i32 0, i32 1 ; [#uses=1] + %49 = getelementptr inbounds %union.TKey* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %1* %49, i32 0, i32 2 ; [#uses=1] + store %struct.Node* null, %struct.Node** %50, align 4 + %51 = load %struct.Node** %n, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Node* %51, i32 0, i32 1 ; [#uses=1] + %53 = getelementptr inbounds %union.TKey* %52, i32 0, i32 0 ; [#uses=1] + %54 = getelementptr inbounds %1* %53, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %54, align 4 + %55 = load %struct.Node** %n, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Node* %55, i32 0, i32 0 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %57, align 4 + br label %58 + +; <label>:58 ; preds = %41 + %59 = load i32* %i, align 4 ; [#uses=1] + %60 = add nsw i32 %59, 1 ; [#uses=1] + store i32 %60, i32* %i, align 4 + br label %37 + +; <label>:61 ; preds = %37 + br label %62 + +; <label>:62 ; preds = %61, %6 + %63 = load i32* %lsize, align 4 ; [#uses=1] + %64 = trunc i32 %63 to i8 ; [#uses=1] + %65 = load %struct.Table** %2, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.Table* %65, i32 0, i32 4 ; [#uses=1] + store i8 %64, i8* %66, align 1 + %67 = load i32* %3, align 4 ; [#uses=1] + %68 = load %struct.Table** %2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.Table* %68, i32 0, i32 7 ; [#uses=1] + %70 = load %struct.Node** %69, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.Node* %70, i32 %67 ; [#uses=1] + %72 = load %struct.Table** %2, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Table* %72, i32 0, i32 8 ; [#uses=1] + store %struct.Node* %71, %struct.Node** %73, align 4 + ret void +} + +; [#uses=1] +define hidden void @_Z9luaH_freeP9lua_StateP5Table(%struct.lua_State* %L, %struct.Table* %t) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca %struct.Table*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + %3 = load %struct.Table** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Table* %3, i32 0, i32 7 ; [#uses=1] + %5 = load %struct.Node** %4, align 4 ; [#uses=1] + %6 = icmp ne %struct.Node* %5, bitcast (%9* @_ZL10dummynode_ to %struct.Node*) ; [#uses=1] + br i1 %6, label %7, label %20 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load %struct.Table** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Table* %9, i32 0, i32 7 ; [#uses=1] + %11 = load %struct.Node** %10, align 4 ; [#uses=1] + %12 = bitcast %struct.Node* %11 to i8* ; [#uses=1] + %13 = load %struct.Table** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Table* %13, i32 0, i32 4 ; [#uses=1] + %15 = load i8* %14, align 1 ; [#uses=1] + %16 = zext i8 %15 to i32 ; [#uses=1] + %17 = shl i32 1, %16 ; [#uses=1] + %18 = mul i32 %17, 28 ; [#uses=1] + %19 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %8, i8* %12, i32 %18, i32 0) ; [#uses=0] + br label %20 + +; <label>:20 ; preds = %7, %0 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load %struct.Table** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Table* %22, i32 0, i32 6 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = bitcast %struct.lua_TValue* %24 to i8* ; [#uses=1] + %26 = load %struct.Table** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Table* %26, i32 0, i32 10 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = mul i32 %28, 12 ; [#uses=1] + %30 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %21, i8* %25, i32 %29, i32 0) ; [#uses=0] + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = load %struct.Table** %2, align 4 ; [#uses=1] + %33 = bitcast %struct.Table* %32 to i8* ; [#uses=1] + %34 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %31, i8* %33, i32 32, i32 0) ; [#uses=0] + ret void +} + +; [#uses=6] +define hidden %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %t, i32 %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=4] + %nk = alloca double, align 8 ; [#uses=3] + %n = alloca %struct.Node*, align 4 ; [#uses=7] + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %key, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = sub nsw i32 %4, 1 ; [#uses=1] + %6 = load %struct.Table** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Table* %6, i32 0, i32 10 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp ult i32 %5, %8 ; [#uses=1] + br i1 %9, label %10, label %17 + +; <label>:10 ; preds = %0 + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = sub nsw i32 %11, 1 ; [#uses=1] + %13 = load %struct.Table** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Table* %13, i32 0, i32 6 ; [#uses=1] + %15 = load %struct.lua_TValue** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 %12 ; [#uses=1] + store %struct.lua_TValue* %16, %struct.lua_TValue** %1 + br label %53 + +; <label>:17 ; preds = %0 + %18 = load i32* %3, align 4 ; [#uses=1] + %19 = sitofp i32 %18 to double ; [#uses=1] + store double %19, double* %nk, align 8 + %20 = load %struct.Table** %2, align 4 ; [#uses=1] + %21 = load double* %nk, align 8 ; [#uses=1] + %22 = call %struct.Node* @_Z7hashnumPK5Tabled(%struct.Table* %20, double %21) ; [#uses=1] + store %struct.Node* %22, %struct.Node** %n, align 4 + br label %23 + +; <label>:23 ; preds = %49, %17 + %24 = load %struct.Node** %n, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.Node* %24, i32 0, i32 1 ; [#uses=1] + %26 = getelementptr inbounds %union.TKey* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %1* %26, i32 0, i32 1 ; [#uses=1] + %28 = load i32* %27, align 4 ; [#uses=1] + %29 = icmp eq i32 %28, 3 ; [#uses=1] + br i1 %29, label %30, label %42 + +; <label>:30 ; preds = %23 + %31 = load %struct.Node** %n, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.Node* %31, i32 0, i32 1 ; [#uses=1] + %33 = getelementptr inbounds %union.TKey* %32, i32 0, i32 0 ; [#uses=1] + %34 = getelementptr inbounds %1* %33, i32 0, i32 0 ; [#uses=1] + %35 = getelementptr inbounds %union.anon* %34, i32 0, i32 0 ; [#uses=1] + %36 = load double* %35, align 4 ; [#uses=1] + %37 = load double* %nk, align 8 ; [#uses=1] + %38 = fcmp oeq double %36, %37 ; [#uses=1] + br i1 %38, label %39, label %42 + +; <label>:39 ; preds = %30 + %40 = load %struct.Node** %n, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Node* %40, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %41, %struct.lua_TValue** %1 + br label %53 + +; <label>:42 ; preds = %30, %23 + %43 = load %struct.Node** %n, align 4 ; [#uses=1] + %44 = getelementptr inbounds %struct.Node* %43, i32 0, i32 1 ; [#uses=1] + %45 = getelementptr inbounds %union.TKey* %44, i32 0, i32 0 ; [#uses=1] + %46 = getelementptr inbounds %1* %45, i32 0, i32 2 ; [#uses=1] + %47 = load %struct.Node** %46, align 4 ; [#uses=1] + store %struct.Node* %47, %struct.Node** %n, align 4 + br label %48 + +; <label>:48 ; preds = %42 + br label %49 + +; <label>:49 ; preds = %48 + %50 = load %struct.Node** %n, align 4 ; [#uses=1] + %51 = icmp ne %struct.Node* %50, null ; [#uses=1] + br i1 %51, label %23, label %52 + +; <label>:52 ; preds = %49 + store %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue** %1 + br label %53 + +; <label>:53 ; preds = %52, %39, %10 + %54 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %54 +} + +; [#uses=2] +define internal %struct.Node* @_Z7hashnumPK5Tabled(%struct.Table* %t, double %n) nounwind { + %1 = alloca %struct.Node*, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca double, align 4 ; [#uses=3] + %a = alloca [2 x i32], align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.Table* %t, %struct.Table** %2, align 4 + store double %n, double* %3, align 8 + %4 = load double* %3, align 8 ; [#uses=1] + %5 = fcmp oeq double %4, 0.000000e+00 ; [#uses=1] + br i1 %5, label %6, label %11 + +; <label>:6 ; preds = %0 + %7 = load %struct.Table** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.Table* %7, i32 0, i32 7 ; [#uses=1] + %9 = load %struct.Node** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Node* %9, i32 0 ; [#uses=1] + store %struct.Node* %10, %struct.Node** %1 + br label %43 + +; <label>:11 ; preds = %0 + %12 = getelementptr inbounds [2 x i32]* %a, i32 0, i32 0 ; [#uses=1] + %13 = bitcast i32* %12 to i8* ; [#uses=1] + %14 = bitcast double* %3 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %13, i8* %14, i32 8, i32 1, i1 false) + store i32 1, i32* %i, align 4 + br label %15 + +; <label>:15 ; preds = %25, %11 + %16 = load i32* %i, align 4 ; [#uses=1] + %17 = icmp slt i32 %16, 2 ; [#uses=1] + br i1 %17, label %18, label %28 + +; <label>:18 ; preds = %15 + %19 = load i32* %i, align 4 ; [#uses=1] + %20 = getelementptr inbounds [2 x i32]* %a, i32 0, i32 %19 ; [#uses=1] + %21 = load i32* %20 ; [#uses=1] + %22 = getelementptr inbounds [2 x i32]* %a, i32 0, i32 0 ; [#uses=2] + %23 = load i32* %22 ; [#uses=1] + %24 = add i32 %23, %21 ; [#uses=1] + store i32 %24, i32* %22 + br label %25 + +; <label>:25 ; preds = %18 + %26 = load i32* %i, align 4 ; [#uses=1] + %27 = add nsw i32 %26, 1 ; [#uses=1] + store i32 %27, i32* %i, align 4 + br label %15 + +; <label>:28 ; preds = %15 + %29 = getelementptr inbounds [2 x i32]* %a, i32 0, i32 0 ; [#uses=1] + %30 = load i32* %29 ; [#uses=1] + %31 = load %struct.Table** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.Table* %31, i32 0, i32 4 ; [#uses=1] + %33 = load i8* %32, align 1 ; [#uses=1] + %34 = zext i8 %33 to i32 ; [#uses=1] + %35 = shl i32 1, %34 ; [#uses=1] + %36 = sub nsw i32 %35, 1 ; [#uses=1] + %37 = or i32 %36, 1 ; [#uses=1] + %38 = urem i32 %30, %37 ; [#uses=1] + %39 = load %struct.Table** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Table* %39, i32 0, i32 7 ; [#uses=1] + %41 = load %struct.Node** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.Node* %41, i32 %38 ; [#uses=1] + store %struct.Node* %42, %struct.Node** %1 + br label %43 + +; <label>:43 ; preds = %28, %6 + %44 = load %struct.Node** %1 ; [#uses=1] + ret %struct.Node* %44 +} + +; [#uses=4] +define hidden %struct.lua_TValue* @_Z11luaH_getstrP5TableP7TString(%struct.Table* %t, %union.TString* %key) nounwind { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=3] + %3 = alloca %union.TString*, align 4 ; [#uses=3] + %n = alloca %struct.Node*, align 4 ; [#uses=7] + store %struct.Table* %t, %struct.Table** %2, align 4 + store %union.TString* %key, %union.TString** %3, align 4 + %4 = load %union.TString** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %union.TString* %4, i32 0, i32 0 ; [#uses=1] + %6 = getelementptr inbounds %struct.anon* %5, i32 0, i32 4 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load %struct.Table** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Table* %8, i32 0, i32 4 ; [#uses=1] + %10 = load i8* %9, align 1 ; [#uses=1] + %11 = zext i8 %10 to i32 ; [#uses=1] + %12 = shl i32 1, %11 ; [#uses=1] + %13 = sub nsw i32 %12, 1 ; [#uses=1] + %14 = and i32 %7, %13 ; [#uses=1] + %15 = load %struct.Table** %2, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Table* %15, i32 0, i32 7 ; [#uses=1] + %17 = load %struct.Node** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Node* %17, i32 %14 ; [#uses=1] + store %struct.Node* %18, %struct.Node** %n, align 4 + br label %19 + +; <label>:19 ; preds = %48, %0 + %20 = load %struct.Node** %n, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.Node* %20, i32 0, i32 1 ; [#uses=1] + %22 = getelementptr inbounds %union.TKey* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %1* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = icmp eq i32 %24, 4 ; [#uses=1] + br i1 %25, label %26, label %41 + +; <label>:26 ; preds = %19 + %27 = load %struct.Node** %n, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.Node* %27, i32 0, i32 1 ; [#uses=1] + %29 = getelementptr inbounds %union.TKey* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %1* %29, i32 0, i32 0 ; [#uses=1] + %31 = getelementptr inbounds %union.anon* %30, i32 0, i32 0 ; [#uses=1] + %32 = bitcast double* %31 to %union.GCObject** ; [#uses=1] + %33 = load %union.GCObject** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %union.GCObject* %33, i32 0, i32 0 ; [#uses=1] + %35 = bitcast %struct.lua_State* %34 to %union.TString* ; [#uses=1] + %36 = load %union.TString** %3, align 4 ; [#uses=1] + %37 = icmp eq %union.TString* %35, %36 ; [#uses=1] + br i1 %37, label %38, label %41 + +; <label>:38 ; preds = %26 + %39 = load %struct.Node** %n, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Node* %39, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %40, %struct.lua_TValue** %1 + br label %52 + +; <label>:41 ; preds = %26, %19 + %42 = load %struct.Node** %n, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Node* %42, i32 0, i32 1 ; [#uses=1] + %44 = getelementptr inbounds %union.TKey* %43, i32 0, i32 0 ; [#uses=1] + %45 = getelementptr inbounds %1* %44, i32 0, i32 2 ; [#uses=1] + %46 = load %struct.Node** %45, align 4 ; [#uses=1] + store %struct.Node* %46, %struct.Node** %n, align 4 + br label %47 + +; <label>:47 ; preds = %41 + br label %48 + +; <label>:48 ; preds = %47 + %49 = load %struct.Node** %n, align 4 ; [#uses=1] + %50 = icmp ne %struct.Node* %49, null ; [#uses=1] + br i1 %50, label %19, label %51 + +; <label>:51 ; preds = %48 + store %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue** %1 + br label %52 + +; <label>:52 ; preds = %51, %38 + %53 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %53 +} + +; [#uses=3] +define hidden %struct.lua_TValue* @_Z8luaH_getP5TablePK10lua_TValue(%struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %k = alloca i32, align 4 ; [#uses=3] + %n = alloca double, align 8 ; [#uses=2] + %n1 = alloca %struct.Node*, align 4 ; [#uses=6] + store %struct.Table* %t, %struct.Table** %2, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %37 [ + i32 0, label %7 + i32 4, label %8 + i32 3, label %18 + ] + +; <label>:7 ; preds = %0 + store %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue** %1 + br label %63 + +; <label>:8 ; preds = %0 + %9 = load %struct.Table** %2, align 4 ; [#uses=1] + %10 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = bitcast double* %12 to %union.GCObject** ; [#uses=1] + %14 = load %union.GCObject** %13, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.GCObject* %14, i32 0, i32 0 ; [#uses=1] + %16 = bitcast %struct.lua_State* %15 to %union.TString* ; [#uses=1] + %17 = call %struct.lua_TValue* @_Z11luaH_getstrP5TableP7TString(%struct.Table* %9, %union.TString* %16) ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %1 + br label %63 + +; <label>:18 ; preds = %0 + %19 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %union.anon* %20, i32 0, i32 0 ; [#uses=1] + %22 = load double* %21, align 4 ; [#uses=1] + store double %22, double* %n, align 8 + %23 = load double* %n, align 8 ; [#uses=1] + %24 = fptosi double %23 to i32 ; [#uses=1] + store i32 %24, i32* %k, align 4 + %25 = load i32* %k, align 4 ; [#uses=1] + %26 = sitofp i32 %25 to double ; [#uses=1] + %27 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = load double* %29, align 4 ; [#uses=1] + %31 = fcmp oeq double %26, %30 ; [#uses=1] + br i1 %31, label %32, label %36 + +; <label>:32 ; preds = %18 + %33 = load %struct.Table** %2, align 4 ; [#uses=1] + %34 = load i32* %k, align 4 ; [#uses=1] + %35 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %33, i32 %34) ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %1 + br label %63 + +; <label>:36 ; preds = %18 + br label %37 + +; <label>:37 ; preds = %36, %0 + %38 = load %struct.Table** %2, align 4 ; [#uses=1] + %39 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %40 = call %struct.Node* @_Z12mainpositionPK5TablePK10lua_TValue(%struct.Table* %38, %struct.lua_TValue* %39) ; [#uses=1] + store %struct.Node* %40, %struct.Node** %n1, align 4 + br label %41 + +; <label>:41 ; preds = %59, %37 + %42 = load %struct.Node** %n1, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Node* %42, i32 0, i32 1 ; [#uses=1] + %44 = getelementptr inbounds %union.TKey* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast %1* %44 to %struct.lua_TValue* ; [#uses=1] + %46 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %47 = call i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %45, %struct.lua_TValue* %46) ; [#uses=1] + %48 = icmp ne i32 %47, 0 ; [#uses=1] + br i1 %48, label %49, label %52 + +; <label>:49 ; preds = %41 + %50 = load %struct.Node** %n1, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Node* %50, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %51, %struct.lua_TValue** %1 + br label %63 + +; <label>:52 ; preds = %41 + %53 = load %struct.Node** %n1, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.Node* %53, i32 0, i32 1 ; [#uses=1] + %55 = getelementptr inbounds %union.TKey* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %1* %55, i32 0, i32 2 ; [#uses=1] + %57 = load %struct.Node** %56, align 4 ; [#uses=1] + store %struct.Node* %57, %struct.Node** %n1, align 4 + br label %58 + +; <label>:58 ; preds = %52 + br label %59 + +; <label>:59 ; preds = %58 + %60 = load %struct.Node** %n1, align 4 ; [#uses=1] + %61 = icmp ne %struct.Node* %60, null ; [#uses=1] + br i1 %61, label %41, label %62 + +; <label>:62 ; preds = %59 + store %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue** %1 + br label %63 + +; <label>:63 ; preds = %62, %49, %32, %8, %7 + %64 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %64 +} + +; [#uses=4] +define internal %struct.Node* @_Z12mainpositionPK5TablePK10lua_TValue(%struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca %struct.Node*, align 4 ; [#uses=6] + %2 = alloca %struct.Table*, align 4 ; [#uses=10] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + store %struct.Table* %t, %struct.Table** %2, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %72 [ + i32 3, label %7 + i32 4, label %14 + i32 1, label %36 + i32 2, label %53 + ] + +; <label>:7 ; preds = %0 + %8 = load %struct.Table** %2, align 4 ; [#uses=1] + %9 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 0 ; [#uses=1] + %11 = getelementptr inbounds %union.anon* %10, i32 0, i32 0 ; [#uses=1] + %12 = load double* %11, align 4 ; [#uses=1] + %13 = call %struct.Node* @_Z7hashnumPK5Tabled(%struct.Table* %8, double %12) ; [#uses=1] + store %struct.Node* %13, %struct.Node** %1 + br label %91 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + %19 = load %union.GCObject** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds %union.GCObject* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast %struct.lua_State* %20 to %union.TString* ; [#uses=1] + %22 = getelementptr inbounds %union.TString* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %struct.anon* %22, i32 0, i32 4 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = load %struct.Table** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Table* %25, i32 0, i32 4 ; [#uses=1] + %27 = load i8* %26, align 1 ; [#uses=1] + %28 = zext i8 %27 to i32 ; [#uses=1] + %29 = shl i32 1, %28 ; [#uses=1] + %30 = sub nsw i32 %29, 1 ; [#uses=1] + %31 = and i32 %24, %30 ; [#uses=1] + %32 = load %struct.Table** %2, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.Table* %32, i32 0, i32 7 ; [#uses=1] + %34 = load %struct.Node** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Node* %34, i32 %31 ; [#uses=1] + store %struct.Node* %35, %struct.Node** %1 + br label %91 + +; <label>:36 ; preds = %0 + %37 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 0 ; [#uses=1] + %39 = getelementptr inbounds %union.anon* %38, i32 0, i32 0 ; [#uses=1] + %40 = bitcast double* %39 to i32* ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = load %struct.Table** %2, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.Table* %42, i32 0, i32 4 ; [#uses=1] + %44 = load i8* %43, align 1 ; [#uses=1] + %45 = zext i8 %44 to i32 ; [#uses=1] + %46 = shl i32 1, %45 ; [#uses=1] + %47 = sub nsw i32 %46, 1 ; [#uses=1] + %48 = and i32 %41, %47 ; [#uses=1] + %49 = load %struct.Table** %2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Table* %49, i32 0, i32 7 ; [#uses=1] + %51 = load %struct.Node** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.Node* %51, i32 %48 ; [#uses=1] + store %struct.Node* %52, %struct.Node** %1 + br label %91 + +; <label>:53 ; preds = %0 + %54 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_TValue* %54, i32 0, i32 0 ; [#uses=1] + %56 = getelementptr inbounds %union.anon* %55, i32 0, i32 0 ; [#uses=1] + %57 = bitcast double* %56 to i8** ; [#uses=1] + %58 = load i8** %57, align 4 ; [#uses=1] + %59 = ptrtoint i8* %58 to i32 ; [#uses=1] + %60 = load %struct.Table** %2, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.Table* %60, i32 0, i32 4 ; [#uses=1] + %62 = load i8* %61, align 1 ; [#uses=1] + %63 = zext i8 %62 to i32 ; [#uses=1] + %64 = shl i32 1, %63 ; [#uses=1] + %65 = sub nsw i32 %64, 1 ; [#uses=1] + %66 = or i32 %65, 1 ; [#uses=1] + %67 = urem i32 %59, %66 ; [#uses=1] + %68 = load %struct.Table** %2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.Table* %68, i32 0, i32 7 ; [#uses=1] + %70 = load %struct.Node** %69, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.Node* %70, i32 %67 ; [#uses=1] + store %struct.Node* %71, %struct.Node** %1 + br label %91 + +; <label>:72 ; preds = %0 + %73 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %union.anon* %74, i32 0, i32 0 ; [#uses=1] + %76 = bitcast double* %75 to %union.GCObject** ; [#uses=1] + %77 = load %union.GCObject** %76, align 4 ; [#uses=1] + %78 = ptrtoint %union.GCObject* %77 to i32 ; [#uses=1] + %79 = load %struct.Table** %2, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.Table* %79, i32 0, i32 4 ; [#uses=1] + %81 = load i8* %80, align 1 ; [#uses=1] + %82 = zext i8 %81 to i32 ; [#uses=1] + %83 = shl i32 1, %82 ; [#uses=1] + %84 = sub nsw i32 %83, 1 ; [#uses=1] + %85 = or i32 %84, 1 ; [#uses=1] + %86 = urem i32 %78, %85 ; [#uses=1] + %87 = load %struct.Table** %2, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.Table* %87, i32 0, i32 7 ; [#uses=1] + %89 = load %struct.Node** %88, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.Node* %89, i32 %86 ; [#uses=1] + store %struct.Node* %90, %struct.Node** %1 + br label %91 + +; <label>:91 ; preds = %72, %53, %36, %14, %7 + %92 = load %struct.Node** %1 ; [#uses=1] + ret %struct.Node* %92 +} + +; [#uses=5] +define hidden %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %L, %struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.Table*, align 4 ; [#uses=4] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %4, align 4 + %5 = load %struct.Table** %3, align 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z8luaH_getP5TablePK10lua_TValue(%struct.Table* %5, %struct.lua_TValue* %6) ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %p, align 4 + %8 = load %struct.Table** %3, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Table* %8, i32 0, i32 3 ; [#uses=1] + store i8 0, i8* %9, align 1 + %10 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %11 = icmp ne %struct.lua_TValue* %10, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %13, %struct.lua_TValue** %1 + br label %44 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 1 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %14 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %20, i8* getelementptr inbounds ([19 x i8]* @.str164, i32 0, i32 0)) + br label %39 + +; <label>:21 ; preds = %14 + %22 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_TValue* %22, i32 0, i32 1 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = icmp eq i32 %24, 3 ; [#uses=1] + br i1 %25, label %26, label %38 + +; <label>:26 ; preds = %21 + %27 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = load double* %29, align 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 0 ; [#uses=1] + %33 = getelementptr inbounds %union.anon* %32, i32 0, i32 0 ; [#uses=1] + %34 = load double* %33, align 4 ; [#uses=1] + %35 = fcmp oeq double %30, %34 ; [#uses=1] + br i1 %35, label %38, label %36 + +; <label>:36 ; preds = %26 + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %37, i8* getelementptr inbounds ([19 x i8]* @.str1165, i32 0, i32 0)) + br label %38 + +; <label>:38 ; preds = %36, %26, %21 + br label %39 + +; <label>:39 ; preds = %38, %19 + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = load %struct.Table** %3, align 4 ; [#uses=1] + %42 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %43 = call %struct.lua_TValue* @_Z6newkeyP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %40, %struct.Table* %41, %struct.lua_TValue* %42) ; [#uses=1] + store %struct.lua_TValue* %43, %struct.lua_TValue** %1 + br label %44 + +; <label>:44 ; preds = %39, %12 + %45 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %45 +} + +; [#uses=3] +define internal %struct.lua_TValue* @_Z6newkeyP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %L, %struct.Table* %t, %struct.lua_TValue* %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.Table*, align 4 ; [#uses=8] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=8] + %mp = alloca %struct.Node*, align 4 ; [#uses=15] + %othern = alloca %struct.Node*, align 4 ; [#uses=6] + %n = alloca %struct.Node*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %4, align 4 + %5 = load %struct.Table** %3, align 4 ; [#uses=1] + %6 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %7 = call %struct.Node* @_Z12mainpositionPK5TablePK10lua_TValue(%struct.Table* %5, %struct.lua_TValue* %6) ; [#uses=1] + store %struct.Node* %7, %struct.Node** %mp, align 4 + %8 = load %struct.Node** %mp, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Node* %8, i32 0, i32 0 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %16 + +; <label>:13 ; preds = %0 + %14 = load %struct.Node** %mp, align 4 ; [#uses=1] + %15 = icmp eq %struct.Node* %14, bitcast (%9* @_ZL10dummynode_ to %struct.Node*) ; [#uses=1] + br i1 %15, label %16, label %88 + +; <label>:16 ; preds = %13, %0 + %17 = load %struct.Table** %3, align 4 ; [#uses=1] + %18 = call %struct.Node* @_Z10getfreeposP5Table(%struct.Table* %17) ; [#uses=1] + store %struct.Node* %18, %struct.Node** %n, align 4 + %19 = load %struct.Node** %n, align 4 ; [#uses=1] + %20 = icmp eq %struct.Node* %19, null ; [#uses=1] + br i1 %20, label %21, label %29 + +; <label>:21 ; preds = %16 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load %struct.Table** %3, align 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z6rehashP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %22, %struct.Table* %23, %struct.lua_TValue* %24) + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = load %struct.Table** %3, align 4 ; [#uses=1] + %27 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %28 = call %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %25, %struct.Table* %26, %struct.lua_TValue* %27) ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %1 + br label %137 + +; <label>:29 ; preds = %16 + %30 = load %struct.Table** %3, align 4 ; [#uses=1] + %31 = load %struct.Node** %mp, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.Node* %31, i32 0, i32 1 ; [#uses=1] + %33 = getelementptr inbounds %union.TKey* %32, i32 0, i32 0 ; [#uses=1] + %34 = bitcast %1* %33 to %struct.lua_TValue* ; [#uses=1] + %35 = call %struct.Node* @_Z12mainpositionPK5TablePK10lua_TValue(%struct.Table* %30, %struct.lua_TValue* %34) ; [#uses=1] + store %struct.Node* %35, %struct.Node** %othern, align 4 + %36 = load %struct.Node** %othern, align 4 ; [#uses=1] + %37 = load %struct.Node** %mp, align 4 ; [#uses=1] + %38 = icmp ne %struct.Node* %36, %37 ; [#uses=1] + br i1 %38, label %39, label %71 + +; <label>:39 ; preds = %29 + br label %40 + +; <label>:40 ; preds = %48, %39 + %41 = load %struct.Node** %othern, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.Node* %41, i32 0, i32 1 ; [#uses=1] + %43 = getelementptr inbounds %union.TKey* %42, i32 0, i32 0 ; [#uses=1] + %44 = getelementptr inbounds %1* %43, i32 0, i32 2 ; [#uses=1] + %45 = load %struct.Node** %44, align 4 ; [#uses=1] + %46 = load %struct.Node** %mp, align 4 ; [#uses=1] + %47 = icmp ne %struct.Node* %45, %46 ; [#uses=1] + br i1 %47, label %48, label %54 + +; <label>:48 ; preds = %40 + %49 = load %struct.Node** %othern, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Node* %49, i32 0, i32 1 ; [#uses=1] + %51 = getelementptr inbounds %union.TKey* %50, i32 0, i32 0 ; [#uses=1] + %52 = getelementptr inbounds %1* %51, i32 0, i32 2 ; [#uses=1] + %53 = load %struct.Node** %52, align 4 ; [#uses=1] + store %struct.Node* %53, %struct.Node** %othern, align 4 + br label %40 + +; <label>:54 ; preds = %40 + %55 = load %struct.Node** %n, align 4 ; [#uses=1] + %56 = load %struct.Node** %othern, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.Node* %56, i32 0, i32 1 ; [#uses=1] + %58 = getelementptr inbounds %union.TKey* %57, i32 0, i32 0 ; [#uses=1] + %59 = getelementptr inbounds %1* %58, i32 0, i32 2 ; [#uses=1] + store %struct.Node* %55, %struct.Node** %59, align 4 + %60 = load %struct.Node** %n, align 4 ; [#uses=1] + %61 = load %struct.Node** %mp, align 4 ; [#uses=1] + %62 = bitcast %struct.Node* %60 to i8* ; [#uses=1] + %63 = bitcast %struct.Node* %61 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %62, i8* %63, i32 28, i32 4, i1 false) + %64 = load %struct.Node** %mp, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.Node* %64, i32 0, i32 1 ; [#uses=1] + %66 = getelementptr inbounds %union.TKey* %65, i32 0, i32 0 ; [#uses=1] + %67 = getelementptr inbounds %1* %66, i32 0, i32 2 ; [#uses=1] + store %struct.Node* null, %struct.Node** %67, align 4 + %68 = load %struct.Node** %mp, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.Node* %68, i32 0, i32 0 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %70, align 4 + br label %87 + +; <label>:71 ; preds = %29 + %72 = load %struct.Node** %mp, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.Node* %72, i32 0, i32 1 ; [#uses=1] + %74 = getelementptr inbounds %union.TKey* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %1* %74, i32 0, i32 2 ; [#uses=1] + %76 = load %struct.Node** %75, align 4 ; [#uses=1] + %77 = load %struct.Node** %n, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.Node* %77, i32 0, i32 1 ; [#uses=1] + %79 = getelementptr inbounds %union.TKey* %78, i32 0, i32 0 ; [#uses=1] + %80 = getelementptr inbounds %1* %79, i32 0, i32 2 ; [#uses=1] + store %struct.Node* %76, %struct.Node** %80, align 4 + %81 = load %struct.Node** %n, align 4 ; [#uses=1] + %82 = load %struct.Node** %mp, align 4 ; [#uses=1] + %83 = getelementptr inbounds %struct.Node* %82, i32 0, i32 1 ; [#uses=1] + %84 = getelementptr inbounds %union.TKey* %83, i32 0, i32 0 ; [#uses=1] + %85 = getelementptr inbounds %1* %84, i32 0, i32 2 ; [#uses=1] + store %struct.Node* %81, %struct.Node** %85, align 4 + %86 = load %struct.Node** %n, align 4 ; [#uses=1] + store %struct.Node* %86, %struct.Node** %mp, align 4 + br label %87 + +; <label>:87 ; preds = %71, %54 + br label %88 + +; <label>:88 ; preds = %87, %13 + %89 = load %struct.Node** %mp, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.Node* %89, i32 0, i32 1 ; [#uses=1] + %91 = getelementptr inbounds %union.TKey* %90, i32 0, i32 0 ; [#uses=1] + %92 = getelementptr inbounds %1* %91, i32 0, i32 0 ; [#uses=1] + %93 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.lua_TValue* %93, i32 0, i32 0 ; [#uses=1] + %95 = bitcast %union.anon* %92 to i8* ; [#uses=1] + %96 = bitcast %union.anon* %94 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %95, i8* %96, i32 8, i32 4, i1 false) + %97 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.lua_TValue* %97, i32 0, i32 1 ; [#uses=1] + %99 = load i32* %98, align 4 ; [#uses=1] + %100 = load %struct.Node** %mp, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.Node* %100, i32 0, i32 1 ; [#uses=1] + %102 = getelementptr inbounds %union.TKey* %101, i32 0, i32 0 ; [#uses=1] + %103 = getelementptr inbounds %1* %102, i32 0, i32 1 ; [#uses=1] + store i32 %99, i32* %103, align 4 + %104 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_TValue* %104, i32 0, i32 1 ; [#uses=1] + %106 = load i32* %105, align 4 ; [#uses=1] + %107 = icmp sge i32 %106, 4 ; [#uses=1] + br i1 %107, label %108, label %134 + +; <label>:108 ; preds = %88 + %109 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %110 = getelementptr inbounds %struct.lua_TValue* %109, i32 0, i32 0 ; [#uses=1] + %111 = getelementptr inbounds %union.anon* %110, i32 0, i32 0 ; [#uses=1] + %112 = bitcast double* %111 to %union.GCObject** ; [#uses=1] + %113 = load %union.GCObject** %112, align 4 ; [#uses=1] + %114 = getelementptr inbounds %union.GCObject* %113, i32 0, i32 0 ; [#uses=1] + %115 = bitcast %struct.lua_State* %114 to %struct.GCheader* ; [#uses=1] + %116 = getelementptr inbounds %struct.GCheader* %115, i32 0, i32 2 ; [#uses=1] + %117 = load i8* %116, align 1 ; [#uses=1] + %118 = zext i8 %117 to i32 ; [#uses=1] + %119 = and i32 %118, 3 ; [#uses=1] + %120 = icmp ne i32 %119, 0 ; [#uses=1] + br i1 %120, label %121, label %134 + +; <label>:121 ; preds = %108 + %122 = load %struct.Table** %3, align 4 ; [#uses=1] + %123 = bitcast %struct.Table* %122 to %union.GCObject* ; [#uses=1] + %124 = getelementptr inbounds %union.GCObject* %123, i32 0, i32 0 ; [#uses=1] + %125 = bitcast %struct.lua_State* %124 to %struct.GCheader* ; [#uses=1] + %126 = getelementptr inbounds %struct.GCheader* %125, i32 0, i32 2 ; [#uses=1] + %127 = load i8* %126, align 1 ; [#uses=1] + %128 = zext i8 %127 to i32 ; [#uses=1] + %129 = and i32 %128, 4 ; [#uses=1] + %130 = icmp ne i32 %129, 0 ; [#uses=1] + br i1 %130, label %131, label %134 + +; <label>:131 ; preds = %121 + %132 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %133 = load %struct.Table** %3, align 4 ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %132, %struct.Table* %133) + br label %134 + +; <label>:134 ; preds = %131, %121, %108, %88 + %135 = load %struct.Node** %mp, align 4 ; [#uses=1] + %136 = getelementptr inbounds %struct.Node* %135, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %136, %struct.lua_TValue** %1 + br label %137 + +; <label>:137 ; preds = %134, %21 + %138 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %138 +} + +; [#uses=5] +define hidden %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %L, %struct.Table* %t, i32 %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.Table*, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=3] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %k = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store i32 %key, i32* %4, align 4 + %5 = load %struct.Table** %3, align 4 ; [#uses=1] + %6 = load i32* %4, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %5, i32 %6) ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %p, align 4 + %8 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %9 = icmp ne %struct.lua_TValue* %8, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %11, %struct.lua_TValue** %1 + br label %23 + +; <label>:12 ; preds = %0 + store %struct.lua_TValue* %k, %struct.lua_TValue** %i_o, align 4 + %13 = load i32* %4, align 4 ; [#uses=1] + %14 = sitofp i32 %13 to double ; [#uses=1] + %15 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + store double %14, double* %17, align 4 + %18 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %19, align 4 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = load %struct.Table** %3, align 4 ; [#uses=1] + %22 = call %struct.lua_TValue* @_Z6newkeyP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %20, %struct.Table* %21, %struct.lua_TValue* %k) ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %1 + br label %23 + +; <label>:23 ; preds = %12, %10 + %24 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %24 +} + +; [#uses=2] +define hidden %struct.lua_TValue* @_Z11luaH_setstrP9lua_StateP5TableP7TString(%struct.lua_State* %L, %struct.Table* %t, %union.TString* %key) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.Table*, align 4 ; [#uses=3] + %4 = alloca %union.TString*, align 4 ; [#uses=3] + %p = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %k = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %t, %struct.Table** %3, align 4 + store %union.TString* %key, %union.TString** %4, align 4 + %5 = load %struct.Table** %3, align 4 ; [#uses=1] + %6 = load %union.TString** %4, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z11luaH_getstrP5TableP7TString(%struct.Table* %5, %union.TString* %6) ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %p, align 4 + %8 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + %9 = icmp ne %struct.lua_TValue* %8, bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*) ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %p, align 4 ; [#uses=1] + store %struct.lua_TValue* %11, %struct.lua_TValue** %1 + br label %24 + +; <label>:12 ; preds = %0 + store %struct.lua_TValue* %k, %struct.lua_TValue** %i_o, align 4 + %13 = load %union.TString** %4, align 4 ; [#uses=1] + %14 = bitcast %union.TString* %13 to %union.GCObject* ; [#uses=1] + %15 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.lua_TValue* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] + %18 = bitcast double* %17 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %14, %union.GCObject** %18, align 4 + %19 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %20, align 4 + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = load %struct.Table** %3, align 4 ; [#uses=1] + %23 = call %struct.lua_TValue* @_Z6newkeyP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %21, %struct.Table* %22, %struct.lua_TValue* %k) ; [#uses=1] + store %struct.lua_TValue* %23, %struct.lua_TValue** %1 + br label %24 + +; <label>:24 ; preds = %12, %10 + %25 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %25 +} + +; [#uses=2] +define hidden i32 @_Z9luaH_getnP5Table(%struct.Table* %t) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.Table*, align 4 ; [#uses=6] + %j = alloca i32, align 4 ; [#uses=8] + %i = alloca i32, align 4 ; [#uses=5] + %m = alloca i32, align 4 ; [#uses=4] + store %struct.Table* %t, %struct.Table** %2, align 4 + %3 = load %struct.Table** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Table* %3, i32 0, i32 10 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + store i32 %5, i32* %j, align 4 + %6 = load i32* %j, align 4 ; [#uses=1] + %7 = icmp ugt i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %45 + +; <label>:8 ; preds = %0 + %9 = load i32* %j, align 4 ; [#uses=1] + %10 = sub i32 %9, 1 ; [#uses=1] + %11 = load %struct.Table** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.Table* %11, i32 0, i32 6 ; [#uses=1] + %13 = load %struct.lua_TValue** %12, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.lua_TValue* %13, i32 %10 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 1 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = icmp eq i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %45 + +; <label>:18 ; preds = %8 + store i32 0, i32* %i, align 4 + br label %19 + +; <label>:19 ; preds = %42, %18 + %20 = load i32* %j, align 4 ; [#uses=1] + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = sub i32 %20, %21 ; [#uses=1] + %23 = icmp ugt i32 %22, 1 ; [#uses=1] + br i1 %23, label %24, label %43 + +; <label>:24 ; preds = %19 + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = load i32* %j, align 4 ; [#uses=1] + %27 = add i32 %25, %26 ; [#uses=1] + %28 = udiv i32 %27, 2 ; [#uses=1] + store i32 %28, i32* %m, align 4 + %29 = load i32* %m, align 4 ; [#uses=1] + %30 = sub i32 %29, 1 ; [#uses=1] + %31 = load %struct.Table** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.Table* %31, i32 0, i32 6 ; [#uses=1] + %33 = load %struct.lua_TValue** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 %30 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 0 ; [#uses=1] + br i1 %37, label %38, label %40 + +; <label>:38 ; preds = %24 + %39 = load i32* %m, align 4 ; [#uses=1] + store i32 %39, i32* %j, align 4 + br label %42 + +; <label>:40 ; preds = %24 + %41 = load i32* %m, align 4 ; [#uses=1] + store i32 %41, i32* %i, align 4 + br label %42 + +; <label>:42 ; preds = %40, %38 + br label %19 + +; <label>:43 ; preds = %19 + %44 = load i32* %i, align 4 ; [#uses=1] + store i32 %44, i32* %1 + br label %56 + +; <label>:45 ; preds = %8, %0 + %46 = load %struct.Table** %2, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Table* %46, i32 0, i32 7 ; [#uses=1] + %48 = load %struct.Node** %47, align 4 ; [#uses=1] + %49 = icmp eq %struct.Node* %48, bitcast (%9* @_ZL10dummynode_ to %struct.Node*) ; [#uses=1] + br i1 %49, label %50, label %52 + +; <label>:50 ; preds = %45 + %51 = load i32* %j, align 4 ; [#uses=1] + store i32 %51, i32* %1 + br label %56 + +; <label>:52 ; preds = %45 + %53 = load %struct.Table** %2, align 4 ; [#uses=1] + %54 = load i32* %j, align 4 ; [#uses=1] + %55 = call i32 @_Z14unbound_searchP5Tablej(%struct.Table* %53, i32 %54) ; [#uses=1] + store i32 %55, i32* %1 + br label %56 + +; <label>:56 ; preds = %52, %50, %43 + %57 = load i32* %1 ; [#uses=1] + ret i32 %57 +} + +; [#uses=1] +define internal i32 @_Z14unbound_searchP5Tablej(%struct.Table* %t, i32 %j) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=12] + %i = alloca i32, align 4 ; [#uses=11] + %m = alloca i32, align 4 ; [#uses=4] + store %struct.Table* %t, %struct.Table** %2, align 4 + store i32 %j, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + store i32 %4, i32* %i, align 4 + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = add i32 %5, 1 ; [#uses=1] + store i32 %6, i32* %3, align 4 + br label %7 + +; <label>:7 ; preds = %36, %0 + %8 = load %struct.Table** %2, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %8, i32 %9) ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 1 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 0 ; [#uses=1] + %14 = xor i1 %13, true ; [#uses=1] + br i1 %14, label %15, label %37 + +; <label>:15 ; preds = %7 + %16 = load i32* %3, align 4 ; [#uses=1] + store i32 %16, i32* %i, align 4 + %17 = load i32* %3, align 4 ; [#uses=1] + %18 = mul i32 %17, 2 ; [#uses=1] + store i32 %18, i32* %3, align 4 + %19 = load i32* %3, align 4 ; [#uses=1] + %20 = icmp ugt i32 %19, 2147483645 ; [#uses=1] + br i1 %20, label %21, label %36 + +; <label>:21 ; preds = %15 + store i32 1, i32* %i, align 4 + br label %22 + +; <label>:22 ; preds = %30, %21 + %23 = load %struct.Table** %2, align 4 ; [#uses=1] + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %23, i32 %24) ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = icmp eq i32 %27, 0 ; [#uses=1] + %29 = xor i1 %28, true ; [#uses=1] + br i1 %29, label %30, label %33 + +; <label>:30 ; preds = %22 + %31 = load i32* %i, align 4 ; [#uses=1] + %32 = add i32 %31, 1 ; [#uses=1] + store i32 %32, i32* %i, align 4 + br label %22 + +; <label>:33 ; preds = %22 + %34 = load i32* %i, align 4 ; [#uses=1] + %35 = sub i32 %34, 1 ; [#uses=1] + store i32 %35, i32* %1 + br label %61 + +; <label>:36 ; preds = %15 + br label %7 + +; <label>:37 ; preds = %7 + br label %38 + +; <label>:38 ; preds = %58, %37 + %39 = load i32* %3, align 4 ; [#uses=1] + %40 = load i32* %i, align 4 ; [#uses=1] + %41 = sub i32 %39, %40 ; [#uses=1] + %42 = icmp ugt i32 %41, 1 ; [#uses=1] + br i1 %42, label %43, label %59 + +; <label>:43 ; preds = %38 + %44 = load i32* %i, align 4 ; [#uses=1] + %45 = load i32* %3, align 4 ; [#uses=1] + %46 = add i32 %44, %45 ; [#uses=1] + %47 = udiv i32 %46, 2 ; [#uses=1] + store i32 %47, i32* %m, align 4 + %48 = load %struct.Table** %2, align 4 ; [#uses=1] + %49 = load i32* %m, align 4 ; [#uses=1] + %50 = call %struct.lua_TValue* @_Z11luaH_getnumP5Tablei(%struct.Table* %48, i32 %49) ; [#uses=1] + %51 = getelementptr inbounds %struct.lua_TValue* %50, i32 0, i32 1 ; [#uses=1] + %52 = load i32* %51, align 4 ; [#uses=1] + %53 = icmp eq i32 %52, 0 ; [#uses=1] + br i1 %53, label %54, label %56 + +; <label>:54 ; preds = %43 + %55 = load i32* %m, align 4 ; [#uses=1] + store i32 %55, i32* %3, align 4 + br label %58 + +; <label>:56 ; preds = %43 + %57 = load i32* %m, align 4 ; [#uses=1] + store i32 %57, i32* %i, align 4 + br label %58 + +; <label>:58 ; preds = %56, %54 + br label %38 + +; <label>:59 ; preds = %38 + %60 = load i32* %i, align 4 ; [#uses=1] + store i32 %60, i32* %1 + br label %61 + +; <label>:61 ; preds = %59, %33 + %62 = load i32* %1 ; [#uses=1] + ret i32 %62 +} + +; [#uses=1] +define internal %struct.Node* @_Z10getfreeposP5Table(%struct.Table* %t) nounwind { + %1 = alloca %struct.Node*, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=5] + store %struct.Table* %t, %struct.Table** %2, align 4 + br label %3 + +; <label>:3 ; preds = %25, %0 + %4 = load %struct.Table** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Table* %4, i32 0, i32 8 ; [#uses=2] + %6 = load %struct.Node** %5, align 4 ; [#uses=2] + %7 = getelementptr inbounds %struct.Node* %6, i32 -1 ; [#uses=1] + store %struct.Node* %7, %struct.Node** %5, align 4 + %8 = load %struct.Table** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.Table* %8, i32 0, i32 7 ; [#uses=1] + %10 = load %struct.Node** %9, align 4 ; [#uses=1] + %11 = icmp ugt %struct.Node* %6, %10 ; [#uses=1] + br i1 %11, label %12, label %26 + +; <label>:12 ; preds = %3 + %13 = load %struct.Table** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Table* %13, i32 0, i32 8 ; [#uses=1] + %15 = load %struct.Node** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Node* %15, i32 0, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %union.TKey* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %1* %17, i32 0, i32 1 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp eq i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %25 + +; <label>:21 ; preds = %12 + %22 = load %struct.Table** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Table* %22, i32 0, i32 8 ; [#uses=1] + %24 = load %struct.Node** %23, align 4 ; [#uses=1] + store %struct.Node* %24, %struct.Node** %1 + br label %27 + +; <label>:25 ; preds = %12 + br label %3 + +; <label>:26 ; preds = %3 + store %struct.Node* null, %struct.Node** %1 + br label %27 + +; <label>:27 ; preds = %26, %21 + %28 = load %struct.Node** %1 ; [#uses=1] + ret %struct.Node* %28 +} + +; [#uses=1] +define internal void @_Z6rehashP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %L, %struct.Table* %t, %struct.lua_TValue* %ek) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.Table*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %nasize = alloca i32, align 4 ; [#uses=7] + %na = alloca i32, align 4 ; [#uses=2] + %nums = alloca [27 x i32], align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=5] + %totaluse = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Table* %t, %struct.Table** %2, align 4 + store %struct.lua_TValue* %ek, %struct.lua_TValue** %3, align 4 + store i32 0, i32* %i, align 4 + br label %4 + +; <label>:4 ; preds = %10, %0 + %5 = load i32* %i, align 4 ; [#uses=1] + %6 = icmp sle i32 %5, 26 ; [#uses=1] + br i1 %6, label %7, label %13 + +; <label>:7 ; preds = %4 + %8 = load i32* %i, align 4 ; [#uses=1] + %9 = getelementptr inbounds [27 x i32]* %nums, i32 0, i32 %8 ; [#uses=1] + store i32 0, i32* %9 + br label %10 + +; <label>:10 ; preds = %7 + %11 = load i32* %i, align 4 ; [#uses=1] + %12 = add nsw i32 %11, 1 ; [#uses=1] + store i32 %12, i32* %i, align 4 + br label %4 + +; <label>:13 ; preds = %4 + %14 = load %struct.Table** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds [27 x i32]* %nums, i32 0, i32 0 ; [#uses=1] + %16 = call i32 @_Z11numusearrayPK5TablePi(%struct.Table* %14, i32* %15) ; [#uses=1] + store i32 %16, i32* %nasize, align 4 + %17 = load i32* %nasize, align 4 ; [#uses=1] + store i32 %17, i32* %totaluse, align 4 + %18 = load %struct.Table** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds [27 x i32]* %nums, i32 0, i32 0 ; [#uses=1] + %20 = call i32 @_Z10numusehashPK5TablePiS2_(%struct.Table* %18, i32* %19, i32* %nasize) ; [#uses=1] + %21 = load i32* %totaluse, align 4 ; [#uses=1] + %22 = add nsw i32 %21, %20 ; [#uses=1] + store i32 %22, i32* %totaluse, align 4 + %23 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds [27 x i32]* %nums, i32 0, i32 0 ; [#uses=1] + %25 = call i32 @_Z8countintPK10lua_TValuePi(%struct.lua_TValue* %23, i32* %24) ; [#uses=1] + %26 = load i32* %nasize, align 4 ; [#uses=1] + %27 = add nsw i32 %26, %25 ; [#uses=1] + store i32 %27, i32* %nasize, align 4 + %28 = load i32* %totaluse, align 4 ; [#uses=1] + %29 = add nsw i32 %28, 1 ; [#uses=1] + store i32 %29, i32* %totaluse, align 4 + %30 = getelementptr inbounds [27 x i32]* %nums, i32 0, i32 0 ; [#uses=1] + %31 = call i32 @_Z12computesizesPiS_(i32* %30, i32* %nasize) ; [#uses=1] + store i32 %31, i32* %na, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = load %struct.Table** %2, align 4 ; [#uses=1] + %34 = load i32* %nasize, align 4 ; [#uses=1] + %35 = load i32* %totaluse, align 4 ; [#uses=1] + %36 = load i32* %na, align 4 ; [#uses=1] + %37 = sub nsw i32 %35, %36 ; [#uses=1] + call void @_Z6resizeP9lua_StateP5Tableii(%struct.lua_State* %32, %struct.Table* %33, i32 %34, i32 %37) + ret void +} + +; [#uses=1] +define internal i32 @_Z11numusearrayPK5TablePi(%struct.Table* %t, i32* %nums) nounwind { + %1 = alloca %struct.Table*, align 4 ; [#uses=4] + %2 = alloca i32*, align 4 ; [#uses=2] + %lg = alloca i32, align 4 ; [#uses=5] + %ttlg = alloca i32, align 4 ; [#uses=4] + %ause = alloca i32, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=6] + %lc = alloca i32, align 4 ; [#uses=5] + %lim = alloca i32, align 4 ; [#uses=5] + store %struct.Table* %t, %struct.Table** %1, align 4 + store i32* %nums, i32** %2, align 4 + store i32 0, i32* %ause, align 4 + store i32 1, i32* %i, align 4 + store i32 0, i32* %lg, align 4 + store i32 1, i32* %ttlg, align 4 + br label %3 + +; <label>:3 ; preds = %54, %0 + %4 = load i32* %lg, align 4 ; [#uses=1] + %5 = icmp sle i32 %4, 26 ; [#uses=1] + br i1 %5, label %6, label %59 + +; <label>:6 ; preds = %3 + store i32 0, i32* %lc, align 4 + %7 = load i32* %ttlg, align 4 ; [#uses=1] + store i32 %7, i32* %lim, align 4 + %8 = load i32* %lim, align 4 ; [#uses=1] + %9 = load %struct.Table** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Table* %9, i32 0, i32 10 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp sgt i32 %8, %11 ; [#uses=1] + br i1 %12, label %13, label %22 + +; <label>:13 ; preds = %6 + %14 = load %struct.Table** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Table* %14, i32 0, i32 10 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + store i32 %16, i32* %lim, align 4 + %17 = load i32* %i, align 4 ; [#uses=1] + %18 = load i32* %lim, align 4 ; [#uses=1] + %19 = icmp sgt i32 %17, %18 ; [#uses=1] + br i1 %19, label %20, label %21 + +; <label>:20 ; preds = %13 + br label %59 + +; <label>:21 ; preds = %13 + br label %22 + +; <label>:22 ; preds = %21, %6 + br label %23 + +; <label>:23 ; preds = %41, %22 + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = load i32* %lim, align 4 ; [#uses=1] + %26 = icmp sle i32 %24, %25 ; [#uses=1] + br i1 %26, label %27, label %44 + +; <label>:27 ; preds = %23 + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = sub nsw i32 %28, 1 ; [#uses=1] + %30 = load %struct.Table** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.Table* %30, i32 0, i32 6 ; [#uses=1] + %32 = load %struct.lua_TValue** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 %29 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 1 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + %36 = icmp eq i32 %35, 0 ; [#uses=1] + br i1 %36, label %40, label %37 + +; <label>:37 ; preds = %27 + %38 = load i32* %lc, align 4 ; [#uses=1] + %39 = add nsw i32 %38, 1 ; [#uses=1] + store i32 %39, i32* %lc, align 4 + br label %40 + +; <label>:40 ; preds = %37, %27 + br label %41 + +; <label>:41 ; preds = %40 + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = add nsw i32 %42, 1 ; [#uses=1] + store i32 %43, i32* %i, align 4 + br label %23 + +; <label>:44 ; preds = %23 + %45 = load i32* %lc, align 4 ; [#uses=1] + %46 = load i32* %lg, align 4 ; [#uses=1] + %47 = load i32** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds i32* %47, i32 %46 ; [#uses=2] + %49 = load i32* %48 ; [#uses=1] + %50 = add nsw i32 %49, %45 ; [#uses=1] + store i32 %50, i32* %48 + %51 = load i32* %lc, align 4 ; [#uses=1] + %52 = load i32* %ause, align 4 ; [#uses=1] + %53 = add nsw i32 %52, %51 ; [#uses=1] + store i32 %53, i32* %ause, align 4 + br label %54 + +; <label>:54 ; preds = %44 + %55 = load i32* %lg, align 4 ; [#uses=1] + %56 = add nsw i32 %55, 1 ; [#uses=1] + store i32 %56, i32* %lg, align 4 + %57 = load i32* %ttlg, align 4 ; [#uses=1] + %58 = mul nsw i32 %57, 2 ; [#uses=1] + store i32 %58, i32* %ttlg, align 4 + br label %3 + +; <label>:59 ; preds = %20, %3 + %60 = load i32* %ause, align 4 ; [#uses=1] + ret i32 %60 +} + +; [#uses=1] +define internal i32 @_Z10numusehashPK5TablePiS2_(%struct.Table* %t, i32* %nums, i32* %pnasize) { + %1 = alloca %struct.Table*, align 4 ; [#uses=3] + %2 = alloca i32*, align 4 ; [#uses=2] + %3 = alloca i32*, align 4 ; [#uses=2] + %totaluse = alloca i32, align 4 ; [#uses=4] + %ause = alloca i32, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=4] + %n = alloca %struct.Node*, align 4 ; [#uses=3] + store %struct.Table* %t, %struct.Table** %1, align 4 + store i32* %nums, i32** %2, align 4 + store i32* %pnasize, i32** %3, align 4 + store i32 0, i32* %totaluse, align 4 + store i32 0, i32* %ause, align 4 + %4 = load %struct.Table** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.Table* %4, i32 0, i32 4 ; [#uses=1] + %6 = load i8* %5, align 1 ; [#uses=1] + %7 = zext i8 %6 to i32 ; [#uses=1] + %8 = shl i32 1, %7 ; [#uses=1] + store i32 %8, i32* %i, align 4 + br label %9 + +; <label>:9 ; preds = %35, %0 + %10 = load i32* %i, align 4 ; [#uses=2] + %11 = add nsw i32 %10, -1 ; [#uses=1] + store i32 %11, i32* %i, align 4 + %12 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %12, label %13, label %36 + +; <label>:13 ; preds = %9 + %14 = load i32* %i, align 4 ; [#uses=1] + %15 = load %struct.Table** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds %struct.Table* %15, i32 0, i32 7 ; [#uses=1] + %17 = load %struct.Node** %16, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Node* %17, i32 %14 ; [#uses=1] + store %struct.Node* %18, %struct.Node** %n, align 4 + %19 = load %struct.Node** %n, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Node* %19, i32 0, i32 0 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_TValue* %20, i32 0, i32 1 ; [#uses=1] + %22 = load i32* %21, align 4 ; [#uses=1] + %23 = icmp eq i32 %22, 0 ; [#uses=1] + br i1 %23, label %35, label %24 + +; <label>:24 ; preds = %13 + %25 = load %struct.Node** %n, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Node* %25, i32 0, i32 1 ; [#uses=1] + %27 = getelementptr inbounds %union.TKey* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast %1* %27 to %struct.lua_TValue* ; [#uses=1] + %29 = load i32** %2, align 4 ; [#uses=1] + %30 = call i32 @_Z8countintPK10lua_TValuePi(%struct.lua_TValue* %28, i32* %29) ; [#uses=1] + %31 = load i32* %ause, align 4 ; [#uses=1] + %32 = add nsw i32 %31, %30 ; [#uses=1] + store i32 %32, i32* %ause, align 4 + %33 = load i32* %totaluse, align 4 ; [#uses=1] + %34 = add nsw i32 %33, 1 ; [#uses=1] + store i32 %34, i32* %totaluse, align 4 + br label %35 + +; <label>:35 ; preds = %24, %13 + br label %9 + +; <label>:36 ; preds = %9 + %37 = load i32* %ause, align 4 ; [#uses=1] + %38 = load i32** %3, align 4 ; [#uses=2] + %39 = load i32* %38 ; [#uses=1] + %40 = add nsw i32 %39, %37 ; [#uses=1] + store i32 %40, i32* %38 + %41 = load i32* %totaluse, align 4 ; [#uses=1] + ret i32 %41 +} + +; [#uses=2] +define internal i32 @_Z8countintPK10lua_TValuePi(%struct.lua_TValue* %key, i32* %nums) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %3 = alloca i32*, align 4 ; [#uses=2] + %k = alloca i32, align 4 ; [#uses=4] + store %struct.lua_TValue* %key, %struct.lua_TValue** %2, align 4 + store i32* %nums, i32** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z10arrayindexPK10lua_TValue(%struct.lua_TValue* %4) ; [#uses=1] + store i32 %5, i32* %k, align 4 + %6 = load i32* %k, align 4 ; [#uses=1] + %7 = icmp slt i32 0, %6 ; [#uses=1] + br i1 %7, label %8, label %20 + +; <label>:8 ; preds = %0 + %9 = load i32* %k, align 4 ; [#uses=1] + %10 = icmp sle i32 %9, 67108864 ; [#uses=1] + br i1 %10, label %11, label %20 + +; <label>:11 ; preds = %8 + %12 = load i32* %k, align 4 ; [#uses=1] + %13 = sub nsw i32 %12, 1 ; [#uses=1] + %14 = call i32 @_Z9luaO_log2j(i32 %13) ; [#uses=1] + %15 = add nsw i32 %14, 1 ; [#uses=1] + %16 = load i32** %3, align 4 ; [#uses=1] + %17 = getelementptr inbounds i32* %16, i32 %15 ; [#uses=2] + %18 = load i32* %17 ; [#uses=1] + %19 = add nsw i32 %18, 1 ; [#uses=1] + store i32 %19, i32* %17 + store i32 1, i32* %1 + br label %21 + +; <label>:20 ; preds = %8, %0 + store i32 0, i32* %1 + br label %21 + +; <label>:21 ; preds = %20, %11 + %22 = load i32* %1 ; [#uses=1] + ret i32 %22 +} + +; [#uses=1] +define internal i32 @_Z12computesizesPiS_(i32* %nums, i32* %narray) nounwind { + %1 = alloca i32*, align 4 ; [#uses=3] + %2 = alloca i32*, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=5] + %twotoi = alloca i32, align 4 ; [#uses=6] + %a = alloca i32, align 4 ; [#uses=6] + %na = alloca i32, align 4 ; [#uses=3] + %n = alloca i32, align 4 ; [#uses=3] + store i32* %nums, i32** %1, align 4 + store i32* %narray, i32** %2, align 4 + store i32 0, i32* %a, align 4 + store i32 0, i32* %na, align 4 + store i32 0, i32* %n, align 4 + store i32 0, i32* %i, align 4 + store i32 1, i32* %twotoi, align 4 + br label %3 + +; <label>:3 ; preds = %37, %0 + %4 = load i32* %twotoi, align 4 ; [#uses=1] + %5 = sdiv i32 %4, 2 ; [#uses=1] + %6 = load i32** %2, align 4 ; [#uses=1] + %7 = load i32* %6 ; [#uses=1] + %8 = icmp slt i32 %5, %7 ; [#uses=1] + br i1 %8, label %9, label %42 + +; <label>:9 ; preds = %3 + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = load i32** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds i32* %11, i32 %10 ; [#uses=1] + %13 = load i32* %12 ; [#uses=1] + %14 = icmp sgt i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %30 + +; <label>:15 ; preds = %9 + %16 = load i32* %i, align 4 ; [#uses=1] + %17 = load i32** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds i32* %17, i32 %16 ; [#uses=1] + %19 = load i32* %18 ; [#uses=1] + %20 = load i32* %a, align 4 ; [#uses=1] + %21 = add nsw i32 %20, %19 ; [#uses=1] + store i32 %21, i32* %a, align 4 + %22 = load i32* %a, align 4 ; [#uses=1] + %23 = load i32* %twotoi, align 4 ; [#uses=1] + %24 = sdiv i32 %23, 2 ; [#uses=1] + %25 = icmp sgt i32 %22, %24 ; [#uses=1] + br i1 %25, label %26, label %29 + +; <label>:26 ; preds = %15 + %27 = load i32* %twotoi, align 4 ; [#uses=1] + store i32 %27, i32* %n, align 4 + %28 = load i32* %a, align 4 ; [#uses=1] + store i32 %28, i32* %na, align 4 + br label %29 + +; <label>:29 ; preds = %26, %15 + br label %30 + +; <label>:30 ; preds = %29, %9 + %31 = load i32* %a, align 4 ; [#uses=1] + %32 = load i32** %2, align 4 ; [#uses=1] + %33 = load i32* %32 ; [#uses=1] + %34 = icmp eq i32 %31, %33 ; [#uses=1] + br i1 %34, label %35, label %36 + +; <label>:35 ; preds = %30 + br label %42 + +; <label>:36 ; preds = %30 + br label %37 + +; <label>:37 ; preds = %36 + %38 = load i32* %i, align 4 ; [#uses=1] + %39 = add nsw i32 %38, 1 ; [#uses=1] + store i32 %39, i32* %i, align 4 + %40 = load i32* %twotoi, align 4 ; [#uses=1] + %41 = mul nsw i32 %40, 2 ; [#uses=1] + store i32 %41, i32* %twotoi, align 4 + br label %3 + +; <label>:42 ; preds = %35, %3 + %43 = load i32* %n, align 4 ; [#uses=1] + %44 = load i32** %2, align 4 ; [#uses=1] + store i32 %43, i32* %44 + %45 = load i32* %na, align 4 ; [#uses=1] + ret i32 %45 +} + +; [#uses=2] +define internal i32 @_Z10arrayindexPK10lua_TValue(%struct.lua_TValue* %key) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %n = alloca double, align 8 ; [#uses=3] + %k = alloca i32, align 4 ; [#uses=3] + store %struct.lua_TValue* %key, %struct.lua_TValue** %2, align 4 + %3 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_TValue* %3, i32 0, i32 1 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 3 ; [#uses=1] + br i1 %6, label %7, label %21 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 0 ; [#uses=1] + %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] + %11 = load double* %10, align 4 ; [#uses=1] + store double %11, double* %n, align 8 + %12 = load double* %n, align 8 ; [#uses=1] + %13 = fptosi double %12 to i32 ; [#uses=1] + store i32 %13, i32* %k, align 4 + %14 = load i32* %k, align 4 ; [#uses=1] + %15 = sitofp i32 %14 to double ; [#uses=1] + %16 = load double* %n, align 8 ; [#uses=1] + %17 = fcmp oeq double %15, %16 ; [#uses=1] + br i1 %17, label %18, label %20 + +; <label>:18 ; preds = %7 + %19 = load i32* %k, align 4 ; [#uses=1] + store i32 %19, i32* %1 + br label %22 + +; <label>:20 ; preds = %7 + br label %21 + +; <label>:21 ; preds = %20, %0 + store i32 -1, i32* %1 + br label %22 + +; <label>:22 ; preds = %21, %18 + %23 = load i32* %1 ; [#uses=1] + ret i32 %23 +} + +; [#uses=1] +define hidden void @_Z9luaT_initP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 0, i32* %i, align 4 + br label %2 + +; <label>:2 ; preds = %34, %0 + %3 = load i32* %i, align 4 ; [#uses=1] + %4 = icmp slt i32 %3, 17 ; [#uses=1] + br i1 %4, label %5, label %37 + +; <label>:5 ; preds = %2 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = getelementptr inbounds [17 x i8*]* @_ZZ9luaT_initP9lua_StateE14luaT_eventname, i32 0, i32 %7 ; [#uses=1] + %9 = load i8** %8 ; [#uses=1] + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = getelementptr inbounds [17 x i8*]* @_ZZ9luaT_initP9lua_StateE14luaT_eventname, i32 0, i32 %10 ; [#uses=1] + %12 = load i8** %11 ; [#uses=1] + %13 = call i32 @strlen(i8* %12) ; [#uses=1] + %14 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %6, i8* %9, i32 %13) ; [#uses=1] + %15 = load i32* %i, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 6 ; [#uses=1] + %18 = load %struct.global_State** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.global_State* %18, i32 0, i32 24 ; [#uses=1] + %20 = getelementptr inbounds [17 x %union.TString*]* %19, i32 0, i32 %15 ; [#uses=1] + store %union.TString* %14, %union.TString** %20 + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 6 ; [#uses=1] + %24 = load %struct.global_State** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.global_State* %24, i32 0, i32 24 ; [#uses=1] + %26 = getelementptr inbounds [17 x %union.TString*]* %25, i32 0, i32 %21 ; [#uses=1] + %27 = load %union.TString** %26 ; [#uses=1] + %28 = getelementptr inbounds %union.TString* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %struct.anon* %28, i32 0, i32 2 ; [#uses=2] + %30 = load i8* %29, align 1 ; [#uses=1] + %31 = zext i8 %30 to i32 ; [#uses=1] + %32 = or i32 %31, 32 ; [#uses=1] + %33 = trunc i32 %32 to i8 ; [#uses=1] + store i8 %33, i8* %29, align 1 + br label %34 + +; <label>:34 ; preds = %5 + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = add nsw i32 %35, 1 ; [#uses=1] + store i32 %36, i32* %i, align 4 + br label %2 + +; <label>:37 ; preds = %2 + ret void +} + +; [#uses=7] +define hidden %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %events, i32 %event, %union.TString* %ename) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %2 = alloca %struct.Table*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca %union.TString*, align 4 ; [#uses=2] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.Table* %events, %struct.Table** %2, align 4 + store i32 %event, i32* %3, align 4 + store %union.TString* %ename, %union.TString** %4, align 4 + %5 = load %struct.Table** %2, align 4 ; [#uses=1] + %6 = load %union.TString** %4, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z11luaH_getstrP5TableP7TString(%struct.Table* %5, %union.TString* %6) ; [#uses=1] + store %struct.lua_TValue* %7, %struct.lua_TValue** %tm, align 4 + %8 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp eq i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %23 + +; <label>:12 ; preds = %0 + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = shl i32 1, %13 ; [#uses=1] + %15 = trunc i32 %14 to i8 ; [#uses=1] + %16 = zext i8 %15 to i32 ; [#uses=1] + %17 = load %struct.Table** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Table* %17, i32 0, i32 3 ; [#uses=2] + %19 = load i8* %18, align 1 ; [#uses=1] + %20 = zext i8 %19 to i32 ; [#uses=1] + %21 = or i32 %20, %16 ; [#uses=1] + %22 = trunc i32 %21 to i8 ; [#uses=1] + store i8 %22, i8* %18, align 1 + store %struct.lua_TValue* null, %struct.lua_TValue** %1 + br label %25 + +; <label>:23 ; preds = %0 + %24 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %1 + br label %25 + +; <label>:25 ; preds = %23, %12 + %26 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %26 +} + +; [#uses=7] +define hidden %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %L, %struct.lua_TValue* %o, i32 %event) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=2] + %mt = alloca %struct.Table*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %o, %struct.lua_TValue** %2, align 4 + store i32 %event, i32* %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + switch i32 %6, label %28 [ + i32 5, label %7 + i32 7, label %17 + ] + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 0 ; [#uses=1] + %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] + %11 = bitcast double* %10 to %union.GCObject** ; [#uses=1] + %12 = load %union.GCObject** %11, align 4 ; [#uses=1] + %13 = getelementptr inbounds %union.GCObject* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast %struct.lua_State* %13 to %struct.Table* ; [#uses=1] + %15 = getelementptr inbounds %struct.Table* %14, i32 0, i32 5 ; [#uses=1] + %16 = load %struct.Table** %15, align 4 ; [#uses=1] + store %struct.Table* %16, %struct.Table** %mt, align 4 + br label %38 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %union.anon* %19, i32 0, i32 0 ; [#uses=1] + %21 = bitcast double* %20 to %union.GCObject** ; [#uses=1] + %22 = load %union.GCObject** %21, align 4 ; [#uses=1] + %23 = getelementptr inbounds %union.GCObject* %22, i32 0, i32 0 ; [#uses=1] + %24 = bitcast %struct.lua_State* %23 to %union.Udata* ; [#uses=1] + %25 = getelementptr inbounds %union.Udata* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %4* %25, i32 0, i32 3 ; [#uses=1] + %27 = load %struct.Table** %26, align 4 ; [#uses=1] + store %struct.Table* %27, %struct.Table** %mt, align 4 + br label %38 + +; <label>:28 ; preds = %0 + %29 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 1 ; [#uses=1] + %31 = load i32* %30, align 4 ; [#uses=1] + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 6 ; [#uses=1] + %34 = load %struct.global_State** %33, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.global_State* %34, i32 0, i32 23 ; [#uses=1] + %36 = getelementptr inbounds [9 x %struct.Table*]* %35, i32 0, i32 %31 ; [#uses=1] + %37 = load %struct.Table** %36 ; [#uses=1] + store %struct.Table* %37, %struct.Table** %mt, align 4 + br label %38 + +; <label>:38 ; preds = %28, %17, %7 + %39 = load %struct.Table** %mt, align 4 ; [#uses=1] + %40 = icmp ne %struct.Table* %39, null ; [#uses=1] + br i1 %40, label %41, label %51 + +; <label>:41 ; preds = %38 + %42 = load %struct.Table** %mt, align 4 ; [#uses=1] + %43 = load i32* %3, align 4 ; [#uses=1] + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_State* %44, i32 0, i32 6 ; [#uses=1] + %46 = load %struct.global_State** %45, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.global_State* %46, i32 0, i32 24 ; [#uses=1] + %48 = getelementptr inbounds [17 x %union.TString*]* %47, i32 0, i32 %43 ; [#uses=1] + %49 = load %union.TString** %48 ; [#uses=1] + %50 = call %struct.lua_TValue* @_Z11luaH_getstrP5TableP7TString(%struct.Table* %42, %union.TString* %49) ; [#uses=1] + br label %52 + +; <label>:51 ; preds = %38 + br label %52 + +; <label>:52 ; preds = %51, %41 + %53 = phi %struct.lua_TValue* [ %50, %41 ], [ bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %51 ] ; [#uses=1] + ret %struct.lua_TValue* %53 +} + +; [#uses=1] +define hidden %struct.Proto* @_Z11luaU_undumpP9lua_StateP3ZioP7MbufferPKc(%struct.lua_State* %L, %struct.Zio* %Z, %struct.Mbuffer* %buff, i8* %name) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.Zio*, align 4 ; [#uses=2] + %3 = alloca %struct.Mbuffer*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=6] + %S = alloca %14, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Zio* %Z, %struct.Zio** %2, align 4 + store %struct.Mbuffer* %buff, %struct.Mbuffer** %3, align 4 + store i8* %name, i8** %4, align 4 + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = load i8* %5 ; [#uses=1] + %7 = sext i8 %6 to i32 ; [#uses=1] + %8 = icmp eq i32 %7, 64 ; [#uses=1] + br i1 %8, label %14, label %9 + +; <label>:9 ; preds = %0 + %10 = load i8** %4, align 4 ; [#uses=1] + %11 = load i8* %10 ; [#uses=1] + %12 = sext i8 %11 to i32 ; [#uses=1] + %13 = icmp eq i32 %12, 61 ; [#uses=1] + br i1 %13, label %14, label %18 + +; <label>:14 ; preds = %9, %0 + %15 = load i8** %4, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8* %15, i32 1 ; [#uses=1] + %17 = getelementptr inbounds %14* %S, i32 0, i32 3 ; [#uses=1] + store i8* %16, i8** %17, align 4 + br label %31 + +; <label>:18 ; preds = %9 + %19 = load i8** %4, align 4 ; [#uses=1] + %20 = load i8* %19 ; [#uses=1] + %21 = sext i8 %20 to i32 ; [#uses=1] + %22 = load i8* getelementptr inbounds ([5 x i8]* @.str208, i32 0, i32 0) ; [#uses=1] + %23 = sext i8 %22 to i32 ; [#uses=1] + %24 = icmp eq i32 %21, %23 ; [#uses=1] + br i1 %24, label %25, label %27 + +; <label>:25 ; preds = %18 + %26 = getelementptr inbounds %14* %S, i32 0, i32 3 ; [#uses=1] + store i8* getelementptr inbounds ([14 x i8]* @.str1209, i32 0, i32 0), i8** %26, align 4 + br label %30 + +; <label>:27 ; preds = %18 + %28 = load i8** %4, align 4 ; [#uses=1] + %29 = getelementptr inbounds %14* %S, i32 0, i32 3 ; [#uses=1] + store i8* %28, i8** %29, align 4 + br label %30 + +; <label>:30 ; preds = %27, %25 + br label %31 + +; <label>:31 ; preds = %30, %14 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %14* %S, i32 0, i32 0 ; [#uses=1] + store %struct.lua_State* %32, %struct.lua_State** %33, align 4 + %34 = load %struct.Zio** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %14* %S, i32 0, i32 1 ; [#uses=1] + store %struct.Zio* %34, %struct.Zio** %35, align 4 + %36 = load %struct.Mbuffer** %3, align 4 ; [#uses=1] + %37 = getelementptr inbounds %14* %S, i32 0, i32 2 ; [#uses=1] + store %struct.Mbuffer* %36, %struct.Mbuffer** %37, align 4 + call void @_Z10LoadHeaderP9LoadState(%14* %S) + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %39 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %38, i8* getelementptr inbounds ([3 x i8]* @.str2210, i32 0, i32 0), i32 2) ; [#uses=1] + %40 = call %struct.Proto* @_Z12LoadFunctionP9LoadStateP7TString(%14* %S, %union.TString* %39) ; [#uses=1] + ret %struct.Proto* %40 +} + +; [#uses=1] +define internal void @_Z10LoadHeaderP9LoadState(%14* %S) { + %1 = alloca %14*, align 4 ; [#uses=3] + %h = alloca [12 x i8], align 1 ; [#uses=2] + %s = alloca [12 x i8], align 1 ; [#uses=2] + store %14* %S, %14** %1, align 4 + %2 = getelementptr inbounds [12 x i8]* %h, i32 0, i32 0 ; [#uses=1] + call void @_Z11luaU_headerPc(i8* %2) + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds [12 x i8]* %s, i32 0, i32 0 ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %3, i8* %4, i32 12) + %5 = getelementptr inbounds [12 x i8]* %h, i32 0, i32 0 ; [#uses=1] + %6 = getelementptr inbounds [12 x i8]* %s, i32 0, i32 0 ; [#uses=1] + %7 = call i32 @memcmp(i8* %5, i8* %6, i32 12) nounwind readonly ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %11 + +; <label>:9 ; preds = %0 + %10 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %10, i8* getelementptr inbounds ([11 x i8]* @.str9217, i32 0, i32 0)) + br label %11 + +; <label>:11 ; preds = %9, %0 + ret void +} + +; [#uses=2] +define internal %struct.Proto* @_Z12LoadFunctionP9LoadStateP7TString(%14* %S, %union.TString* %p) { + %1 = alloca %14*, align 4 ; [#uses=22] + %2 = alloca %union.TString*, align 4 ; [#uses=2] + %f = alloca %struct.Proto*, align 4 ; [#uses=16] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %14* %S, %14** %1, align 4 + store %union.TString* %p, %union.TString** %2, align 4 + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %14* %3, i32 0, i32 0 ; [#uses=1] + %5 = load %struct.lua_State** %4, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 15 ; [#uses=2] + %7 = load i16* %6, align 2 ; [#uses=1] + %8 = add i16 %7, 1 ; [#uses=2] + store i16 %8, i16* %6, align 2 + %9 = zext i16 %8 to i32 ; [#uses=1] + %10 = icmp sgt i32 %9, 200 ; [#uses=1] + br i1 %10, label %11, label %13 + +; <label>:11 ; preds = %0 + %12 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %12, i8* getelementptr inbounds ([14 x i8]* @.str3211, i32 0, i32 0)) + br label %13 + +; <label>:13 ; preds = %11, %0 + %14 = load %14** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %14* %14, i32 0, i32 0 ; [#uses=1] + %16 = load %struct.lua_State** %15, align 4 ; [#uses=1] + %17 = call %struct.Proto* @_Z13luaF_newprotoP9lua_State(%struct.lua_State* %16) ; [#uses=1] + store %struct.Proto* %17, %struct.Proto** %f, align 4 + %18 = load %14** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %14* %18, i32 0, i32 0 ; [#uses=1] + %20 = load %struct.lua_State** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 4 ; [#uses=1] + %22 = load %struct.lua_TValue** %21, align 4 ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %i_o, align 4 + %23 = load %struct.Proto** %f, align 4 ; [#uses=1] + %24 = bitcast %struct.Proto* %23 to %union.GCObject* ; [#uses=1] + %25 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds %union.anon* %26, i32 0, i32 0 ; [#uses=1] + %28 = bitcast double* %27 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %24, %union.GCObject** %28, align 4 + %29 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.lua_TValue* %29, i32 0, i32 1 ; [#uses=1] + store i32 9, i32* %30, align 4 + %31 = load %14** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %14* %31, i32 0, i32 0 ; [#uses=1] + %33 = load %struct.lua_State** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 9 ; [#uses=1] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = bitcast %struct.lua_TValue* %35 to i8* ; [#uses=1] + %37 = load %14** %1, align 4 ; [#uses=1] + %38 = getelementptr inbounds %14* %37, i32 0, i32 0 ; [#uses=1] + %39 = load %struct.lua_State** %38, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 4 ; [#uses=1] + %41 = load %struct.lua_TValue** %40, align 4 ; [#uses=1] + %42 = bitcast %struct.lua_TValue* %41 to i8* ; [#uses=1] + %43 = ptrtoint i8* %36 to i32 ; [#uses=1] + %44 = ptrtoint i8* %42 to i32 ; [#uses=1] + %45 = sub i32 %43, %44 ; [#uses=1] + %46 = icmp sle i32 %45, 12 ; [#uses=1] + br i1 %46, label %47, label %51 + +; <label>:47 ; preds = %13 + %48 = load %14** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %14* %48, i32 0, i32 0 ; [#uses=1] + %50 = load %struct.lua_State** %49, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %50, i32 1) + br label %52 + +; <label>:51 ; preds = %13 + br label %52 + +; <label>:52 ; preds = %51, %47 + %53 = load %14** %1, align 4 ; [#uses=1] + %54 = getelementptr inbounds %14* %53, i32 0, i32 0 ; [#uses=1] + %55 = load %struct.lua_State** %54, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_State* %55, i32 0, i32 4 ; [#uses=2] + %57 = load %struct.lua_TValue** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 1 ; [#uses=1] + store %struct.lua_TValue* %58, %struct.lua_TValue** %56, align 4 + %59 = load %14** %1, align 4 ; [#uses=1] + %60 = call %union.TString* @_Z10LoadStringP9LoadState(%14* %59) ; [#uses=1] + %61 = load %struct.Proto** %f, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.Proto* %61, i32 0, i32 9 ; [#uses=1] + store %union.TString* %60, %union.TString** %62, align 4 + %63 = load %struct.Proto** %f, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.Proto* %63, i32 0, i32 9 ; [#uses=1] + %65 = load %union.TString** %64, align 4 ; [#uses=1] + %66 = icmp eq %union.TString* %65, null ; [#uses=1] + br i1 %66, label %67, label %71 + +; <label>:67 ; preds = %52 + %68 = load %union.TString** %2, align 4 ; [#uses=1] + %69 = load %struct.Proto** %f, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.Proto* %69, i32 0, i32 9 ; [#uses=1] + store %union.TString* %68, %union.TString** %70, align 4 + br label %71 + +; <label>:71 ; preds = %67, %52 + %72 = load %14** %1, align 4 ; [#uses=1] + %73 = call i32 @_Z7LoadIntP9LoadState(%14* %72) ; [#uses=1] + %74 = load %struct.Proto** %f, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.Proto* %74, i32 0, i32 16 ; [#uses=1] + store i32 %73, i32* %75, align 4 + %76 = load %14** %1, align 4 ; [#uses=1] + %77 = call i32 @_Z7LoadIntP9LoadState(%14* %76) ; [#uses=1] + %78 = load %struct.Proto** %f, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.Proto* %78, i32 0, i32 17 ; [#uses=1] + store i32 %77, i32* %79, align 4 + %80 = load %14** %1, align 4 ; [#uses=1] + %81 = call i32 @_Z8LoadCharP9LoadState(%14* %80) ; [#uses=1] + %82 = trunc i32 %81 to i8 ; [#uses=1] + %83 = load %struct.Proto** %f, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.Proto* %83, i32 0, i32 19 ; [#uses=1] + store i8 %82, i8* %84, align 1 + %85 = load %14** %1, align 4 ; [#uses=1] + %86 = call i32 @_Z8LoadCharP9LoadState(%14* %85) ; [#uses=1] + %87 = trunc i32 %86 to i8 ; [#uses=1] + %88 = load %struct.Proto** %f, align 4 ; [#uses=1] + %89 = getelementptr inbounds %struct.Proto* %88, i32 0, i32 20 ; [#uses=1] + store i8 %87, i8* %89, align 1 + %90 = load %14** %1, align 4 ; [#uses=1] + %91 = call i32 @_Z8LoadCharP9LoadState(%14* %90) ; [#uses=1] + %92 = trunc i32 %91 to i8 ; [#uses=1] + %93 = load %struct.Proto** %f, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.Proto* %93, i32 0, i32 21 ; [#uses=1] + store i8 %92, i8* %94, align 1 + %95 = load %14** %1, align 4 ; [#uses=1] + %96 = call i32 @_Z8LoadCharP9LoadState(%14* %95) ; [#uses=1] + %97 = trunc i32 %96 to i8 ; [#uses=1] + %98 = load %struct.Proto** %f, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.Proto* %98, i32 0, i32 22 ; [#uses=1] + store i8 %97, i8* %99, align 1 + %100 = load %14** %1, align 4 ; [#uses=1] + %101 = load %struct.Proto** %f, align 4 ; [#uses=1] + call void @_Z8LoadCodeP9LoadStateP5Proto(%14* %100, %struct.Proto* %101) + %102 = load %14** %1, align 4 ; [#uses=1] + %103 = load %struct.Proto** %f, align 4 ; [#uses=1] + call void @_Z13LoadConstantsP9LoadStateP5Proto(%14* %102, %struct.Proto* %103) + %104 = load %14** %1, align 4 ; [#uses=1] + %105 = load %struct.Proto** %f, align 4 ; [#uses=1] + call void @_Z9LoadDebugP9LoadStateP5Proto(%14* %104, %struct.Proto* %105) + %106 = load %struct.Proto** %f, align 4 ; [#uses=1] + %107 = call i32 @_Z14luaG_checkcodePK5Proto(%struct.Proto* %106) ; [#uses=1] + %108 = icmp ne i32 %107, 0 ; [#uses=1] + br i1 %108, label %111, label %109 + +; <label>:109 ; preds = %71 + %110 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %110, i8* getelementptr inbounds ([9 x i8]* @.str4212, i32 0, i32 0)) + br label %111 + +; <label>:111 ; preds = %109, %71 + %112 = load %14** %1, align 4 ; [#uses=1] + %113 = getelementptr inbounds %14* %112, i32 0, i32 0 ; [#uses=1] + %114 = load %struct.lua_State** %113, align 4 ; [#uses=1] + %115 = getelementptr inbounds %struct.lua_State* %114, i32 0, i32 4 ; [#uses=2] + %116 = load %struct.lua_TValue** %115, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.lua_TValue* %116, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %117, %struct.lua_TValue** %115, align 4 + %118 = load %14** %1, align 4 ; [#uses=1] + %119 = getelementptr inbounds %14* %118, i32 0, i32 0 ; [#uses=1] + %120 = load %struct.lua_State** %119, align 4 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_State* %120, i32 0, i32 15 ; [#uses=2] + %122 = load i16* %121, align 2 ; [#uses=1] + %123 = add i16 %122, -1 ; [#uses=1] + store i16 %123, i16* %121, align 2 + %124 = load %struct.Proto** %f, align 4 ; [#uses=1] + ret %struct.Proto* %124 +} + +; [#uses=2] +define hidden void @_Z11luaU_headerPc(i8* %h) nounwind { + %1 = alloca i8*, align 4 ; [#uses=20] + %x = alloca i32, align 4 ; [#uses=2] + store i8* %h, i8** %1, align 4 + store i32 1, i32* %x, align 4 + %2 = load i8** %1, align 4 ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %2, i8* getelementptr inbounds ([5 x i8]* @.str208, i32 0, i32 0), i32 4, i32 1, i1 false) + %3 = load i8** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds i8* %3, i32 4 ; [#uses=1] + store i8* %4, i8** %1, align 4 + %5 = load i8** %1, align 4 ; [#uses=2] + %6 = getelementptr inbounds i8* %5, i32 1 ; [#uses=1] + store i8* %6, i8** %1, align 4 + store i8 81, i8* %5 + %7 = load i8** %1, align 4 ; [#uses=2] + %8 = getelementptr inbounds i8* %7, i32 1 ; [#uses=1] + store i8* %8, i8** %1, align 4 + store i8 0, i8* %7 + %9 = bitcast i32* %x to i8* ; [#uses=1] + %10 = load i8* %9 ; [#uses=1] + %11 = load i8** %1, align 4 ; [#uses=2] + %12 = getelementptr inbounds i8* %11, i32 1 ; [#uses=1] + store i8* %12, i8** %1, align 4 + store i8 %10, i8* %11 + %13 = load i8** %1, align 4 ; [#uses=2] + %14 = getelementptr inbounds i8* %13, i32 1 ; [#uses=1] + store i8* %14, i8** %1, align 4 + store i8 4, i8* %13 + %15 = load i8** %1, align 4 ; [#uses=2] + %16 = getelementptr inbounds i8* %15, i32 1 ; [#uses=1] + store i8* %16, i8** %1, align 4 + store i8 4, i8* %15 + %17 = load i8** %1, align 4 ; [#uses=2] + %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] + store i8* %18, i8** %1, align 4 + store i8 4, i8* %17 + %19 = load i8** %1, align 4 ; [#uses=2] + %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] + store i8* %20, i8** %1, align 4 + store i8 8, i8* %19 + %21 = load i8** %1, align 4 ; [#uses=2] + %22 = getelementptr inbounds i8* %21, i32 1 ; [#uses=1] + store i8* %22, i8** %1, align 4 + store i8 0, i8* %21 + ret void +} + +; [#uses=6] +define internal void @_Z5errorP9LoadStatePKc(%14* %S, i8* %why) { + %1 = alloca %14*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + store %14* %S, %14** %1, align 4 + store i8* %why, i8** %2, align 4 + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %14* %3, i32 0, i32 0 ; [#uses=1] + %5 = load %struct.lua_State** %4, align 4 ; [#uses=1] + %6 = load %14** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %14* %6, i32 0, i32 3 ; [#uses=1] + %8 = load i8** %7, align 4 ; [#uses=1] + %9 = load i8** %2, align 4 ; [#uses=1] + %10 = call i8* (%struct.lua_State*, i8*, ...)* @_Z16luaO_pushfstringP9lua_StatePKcz(%struct.lua_State* %5, i8* getelementptr inbounds ([28 x i8]* @.str8216, i32 0, i32 0), i8* %8, i8* %9) ; [#uses=0] + %11 = load %14** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %14* %11, i32 0, i32 0 ; [#uses=1] + %13 = load %struct.lua_State** %12, align 4 ; [#uses=1] + call void @_Z10luaD_throwP9lua_Statei(%struct.lua_State* %13, i32 3) + ret void +} + +; [#uses=4] +define internal %union.TString* @_Z10LoadStringP9LoadState(%14* %S) { + %1 = alloca %union.TString*, align 4 ; [#uses=3] + %2 = alloca %14*, align 4 ; [#uses=6] + %size = alloca i32, align 4 ; [#uses=5] + %s = alloca i8*, align 4 ; [#uses=3] + store %14* %S, %14** %2, align 4 + %3 = load %14** %2, align 4 ; [#uses=1] + %4 = bitcast i32* %size to i8* ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %3, i8* %4, i32 4) + %5 = load i32* %size, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + store %union.TString* null, %union.TString** %1 + br label %27 + +; <label>:8 ; preds = %0 + %9 = load %14** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %14* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.lua_State** %10, align 4 ; [#uses=1] + %12 = load %14** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %14* %12, i32 0, i32 2 ; [#uses=1] + %14 = load %struct.Mbuffer** %13, align 4 ; [#uses=1] + %15 = load i32* %size, align 4 ; [#uses=1] + %16 = call i8* @_Z14luaZ_openspaceP9lua_StateP7Mbufferj(%struct.lua_State* %11, %struct.Mbuffer* %14, i32 %15) ; [#uses=1] + store i8* %16, i8** %s, align 4 + %17 = load %14** %2, align 4 ; [#uses=1] + %18 = load i8** %s, align 4 ; [#uses=1] + %19 = load i32* %size, align 4 ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %17, i8* %18, i32 %19) + %20 = load %14** %2, align 4 ; [#uses=1] + %21 = getelementptr inbounds %14* %20, i32 0, i32 0 ; [#uses=1] + %22 = load %struct.lua_State** %21, align 4 ; [#uses=1] + %23 = load i8** %s, align 4 ; [#uses=1] + %24 = load i32* %size, align 4 ; [#uses=1] + %25 = sub i32 %24, 1 ; [#uses=1] + %26 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %22, i8* %23, i32 %25) ; [#uses=1] + store %union.TString* %26, %union.TString** %1 + br label %27 + +; <label>:27 ; preds = %8, %7 + %28 = load %union.TString** %1 ; [#uses=1] + ret %union.TString* %28 +} + +; [#uses=10] +define internal i32 @_Z7LoadIntP9LoadState(%14* %S) { + %1 = alloca %14*, align 4 ; [#uses=3] + %x = alloca i32, align 4 ; [#uses=3] + store %14* %S, %14** %1, align 4 + %2 = load %14** %1, align 4 ; [#uses=1] + %3 = bitcast i32* %x to i8* ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %2, i8* %3, i32 4) + %4 = load i32* %x, align 4 ; [#uses=1] + %5 = icmp slt i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %8 + +; <label>:6 ; preds = %0 + %7 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %7, i8* getelementptr inbounds ([12 x i8]* @.str7215, i32 0, i32 0)) + br label %8 + +; <label>:8 ; preds = %6, %0 + %9 = load i32* %x, align 4 ; [#uses=1] + ret i32 %9 +} + +; [#uses=6] +define internal i32 @_Z8LoadCharP9LoadState(%14* %S) { + %1 = alloca %14*, align 4 ; [#uses=2] + %x = alloca i8, align 1 ; [#uses=2] + store %14* %S, %14** %1, align 4 + %2 = load %14** %1, align 4 ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %2, i8* %x, i32 1) + %3 = load i8* %x, align 1 ; [#uses=1] + %4 = sext i8 %3 to i32 ; [#uses=1] + ret i32 %4 +} + +; [#uses=1] +define internal void @_Z8LoadCodeP9LoadStateP5Proto(%14* %S, %struct.Proto* %f) { + %1 = alloca %14*, align 4 ; [#uses=5] + %2 = alloca %struct.Proto*, align 4 ; [#uses=4] + %n = alloca i32, align 4 ; [#uses=5] + store %14* %S, %14** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z7LoadIntP9LoadState(%14* %3) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load i32* %n, align 4 ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + %7 = icmp ule i32 %6, 1073741823 ; [#uses=1] + br i1 %7, label %8, label %15 + +; <label>:8 ; preds = %0 + %9 = load %14** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %14* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.lua_State** %10, align 4 ; [#uses=1] + %12 = load i32* %n, align 4 ; [#uses=1] + %13 = mul i32 %12, 4 ; [#uses=1] + %14 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %11, i8* null, i32 0, i32 %13) ; [#uses=1] + br label %20 + +; <label>:15 ; preds = %0 + %16 = load %14** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %14* %16, i32 0, i32 0 ; [#uses=1] + %18 = load %struct.lua_State** %17, align 4 ; [#uses=1] + %19 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %18) ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %15, %8 + %21 = phi i8* [ %14, %8 ], [ %19, %15 ] ; [#uses=1] + %22 = bitcast i8* %21 to i32* ; [#uses=1] + %23 = load %struct.Proto** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 4 ; [#uses=1] + store i32* %22, i32** %24, align 4 + %25 = load i32* %n, align 4 ; [#uses=1] + %26 = load %struct.Proto** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 12 ; [#uses=1] + store i32 %25, i32* %27, align 4 + %28 = load %14** %1, align 4 ; [#uses=1] + %29 = load %struct.Proto** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Proto* %29, i32 0, i32 4 ; [#uses=1] + %31 = load i32** %30, align 4 ; [#uses=1] + %32 = bitcast i32* %31 to i8* ; [#uses=1] + %33 = load i32* %n, align 4 ; [#uses=1] + %34 = mul i32 %33, 4 ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %28, i8* %32, i32 %34) + ret void +} + +; [#uses=1] +define internal void @_Z13LoadConstantsP9LoadStateP5Proto(%14* %S, %struct.Proto* %f) { + %1 = alloca %14*, align 4 ; [#uses=13] + %2 = alloca %struct.Proto*, align 4 ; [#uses=10] + %i = alloca i32, align 4 ; [#uses=20] + %n = alloca i32, align 4 ; [#uses=12] + %o = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %t = alloca i32, align 4 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %14* %S, %14** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z7LoadIntP9LoadState(%14* %3) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load i32* %n, align 4 ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + %7 = icmp ule i32 %6, 357913941 ; [#uses=1] + br i1 %7, label %8, label %15 + +; <label>:8 ; preds = %0 + %9 = load %14** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %14* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.lua_State** %10, align 4 ; [#uses=1] + %12 = load i32* %n, align 4 ; [#uses=1] + %13 = mul i32 %12, 12 ; [#uses=1] + %14 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %11, i8* null, i32 0, i32 %13) ; [#uses=1] + br label %20 + +; <label>:15 ; preds = %0 + %16 = load %14** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %14* %16, i32 0, i32 0 ; [#uses=1] + %18 = load %struct.lua_State** %17, align 4 ; [#uses=1] + %19 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %18) ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %15, %8 + %21 = phi i8* [ %14, %8 ], [ %19, %15 ] ; [#uses=1] + %22 = bitcast i8* %21 to %struct.lua_TValue* ; [#uses=1] + %23 = load %struct.Proto** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 3 ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %24, align 4 + %25 = load i32* %n, align 4 ; [#uses=1] + %26 = load %struct.Proto** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 11 ; [#uses=1] + store i32 %25, i32* %27, align 4 + store i32 0, i32* %i, align 4 + br label %28 + +; <label>:28 ; preds = %39, %20 + %29 = load i32* %i, align 4 ; [#uses=1] + %30 = load i32* %n, align 4 ; [#uses=1] + %31 = icmp slt i32 %29, %30 ; [#uses=1] + br i1 %31, label %32, label %42 + +; <label>:32 ; preds = %28 + %33 = load i32* %i, align 4 ; [#uses=1] + %34 = load %struct.Proto** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Proto* %34, i32 0, i32 3 ; [#uses=1] + %36 = load %struct.lua_TValue** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 %33 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %38, align 4 + br label %39 + +; <label>:39 ; preds = %32 + %40 = load i32* %i, align 4 ; [#uses=1] + %41 = add nsw i32 %40, 1 ; [#uses=1] + store i32 %41, i32* %i, align 4 + br label %28 + +; <label>:42 ; preds = %28 + store i32 0, i32* %i, align 4 + br label %43 + +; <label>:43 ; preds = %94, %42 + %44 = load i32* %i, align 4 ; [#uses=1] + %45 = load i32* %n, align 4 ; [#uses=1] + %46 = icmp slt i32 %44, %45 ; [#uses=1] + br i1 %46, label %47, label %97 + +; <label>:47 ; preds = %43 + %48 = load i32* %i, align 4 ; [#uses=1] + %49 = load %struct.Proto** %2, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.Proto* %49, i32 0, i32 3 ; [#uses=1] + %51 = load %struct.lua_TValue** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 %48 ; [#uses=1] + store %struct.lua_TValue* %52, %struct.lua_TValue** %o, align 4 + %53 = load %14** %1, align 4 ; [#uses=1] + %54 = call i32 @_Z8LoadCharP9LoadState(%14* %53) ; [#uses=1] + store i32 %54, i32* %t, align 4 + %55 = load i32* %t, align 4 ; [#uses=1] + switch i32 %55, label %91 [ + i32 0, label %56 + i32 1, label %59 + i32 3, label %71 + i32 4, label %80 + ] + +; <label>:56 ; preds = %47 + %57 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %58, align 4 + br label %93 + +; <label>:59 ; preds = %47 + %60 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %60, %struct.lua_TValue** %i_o, align 4 + %61 = load %14** %1, align 4 ; [#uses=1] + %62 = call i32 @_Z8LoadCharP9LoadState(%14* %61) ; [#uses=1] + %63 = icmp ne i32 %62, 0 ; [#uses=1] + %64 = zext i1 %63 to i32 ; [#uses=1] + %65 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 0 ; [#uses=1] + %67 = getelementptr inbounds %union.anon* %66, i32 0, i32 0 ; [#uses=1] + %68 = bitcast double* %67 to i32* ; [#uses=1] + store i32 %64, i32* %68, align 4 + %69 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %70, align 4 + br label %93 + +; <label>:71 ; preds = %47 + %72 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %72, %struct.lua_TValue** %i_o1, align 4 + %73 = load %14** %1, align 4 ; [#uses=1] + %74 = call double @_Z10LoadNumberP9LoadState(%14* %73) ; [#uses=1] + %75 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_TValue* %75, i32 0, i32 0 ; [#uses=1] + %77 = getelementptr inbounds %union.anon* %76, i32 0, i32 0 ; [#uses=1] + store double %74, double* %77, align 4 + %78 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %79, align 4 + br label %93 + +; <label>:80 ; preds = %47 + %81 = load %struct.lua_TValue** %o, align 4 ; [#uses=1] + store %struct.lua_TValue* %81, %struct.lua_TValue** %i_o2, align 4 + %82 = load %14** %1, align 4 ; [#uses=1] + %83 = call %union.TString* @_Z10LoadStringP9LoadState(%14* %82) ; [#uses=1] + %84 = bitcast %union.TString* %83 to %union.GCObject* ; [#uses=1] + %85 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 0, i32 0 ; [#uses=1] + %87 = getelementptr inbounds %union.anon* %86, i32 0, i32 0 ; [#uses=1] + %88 = bitcast double* %87 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %84, %union.GCObject** %88, align 4 + %89 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.lua_TValue* %89, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %90, align 4 + br label %93 + +; <label>:91 ; preds = %47 + %92 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %92, i8* getelementptr inbounds ([13 x i8]* @.str6214, i32 0, i32 0)) + br label %93 + +; <label>:93 ; preds = %91, %80, %71, %59, %56 + br label %94 + +; <label>:94 ; preds = %93 + %95 = load i32* %i, align 4 ; [#uses=1] + %96 = add nsw i32 %95, 1 ; [#uses=1] + store i32 %96, i32* %i, align 4 + br label %43 + +; <label>:97 ; preds = %43 + %98 = load %14** %1, align 4 ; [#uses=1] + %99 = call i32 @_Z7LoadIntP9LoadState(%14* %98) ; [#uses=1] + store i32 %99, i32* %n, align 4 + %100 = load i32* %n, align 4 ; [#uses=1] + %101 = add nsw i32 %100, 1 ; [#uses=1] + %102 = icmp ule i32 %101, 1073741823 ; [#uses=1] + br i1 %102, label %103, label %110 + +; <label>:103 ; preds = %97 + %104 = load %14** %1, align 4 ; [#uses=1] + %105 = getelementptr inbounds %14* %104, i32 0, i32 0 ; [#uses=1] + %106 = load %struct.lua_State** %105, align 4 ; [#uses=1] + %107 = load i32* %n, align 4 ; [#uses=1] + %108 = mul i32 %107, 4 ; [#uses=1] + %109 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %106, i8* null, i32 0, i32 %108) ; [#uses=1] + br label %115 + +; <label>:110 ; preds = %97 + %111 = load %14** %1, align 4 ; [#uses=1] + %112 = getelementptr inbounds %14* %111, i32 0, i32 0 ; [#uses=1] + %113 = load %struct.lua_State** %112, align 4 ; [#uses=1] + %114 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %113) ; [#uses=1] + br label %115 + +; <label>:115 ; preds = %110, %103 + %116 = phi i8* [ %109, %103 ], [ %114, %110 ] ; [#uses=1] + %117 = bitcast i8* %116 to %struct.Proto** ; [#uses=1] + %118 = load %struct.Proto** %2, align 4 ; [#uses=1] + %119 = getelementptr inbounds %struct.Proto* %118, i32 0, i32 5 ; [#uses=1] + store %struct.Proto** %117, %struct.Proto*** %119, align 4 + %120 = load i32* %n, align 4 ; [#uses=1] + %121 = load %struct.Proto** %2, align 4 ; [#uses=1] + %122 = getelementptr inbounds %struct.Proto* %121, i32 0, i32 14 ; [#uses=1] + store i32 %120, i32* %122, align 4 + store i32 0, i32* %i, align 4 + br label %123 + +; <label>:123 ; preds = %133, %115 + %124 = load i32* %i, align 4 ; [#uses=1] + %125 = load i32* %n, align 4 ; [#uses=1] + %126 = icmp slt i32 %124, %125 ; [#uses=1] + br i1 %126, label %127, label %136 + +; <label>:127 ; preds = %123 + %128 = load i32* %i, align 4 ; [#uses=1] + %129 = load %struct.Proto** %2, align 4 ; [#uses=1] + %130 = getelementptr inbounds %struct.Proto* %129, i32 0, i32 5 ; [#uses=1] + %131 = load %struct.Proto*** %130, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.Proto** %131, i32 %128 ; [#uses=1] + store %struct.Proto* null, %struct.Proto** %132 + br label %133 + +; <label>:133 ; preds = %127 + %134 = load i32* %i, align 4 ; [#uses=1] + %135 = add nsw i32 %134, 1 ; [#uses=1] + store i32 %135, i32* %i, align 4 + br label %123 + +; <label>:136 ; preds = %123 + store i32 0, i32* %i, align 4 + br label %137 + +; <label>:137 ; preds = %152, %136 + %138 = load i32* %i, align 4 ; [#uses=1] + %139 = load i32* %n, align 4 ; [#uses=1] + %140 = icmp slt i32 %138, %139 ; [#uses=1] + br i1 %140, label %141, label %155 + +; <label>:141 ; preds = %137 + %142 = load %14** %1, align 4 ; [#uses=1] + %143 = load %struct.Proto** %2, align 4 ; [#uses=1] + %144 = getelementptr inbounds %struct.Proto* %143, i32 0, i32 9 ; [#uses=1] + %145 = load %union.TString** %144, align 4 ; [#uses=1] + %146 = call %struct.Proto* @_Z12LoadFunctionP9LoadStateP7TString(%14* %142, %union.TString* %145) ; [#uses=1] + %147 = load i32* %i, align 4 ; [#uses=1] + %148 = load %struct.Proto** %2, align 4 ; [#uses=1] + %149 = getelementptr inbounds %struct.Proto* %148, i32 0, i32 5 ; [#uses=1] + %150 = load %struct.Proto*** %149, align 4 ; [#uses=1] + %151 = getelementptr inbounds %struct.Proto** %150, i32 %147 ; [#uses=1] + store %struct.Proto* %146, %struct.Proto** %151 + br label %152 + +; <label>:152 ; preds = %141 + %153 = load i32* %i, align 4 ; [#uses=1] + %154 = add nsw i32 %153, 1 ; [#uses=1] + store i32 %154, i32* %i, align 4 + br label %137 + +; <label>:155 ; preds = %137 + ret void +} + +; [#uses=1] +define internal void @_Z9LoadDebugP9LoadStateP5Proto(%14* %S, %struct.Proto* %f) { + %1 = alloca %14*, align 4 ; [#uses=15] + %2 = alloca %struct.Proto*, align 4 ; [#uses=14] + %i = alloca i32, align 4 ; [#uses=22] + %n = alloca i32, align 4 ; [#uses=17] + store %14* %S, %14** %1, align 4 + store %struct.Proto* %f, %struct.Proto** %2, align 4 + %3 = load %14** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z7LoadIntP9LoadState(%14* %3) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load i32* %n, align 4 ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + %7 = icmp ule i32 %6, 1073741823 ; [#uses=1] + br i1 %7, label %8, label %15 + +; <label>:8 ; preds = %0 + %9 = load %14** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %14* %9, i32 0, i32 0 ; [#uses=1] + %11 = load %struct.lua_State** %10, align 4 ; [#uses=1] + %12 = load i32* %n, align 4 ; [#uses=1] + %13 = mul i32 %12, 4 ; [#uses=1] + %14 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %11, i8* null, i32 0, i32 %13) ; [#uses=1] + br label %20 + +; <label>:15 ; preds = %0 + %16 = load %14** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %14* %16, i32 0, i32 0 ; [#uses=1] + %18 = load %struct.lua_State** %17, align 4 ; [#uses=1] + %19 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %18) ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %15, %8 + %21 = phi i8* [ %14, %8 ], [ %19, %15 ] ; [#uses=1] + %22 = bitcast i8* %21 to i32* ; [#uses=1] + %23 = load %struct.Proto** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Proto* %23, i32 0, i32 6 ; [#uses=1] + store i32* %22, i32** %24, align 4 + %25 = load i32* %n, align 4 ; [#uses=1] + %26 = load %struct.Proto** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Proto* %26, i32 0, i32 13 ; [#uses=1] + store i32 %25, i32* %27, align 4 + %28 = load %14** %1, align 4 ; [#uses=1] + %29 = load %struct.Proto** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Proto* %29, i32 0, i32 6 ; [#uses=1] + %31 = load i32** %30, align 4 ; [#uses=1] + %32 = bitcast i32* %31 to i8* ; [#uses=1] + %33 = load i32* %n, align 4 ; [#uses=1] + %34 = mul i32 %33, 4 ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %28, i8* %32, i32 %34) + %35 = load %14** %1, align 4 ; [#uses=1] + %36 = call i32 @_Z7LoadIntP9LoadState(%14* %35) ; [#uses=1] + store i32 %36, i32* %n, align 4 + %37 = load i32* %n, align 4 ; [#uses=1] + %38 = add nsw i32 %37, 1 ; [#uses=1] + %39 = icmp ule i32 %38, 357913941 ; [#uses=1] + br i1 %39, label %40, label %47 + +; <label>:40 ; preds = %20 + %41 = load %14** %1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %14* %41, i32 0, i32 0 ; [#uses=1] + %43 = load %struct.lua_State** %42, align 4 ; [#uses=1] + %44 = load i32* %n, align 4 ; [#uses=1] + %45 = mul i32 %44, 12 ; [#uses=1] + %46 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %43, i8* null, i32 0, i32 %45) ; [#uses=1] + br label %52 + +; <label>:47 ; preds = %20 + %48 = load %14** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %14* %48, i32 0, i32 0 ; [#uses=1] + %50 = load %struct.lua_State** %49, align 4 ; [#uses=1] + %51 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %50) ; [#uses=1] + br label %52 + +; <label>:52 ; preds = %47, %40 + %53 = phi i8* [ %46, %40 ], [ %51, %47 ] ; [#uses=1] + %54 = bitcast i8* %53 to %struct.LocVar* ; [#uses=1] + %55 = load %struct.Proto** %2, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.Proto* %55, i32 0, i32 7 ; [#uses=1] + store %struct.LocVar* %54, %struct.LocVar** %56, align 4 + %57 = load i32* %n, align 4 ; [#uses=1] + %58 = load %struct.Proto** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Proto* %58, i32 0, i32 15 ; [#uses=1] + store i32 %57, i32* %59, align 4 + store i32 0, i32* %i, align 4 + br label %60 + +; <label>:60 ; preds = %71, %52 + %61 = load i32* %i, align 4 ; [#uses=1] + %62 = load i32* %n, align 4 ; [#uses=1] + %63 = icmp slt i32 %61, %62 ; [#uses=1] + br i1 %63, label %64, label %74 + +; <label>:64 ; preds = %60 + %65 = load i32* %i, align 4 ; [#uses=1] + %66 = load %struct.Proto** %2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.Proto* %66, i32 0, i32 7 ; [#uses=1] + %68 = load %struct.LocVar** %67, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.LocVar* %68, i32 %65 ; [#uses=1] + %70 = getelementptr inbounds %struct.LocVar* %69, i32 0, i32 0 ; [#uses=1] + store %union.TString* null, %union.TString** %70, align 4 + br label %71 + +; <label>:71 ; preds = %64 + %72 = load i32* %i, align 4 ; [#uses=1] + %73 = add nsw i32 %72, 1 ; [#uses=1] + store i32 %73, i32* %i, align 4 + br label %60 + +; <label>:74 ; preds = %60 + store i32 0, i32* %i, align 4 + br label %75 + +; <label>:75 ; preds = %104, %74 + %76 = load i32* %i, align 4 ; [#uses=1] + %77 = load i32* %n, align 4 ; [#uses=1] + %78 = icmp slt i32 %76, %77 ; [#uses=1] + br i1 %78, label %79, label %107 + +; <label>:79 ; preds = %75 + %80 = load %14** %1, align 4 ; [#uses=1] + %81 = call %union.TString* @_Z10LoadStringP9LoadState(%14* %80) ; [#uses=1] + %82 = load i32* %i, align 4 ; [#uses=1] + %83 = load %struct.Proto** %2, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.Proto* %83, i32 0, i32 7 ; [#uses=1] + %85 = load %struct.LocVar** %84, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.LocVar* %85, i32 %82 ; [#uses=1] + %87 = getelementptr inbounds %struct.LocVar* %86, i32 0, i32 0 ; [#uses=1] + store %union.TString* %81, %union.TString** %87, align 4 + %88 = load %14** %1, align 4 ; [#uses=1] + %89 = call i32 @_Z7LoadIntP9LoadState(%14* %88) ; [#uses=1] + %90 = load i32* %i, align 4 ; [#uses=1] + %91 = load %struct.Proto** %2, align 4 ; [#uses=1] + %92 = getelementptr inbounds %struct.Proto* %91, i32 0, i32 7 ; [#uses=1] + %93 = load %struct.LocVar** %92, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.LocVar* %93, i32 %90 ; [#uses=1] + %95 = getelementptr inbounds %struct.LocVar* %94, i32 0, i32 1 ; [#uses=1] + store i32 %89, i32* %95, align 4 + %96 = load %14** %1, align 4 ; [#uses=1] + %97 = call i32 @_Z7LoadIntP9LoadState(%14* %96) ; [#uses=1] + %98 = load i32* %i, align 4 ; [#uses=1] + %99 = load %struct.Proto** %2, align 4 ; [#uses=1] + %100 = getelementptr inbounds %struct.Proto* %99, i32 0, i32 7 ; [#uses=1] + %101 = load %struct.LocVar** %100, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.LocVar* %101, i32 %98 ; [#uses=1] + %103 = getelementptr inbounds %struct.LocVar* %102, i32 0, i32 2 ; [#uses=1] + store i32 %97, i32* %103, align 4 + br label %104 + +; <label>:104 ; preds = %79 + %105 = load i32* %i, align 4 ; [#uses=1] + %106 = add nsw i32 %105, 1 ; [#uses=1] + store i32 %106, i32* %i, align 4 + br label %75 + +; <label>:107 ; preds = %75 + %108 = load %14** %1, align 4 ; [#uses=1] + %109 = call i32 @_Z7LoadIntP9LoadState(%14* %108) ; [#uses=1] + store i32 %109, i32* %n, align 4 + %110 = load i32* %n, align 4 ; [#uses=1] + %111 = add nsw i32 %110, 1 ; [#uses=1] + %112 = icmp ule i32 %111, 1073741823 ; [#uses=1] + br i1 %112, label %113, label %120 + +; <label>:113 ; preds = %107 + %114 = load %14** %1, align 4 ; [#uses=1] + %115 = getelementptr inbounds %14* %114, i32 0, i32 0 ; [#uses=1] + %116 = load %struct.lua_State** %115, align 4 ; [#uses=1] + %117 = load i32* %n, align 4 ; [#uses=1] + %118 = mul i32 %117, 4 ; [#uses=1] + %119 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %116, i8* null, i32 0, i32 %118) ; [#uses=1] + br label %125 + +; <label>:120 ; preds = %107 + %121 = load %14** %1, align 4 ; [#uses=1] + %122 = getelementptr inbounds %14* %121, i32 0, i32 0 ; [#uses=1] + %123 = load %struct.lua_State** %122, align 4 ; [#uses=1] + %124 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %123) ; [#uses=1] + br label %125 + +; <label>:125 ; preds = %120, %113 + %126 = phi i8* [ %119, %113 ], [ %124, %120 ] ; [#uses=1] + %127 = bitcast i8* %126 to %union.TString** ; [#uses=1] + %128 = load %struct.Proto** %2, align 4 ; [#uses=1] + %129 = getelementptr inbounds %struct.Proto* %128, i32 0, i32 8 ; [#uses=1] + store %union.TString** %127, %union.TString*** %129, align 4 + %130 = load i32* %n, align 4 ; [#uses=1] + %131 = load %struct.Proto** %2, align 4 ; [#uses=1] + %132 = getelementptr inbounds %struct.Proto* %131, i32 0, i32 10 ; [#uses=1] + store i32 %130, i32* %132, align 4 + store i32 0, i32* %i, align 4 + br label %133 + +; <label>:133 ; preds = %143, %125 + %134 = load i32* %i, align 4 ; [#uses=1] + %135 = load i32* %n, align 4 ; [#uses=1] + %136 = icmp slt i32 %134, %135 ; [#uses=1] + br i1 %136, label %137, label %146 + +; <label>:137 ; preds = %133 + %138 = load i32* %i, align 4 ; [#uses=1] + %139 = load %struct.Proto** %2, align 4 ; [#uses=1] + %140 = getelementptr inbounds %struct.Proto* %139, i32 0, i32 8 ; [#uses=1] + %141 = load %union.TString*** %140, align 4 ; [#uses=1] + %142 = getelementptr inbounds %union.TString** %141, i32 %138 ; [#uses=1] + store %union.TString* null, %union.TString** %142 + br label %143 + +; <label>:143 ; preds = %137 + %144 = load i32* %i, align 4 ; [#uses=1] + %145 = add nsw i32 %144, 1 ; [#uses=1] + store i32 %145, i32* %i, align 4 + br label %133 + +; <label>:146 ; preds = %133 + store i32 0, i32* %i, align 4 + br label %147 + +; <label>:147 ; preds = %159, %146 + %148 = load i32* %i, align 4 ; [#uses=1] + %149 = load i32* %n, align 4 ; [#uses=1] + %150 = icmp slt i32 %148, %149 ; [#uses=1] + br i1 %150, label %151, label %162 + +; <label>:151 ; preds = %147 + %152 = load %14** %1, align 4 ; [#uses=1] + %153 = call %union.TString* @_Z10LoadStringP9LoadState(%14* %152) ; [#uses=1] + %154 = load i32* %i, align 4 ; [#uses=1] + %155 = load %struct.Proto** %2, align 4 ; [#uses=1] + %156 = getelementptr inbounds %struct.Proto* %155, i32 0, i32 8 ; [#uses=1] + %157 = load %union.TString*** %156, align 4 ; [#uses=1] + %158 = getelementptr inbounds %union.TString** %157, i32 %154 ; [#uses=1] + store %union.TString* %153, %union.TString** %158 + br label %159 + +; <label>:159 ; preds = %151 + %160 = load i32* %i, align 4 ; [#uses=1] + %161 = add nsw i32 %160, 1 ; [#uses=1] + store i32 %161, i32* %i, align 4 + br label %147 + +; <label>:162 ; preds = %147 + ret void +} + +; [#uses=8] +define internal void @_Z9LoadBlockP9LoadStatePvj(%14* %S, i8* %b, i32 %size) { + %1 = alloca %14*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %r = alloca i32, align 4 ; [#uses=2] + store %14* %S, %14** %1, align 4 + store i8* %b, i8** %2, align 4 + store i32 %size, i32* %3, align 4 + %4 = load %14** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %14* %4, i32 0, i32 1 ; [#uses=1] + %6 = load %struct.Zio** %5, align 4 ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call i32 @_Z9luaZ_readP3ZioPvj(%struct.Zio* %6, i8* %7, i32 %8) ; [#uses=1] + store i32 %9, i32* %r, align 4 + %10 = load i32* %r, align 4 ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %0 + %13 = load %14** %1, align 4 ; [#uses=1] + call void @_Z5errorP9LoadStatePKc(%14* %13, i8* getelementptr inbounds ([15 x i8]* @.str5213, i32 0, i32 0)) + br label %14 + +; <label>:14 ; preds = %12, %0 + ret void +} + +; [#uses=1] +define internal double @_Z10LoadNumberP9LoadState(%14* %S) { + %1 = alloca %14*, align 4 ; [#uses=2] + %x = alloca double, align 8 ; [#uses=2] + store %14* %S, %14** %1, align 4 + %2 = load %14** %1, align 4 ; [#uses=1] + %3 = bitcast double* %x to i8* ; [#uses=1] + call void @_Z9LoadBlockP9LoadStatePvj(%14* %2, i8* %3, i32 8) + %4 = load double* %x, align 8 ; [#uses=1] + ret double %4 +} + +; [#uses=9] +define hidden %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %obj, %struct.lua_TValue* %n) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %num = alloca double, align 8 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_TValue* %obj, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %n, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 3 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %1 + br label %37 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %13, 4 ; [#uses=1] + br i1 %14, label %15, label %36 + +; <label>:15 ; preds = %10 + %16 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 0 ; [#uses=1] + %18 = getelementptr inbounds %union.anon* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast double* %18 to %union.GCObject** ; [#uses=1] + %20 = load %union.GCObject** %19, align 4 ; [#uses=1] + %21 = getelementptr inbounds %union.GCObject* %20, i32 0, i32 0 ; [#uses=1] + %22 = bitcast %struct.lua_State* %21 to %union.TString* ; [#uses=1] + %23 = getelementptr inbounds %union.TString* %22, i32 1 ; [#uses=1] + %24 = bitcast %union.TString* %23 to i8* ; [#uses=1] + %25 = call i32 @_Z10luaO_str2dPKcPd(i8* %24, double* %num) ; [#uses=1] + %26 = icmp ne i32 %25, 0 ; [#uses=1] + br i1 %26, label %27, label %36 + +; <label>:27 ; preds = %15 + %28 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %28, %struct.lua_TValue** %i_o, align 4 + %29 = load double* %num, align 8 ; [#uses=1] + %30 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 0, i32 0 ; [#uses=1] + %32 = getelementptr inbounds %union.anon* %31, i32 0, i32 0 ; [#uses=1] + store double %29, double* %32, align 4 + %33 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %34, align 4 + %35 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %35, %struct.lua_TValue** %1 + br label %37 + +; <label>:36 ; preds = %15, %10 + store %struct.lua_TValue* null, %struct.lua_TValue** %1 + br label %37 + +; <label>:37 ; preds = %36, %27, %8 + %38 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %38 +} + +; [#uses=5] +define hidden i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %L, %struct.lua_TValue* %obj) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %s = alloca [32 x i8], align 1 ; [#uses=3] + %n = alloca double, align 8 ; [#uses=2] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %obj, %struct.lua_TValue** %3, align 4 + %4 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_TValue* %4, i32 0, i32 1 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 3 ; [#uses=1] + br i1 %7, label %9, label %8 + +; <label>:8 ; preds = %0 + store i32 0, i32* %1 + br label %30 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = load double* %12, align 4 ; [#uses=1] + store double %13, double* %n, align 8 + %14 = getelementptr inbounds [32 x i8]* %s, i32 0, i32 0 ; [#uses=1] + %15 = load double* %n, align 8 ; [#uses=1] + %16 = call i32 (i8*, i8*, ...)* @sprintf(i8* %14, i8* getelementptr inbounds ([6 x i8]* @.str220, i32 0, i32 0), double %15) ; [#uses=0] + %17 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %17, %struct.lua_TValue** %i_o, align 4 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds [32 x i8]* %s, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds [32 x i8]* %s, i32 0, i32 0 ; [#uses=1] + %21 = call i32 @strlen(i8* %20) ; [#uses=1] + %22 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %18, i8* %19, i32 %21) ; [#uses=1] + %23 = bitcast %union.TString* %22 to %union.GCObject* ; [#uses=1] + %24 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 0 ; [#uses=1] + %26 = getelementptr inbounds %union.anon* %25, i32 0, i32 0 ; [#uses=1] + %27 = bitcast double* %26 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %23, %union.GCObject** %27, align 4 + %28 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %29, align 4 + store i32 1, i32* %1 + br label %30 + +; <label>:30 ; preds = %9, %8 + %31 = load i32* %1 ; [#uses=1] + ret i32 %31 +} + +; [#uses=5] +define hidden void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %L, %struct.lua_TValue* %t, %struct.lua_TValue* %key, %struct.lua_TValue* %val) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %loop = alloca i32, align 4 ; [#uses=4] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %h = alloca %struct.Table*, align 4 ; [#uses=5] + %res = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %t, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %val, %struct.lua_TValue** %4, align 4 + store i32 0, i32* %loop, align 4 + br label %5 + +; <label>:5 ; preds = %99, %0 + %6 = load i32* %loop, align 4 ; [#uses=1] + %7 = icmp slt i32 %6, 100 ; [#uses=1] + br i1 %7, label %8, label %102 + +; <label>:8 ; preds = %5 + %9 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 5 ; [#uses=1] + br i1 %12, label %13, label %75 + +; <label>:13 ; preds = %8 + %14 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast double* %16 to %union.GCObject** ; [#uses=1] + %18 = load %union.GCObject** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.GCObject* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.lua_State* %19 to %struct.Table* ; [#uses=1] + store %struct.Table* %20, %struct.Table** %h, align 4 + %21 = load %struct.Table** %h, align 4 ; [#uses=1] + %22 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %23 = call %struct.lua_TValue* @_Z8luaH_getP5TablePK10lua_TValue(%struct.Table* %21, %struct.lua_TValue* %22) ; [#uses=1] + store %struct.lua_TValue* %23, %struct.lua_TValue** %res, align 4 + %24 = load %struct.lua_TValue** %res, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 1 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = icmp eq i32 %26, 0 ; [#uses=1] + br i1 %27, label %28, label %60 + +; <label>:28 ; preds = %13 + %29 = load %struct.Table** %h, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Table* %29, i32 0, i32 5 ; [#uses=1] + %31 = load %struct.Table** %30, align 4 ; [#uses=1] + %32 = icmp eq %struct.Table* %31, null ; [#uses=1] + br i1 %32, label %33, label %34 + +; <label>:33 ; preds = %28 + br label %57 + +; <label>:34 ; preds = %28 + %35 = load %struct.Table** %h, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.Table* %35, i32 0, i32 5 ; [#uses=1] + %37 = load %struct.Table** %36, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.Table* %37, i32 0, i32 3 ; [#uses=1] + %39 = load i8* %38, align 1 ; [#uses=1] + %40 = zext i8 %39 to i32 ; [#uses=1] + %41 = and i32 %40, 1 ; [#uses=1] + %42 = icmp ne i32 %41, 0 ; [#uses=1] + br i1 %42, label %43, label %44 + +; <label>:43 ; preds = %34 + br label %55 + +; <label>:44 ; preds = %34 + %45 = load %struct.Table** %h, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.Table* %45, i32 0, i32 5 ; [#uses=1] + %47 = load %struct.Table** %46, align 4 ; [#uses=1] + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_State* %48, i32 0, i32 6 ; [#uses=1] + %50 = load %struct.global_State** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.global_State* %50, i32 0, i32 24 ; [#uses=1] + %52 = getelementptr inbounds [17 x %union.TString*]* %51, i32 0, i32 0 ; [#uses=1] + %53 = load %union.TString** %52 ; [#uses=1] + %54 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %47, i32 0, %union.TString* %53) ; [#uses=1] + br label %55 + +; <label>:55 ; preds = %44, %43 + %56 = phi %struct.lua_TValue* [ null, %43 ], [ %54, %44 ] ; [#uses=1] + br label %57 + +; <label>:57 ; preds = %55, %33 + %58 = phi %struct.lua_TValue* [ null, %33 ], [ %56, %55 ] ; [#uses=2] + store %struct.lua_TValue* %58, %struct.lua_TValue** %tm, align 4 + %59 = icmp eq %struct.lua_TValue* %58, null ; [#uses=1] + br i1 %59, label %60, label %74 + +; <label>:60 ; preds = %57, %13 + %61 = load %struct.lua_TValue** %res, align 4 ; [#uses=1] + store %struct.lua_TValue* %61, %struct.lua_TValue** %o2, align 4 + %62 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %62, %struct.lua_TValue** %o1, align 4 + %63 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.lua_TValue* %63, i32 0, i32 0 ; [#uses=1] + %65 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 0, i32 0 ; [#uses=1] + %67 = bitcast %union.anon* %64 to i8* ; [#uses=1] + %68 = bitcast %union.anon* %66 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %67, i8* %68, i32 8, i32 4, i1 false) + %69 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_TValue* %69, i32 0, i32 1 ; [#uses=1] + %71 = load i32* %70, align 4 ; [#uses=1] + %72 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %72, i32 0, i32 1 ; [#uses=1] + store i32 %71, i32* %73, align 4 + br label %104 + +; <label>:74 ; preds = %57 + br label %86 + +; <label>:75 ; preds = %8 + %76 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %77 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %78 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %76, %struct.lua_TValue* %77, i32 0) ; [#uses=2] + store %struct.lua_TValue* %78, %struct.lua_TValue** %tm, align 4 + %79 = getelementptr inbounds %struct.lua_TValue* %78, i32 0, i32 1 ; [#uses=1] + %80 = load i32* %79, align 4 ; [#uses=1] + %81 = icmp eq i32 %80, 0 ; [#uses=1] + br i1 %81, label %82, label %85 + +; <label>:82 ; preds = %75 + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %84 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %83, %struct.lua_TValue* %84, i8* getelementptr inbounds ([6 x i8]* @.str1221, i32 0, i32 0)) + br label %85 + +; <label>:85 ; preds = %82, %75 + br label %86 + +; <label>:86 ; preds = %85, %74 + %87 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 0, i32 1 ; [#uses=1] + %89 = load i32* %88, align 4 ; [#uses=1] + %90 = icmp eq i32 %89, 6 ; [#uses=1] + br i1 %90, label %91, label %97 + +; <label>:91 ; preds = %86 + %92 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %93 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %94 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %95 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %96 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + call void @_Z9callTMresP9lua_StateP10lua_TValuePKS1_S4_S4_(%struct.lua_State* %92, %struct.lua_TValue* %93, %struct.lua_TValue* %94, %struct.lua_TValue* %95, %struct.lua_TValue* %96) + br label %104 + +; <label>:97 ; preds = %86 + %98 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + store %struct.lua_TValue* %98, %struct.lua_TValue** %2, align 4 + br label %99 + +; <label>:99 ; preds = %97 + %100 = load i32* %loop, align 4 ; [#uses=1] + %101 = add nsw i32 %100, 1 ; [#uses=1] + store i32 %101, i32* %loop, align 4 + br label %5 + +; <label>:102 ; preds = %5 + %103 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %103, i8* getelementptr inbounds ([17 x i8]* @.str2222, i32 0, i32 0)) + br label %104 + +; <label>:104 ; preds = %102, %91, %60 + ret void +} + +; [#uses=4] +define internal void @_Z9callTMresP9lua_StateP10lua_TValuePKS1_S4_S4_(%struct.lua_State* %L, %struct.lua_TValue* %res, %struct.lua_TValue* %f, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=14] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %5 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %result = alloca i32, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o23 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o14 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o25 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o16 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %res, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %f, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %4, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %5, align 4 + %6 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %7 = bitcast %struct.lua_TValue* %6 to i8* ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_State* %8, i32 0, i32 10 ; [#uses=1] + %10 = load %struct.lua_TValue** %9, align 4 ; [#uses=1] + %11 = bitcast %struct.lua_TValue* %10 to i8* ; [#uses=1] + %12 = ptrtoint i8* %7 to i32 ; [#uses=1] + %13 = ptrtoint i8* %11 to i32 ; [#uses=1] + %14 = sub i32 %12, %13 ; [#uses=1] + store i32 %14, i32* %result, align 4 + %15 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %15, %struct.lua_TValue** %o2, align 4 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_State* %16, i32 0, i32 4 ; [#uses=1] + %18 = load %struct.lua_TValue** %17, align 4 ; [#uses=1] + store %struct.lua_TValue* %18, %struct.lua_TValue** %o1, align 4 + %19 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 0 ; [#uses=1] + %21 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = bitcast %union.anon* %20 to i8* ; [#uses=1] + %24 = bitcast %union.anon* %22 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %24, i32 8, i32 4, i1 false) + %25 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 1 ; [#uses=1] + store i32 %27, i32* %29, align 4 + %30 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %30, %struct.lua_TValue** %o21, align 4 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_State* %31, i32 0, i32 4 ; [#uses=1] + %33 = load %struct.lua_TValue** %32, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_TValue* %33, i32 1 ; [#uses=1] + store %struct.lua_TValue* %34, %struct.lua_TValue** %o12, align 4 + %35 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 0 ; [#uses=1] + %37 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.lua_TValue* %37, i32 0, i32 0 ; [#uses=1] + %39 = bitcast %union.anon* %36 to i8* ; [#uses=1] + %40 = bitcast %union.anon* %38 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %39, i8* %40, i32 8, i32 4, i1 false) + %41 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %41, i32 0, i32 1 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + %44 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 1 ; [#uses=1] + store i32 %43, i32* %45, align 4 + %46 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + store %struct.lua_TValue* %46, %struct.lua_TValue** %o23, align 4 + %47 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 4 ; [#uses=1] + %49 = load %struct.lua_TValue** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 2 ; [#uses=1] + store %struct.lua_TValue* %50, %struct.lua_TValue** %o14, align 4 + %51 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 0, i32 0 ; [#uses=1] + %53 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.lua_TValue* %53, i32 0, i32 0 ; [#uses=1] + %55 = bitcast %union.anon* %52 to i8* ; [#uses=1] + %56 = bitcast %union.anon* %54 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %55, i8* %56, i32 8, i32 4, i1 false) + %57 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.lua_TValue* %57, i32 0, i32 1 ; [#uses=1] + %59 = load i32* %58, align 4 ; [#uses=1] + %60 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 1 ; [#uses=1] + store i32 %59, i32* %61, align 4 + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_State* %62, i32 0, i32 9 ; [#uses=1] + %64 = load %struct.lua_TValue** %63, align 4 ; [#uses=1] + %65 = bitcast %struct.lua_TValue* %64 to i8* ; [#uses=1] + %66 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_State* %66, i32 0, i32 4 ; [#uses=1] + %68 = load %struct.lua_TValue** %67, align 4 ; [#uses=1] + %69 = bitcast %struct.lua_TValue* %68 to i8* ; [#uses=1] + %70 = ptrtoint i8* %65 to i32 ; [#uses=1] + %71 = ptrtoint i8* %69 to i32 ; [#uses=1] + %72 = sub i32 %70, %71 ; [#uses=1] + %73 = icmp sle i32 %72, 36 ; [#uses=1] + br i1 %73, label %74, label %76 + +; <label>:74 ; preds = %0 + %75 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %75, i32 3) + br label %77 + +; <label>:76 ; preds = %0 + br label %77 + +; <label>:77 ; preds = %76, %74 + %78 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_State* %78, i32 0, i32 4 ; [#uses=2] + %80 = load %struct.lua_TValue** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 3 ; [#uses=1] + store %struct.lua_TValue* %81, %struct.lua_TValue** %79, align 4 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_State* %83, i32 0, i32 4 ; [#uses=1] + %85 = load %struct.lua_TValue** %84, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_TValue* %85, i32 -3 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %82, %struct.lua_TValue* %86, i32 1) + %87 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_State* %87, i32 0, i32 10 ; [#uses=1] + %89 = load %struct.lua_TValue** %88, align 4 ; [#uses=1] + %90 = bitcast %struct.lua_TValue* %89 to i8* ; [#uses=1] + %91 = load i32* %result, align 4 ; [#uses=1] + %92 = getelementptr inbounds i8* %90, i32 %91 ; [#uses=1] + %93 = bitcast i8* %92 to %struct.lua_TValue* ; [#uses=1] + store %struct.lua_TValue* %93, %struct.lua_TValue** %2, align 4 + %94 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.lua_State* %94, i32 0, i32 4 ; [#uses=2] + %96 = load %struct.lua_TValue** %95, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_TValue* %96, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %97, %struct.lua_TValue** %95, align 4 + %98 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_State* %98, i32 0, i32 4 ; [#uses=1] + %100 = load %struct.lua_TValue** %99, align 4 ; [#uses=1] + store %struct.lua_TValue* %100, %struct.lua_TValue** %o25, align 4 + %101 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %101, %struct.lua_TValue** %o16, align 4 + %102 = load %struct.lua_TValue** %o16, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.lua_TValue* %102, i32 0, i32 0 ; [#uses=1] + %104 = load %struct.lua_TValue** %o25, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_TValue* %104, i32 0, i32 0 ; [#uses=1] + %106 = bitcast %union.anon* %103 to i8* ; [#uses=1] + %107 = bitcast %union.anon* %105 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %106, i8* %107, i32 8, i32 4, i1 false) + %108 = load %struct.lua_TValue** %o25, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_TValue* %108, i32 0, i32 1 ; [#uses=1] + %110 = load i32* %109, align 4 ; [#uses=1] + %111 = load %struct.lua_TValue** %o16, align 4 ; [#uses=1] + %112 = getelementptr inbounds %struct.lua_TValue* %111, i32 0, i32 1 ; [#uses=1] + store i32 %110, i32* %112, align 4 + ret void +} + +; [#uses=4] +define hidden void @_Z13luaV_settableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %L, %struct.lua_TValue* %t, %struct.lua_TValue* %key, %struct.lua_TValue* %val) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %loop = alloca i32, align 4 ; [#uses=4] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %h = alloca %struct.Table*, align 4 ; [#uses=7] + %oldval = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %t, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %key, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %val, %struct.lua_TValue** %4, align 4 + store i32 0, i32* %loop, align 4 + br label %5 + +; <label>:5 ; preds = %131, %0 + %6 = load i32* %loop, align 4 ; [#uses=1] + %7 = icmp slt i32 %6, 100 ; [#uses=1] + br i1 %7, label %8, label %134 + +; <label>:8 ; preds = %5 + %9 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 5 ; [#uses=1] + br i1 %12, label %13, label %107 + +; <label>:13 ; preds = %8 + %14 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast double* %16 to %union.GCObject** ; [#uses=1] + %18 = load %union.GCObject** %17, align 4 ; [#uses=1] + %19 = getelementptr inbounds %union.GCObject* %18, i32 0, i32 0 ; [#uses=1] + %20 = bitcast %struct.lua_State* %19 to %struct.Table* ; [#uses=1] + store %struct.Table* %20, %struct.Table** %h, align 4 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load %struct.Table** %h, align 4 ; [#uses=1] + %23 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %24 = call %struct.lua_TValue* @_Z8luaH_setP9lua_StateP5TablePK10lua_TValue(%struct.lua_State* %21, %struct.Table* %22, %struct.lua_TValue* %23) ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %oldval, align 4 + %25 = load %struct.lua_TValue** %oldval, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_TValue* %25, i32 0, i32 1 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + %28 = icmp eq i32 %27, 0 ; [#uses=1] + br i1 %28, label %29, label %61 + +; <label>:29 ; preds = %13 + %30 = load %struct.Table** %h, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.Table* %30, i32 0, i32 5 ; [#uses=1] + %32 = load %struct.Table** %31, align 4 ; [#uses=1] + %33 = icmp eq %struct.Table* %32, null ; [#uses=1] + br i1 %33, label %34, label %35 + +; <label>:34 ; preds = %29 + br label %58 + +; <label>:35 ; preds = %29 + %36 = load %struct.Table** %h, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.Table* %36, i32 0, i32 5 ; [#uses=1] + %38 = load %struct.Table** %37, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.Table* %38, i32 0, i32 3 ; [#uses=1] + %40 = load i8* %39, align 1 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = and i32 %41, 2 ; [#uses=1] + %43 = icmp ne i32 %42, 0 ; [#uses=1] + br i1 %43, label %44, label %45 + +; <label>:44 ; preds = %35 + br label %56 + +; <label>:45 ; preds = %35 + %46 = load %struct.Table** %h, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.Table* %46, i32 0, i32 5 ; [#uses=1] + %48 = load %struct.Table** %47, align 4 ; [#uses=1] + %49 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_State* %49, i32 0, i32 6 ; [#uses=1] + %51 = load %struct.global_State** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.global_State* %51, i32 0, i32 24 ; [#uses=1] + %53 = getelementptr inbounds [17 x %union.TString*]* %52, i32 0, i32 1 ; [#uses=1] + %54 = load %union.TString** %53 ; [#uses=1] + %55 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %48, i32 1, %union.TString* %54) ; [#uses=1] + br label %56 + +; <label>:56 ; preds = %45, %44 + %57 = phi %struct.lua_TValue* [ null, %44 ], [ %55, %45 ] ; [#uses=1] + br label %58 + +; <label>:58 ; preds = %56, %34 + %59 = phi %struct.lua_TValue* [ null, %34 ], [ %57, %56 ] ; [#uses=2] + store %struct.lua_TValue* %59, %struct.lua_TValue** %tm, align 4 + %60 = icmp eq %struct.lua_TValue* %59, null ; [#uses=1] + br i1 %60, label %61, label %106 + +; <label>:61 ; preds = %58, %13 + %62 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %62, %struct.lua_TValue** %o2, align 4 + %63 = load %struct.lua_TValue** %oldval, align 4 ; [#uses=1] + store %struct.lua_TValue* %63, %struct.lua_TValue** %o1, align 4 + %64 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_TValue* %64, i32 0, i32 0 ; [#uses=1] + %66 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_TValue* %66, i32 0, i32 0 ; [#uses=1] + %68 = bitcast %union.anon* %65 to i8* ; [#uses=1] + %69 = bitcast %union.anon* %67 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %68, i8* %69, i32 8, i32 4, i1 false) + %70 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.lua_TValue* %70, i32 0, i32 1 ; [#uses=1] + %72 = load i32* %71, align 4 ; [#uses=1] + %73 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 1 ; [#uses=1] + store i32 %72, i32* %74, align 4 + %75 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %76 = getelementptr inbounds %struct.lua_TValue* %75, i32 0, i32 1 ; [#uses=1] + %77 = load i32* %76, align 4 ; [#uses=1] + %78 = icmp sge i32 %77, 4 ; [#uses=1] + br i1 %78, label %79, label %105 + +; <label>:79 ; preds = %61 + %80 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 0, i32 0 ; [#uses=1] + %82 = getelementptr inbounds %union.anon* %81, i32 0, i32 0 ; [#uses=1] + %83 = bitcast double* %82 to %union.GCObject** ; [#uses=1] + %84 = load %union.GCObject** %83, align 4 ; [#uses=1] + %85 = getelementptr inbounds %union.GCObject* %84, i32 0, i32 0 ; [#uses=1] + %86 = bitcast %struct.lua_State* %85 to %struct.GCheader* ; [#uses=1] + %87 = getelementptr inbounds %struct.GCheader* %86, i32 0, i32 2 ; [#uses=1] + %88 = load i8* %87, align 1 ; [#uses=1] + %89 = zext i8 %88 to i32 ; [#uses=1] + %90 = and i32 %89, 3 ; [#uses=1] + %91 = icmp ne i32 %90, 0 ; [#uses=1] + br i1 %91, label %92, label %105 + +; <label>:92 ; preds = %79 + %93 = load %struct.Table** %h, align 4 ; [#uses=1] + %94 = bitcast %struct.Table* %93 to %union.GCObject* ; [#uses=1] + %95 = getelementptr inbounds %union.GCObject* %94, i32 0, i32 0 ; [#uses=1] + %96 = bitcast %struct.lua_State* %95 to %struct.GCheader* ; [#uses=1] + %97 = getelementptr inbounds %struct.GCheader* %96, i32 0, i32 2 ; [#uses=1] + %98 = load i8* %97, align 1 ; [#uses=1] + %99 = zext i8 %98 to i32 ; [#uses=1] + %100 = and i32 %99, 4 ; [#uses=1] + %101 = icmp ne i32 %100, 0 ; [#uses=1] + br i1 %101, label %102, label %105 + +; <label>:102 ; preds = %92 + %103 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %104 = load %struct.Table** %h, align 4 ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %103, %struct.Table* %104) + br label %105 + +; <label>:105 ; preds = %102, %92, %79, %61 + br label %136 + +; <label>:106 ; preds = %58 + br label %118 + +; <label>:107 ; preds = %8 + %108 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %109 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %110 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %108, %struct.lua_TValue* %109, i32 1) ; [#uses=2] + store %struct.lua_TValue* %110, %struct.lua_TValue** %tm, align 4 + %111 = getelementptr inbounds %struct.lua_TValue* %110, i32 0, i32 1 ; [#uses=1] + %112 = load i32* %111, align 4 ; [#uses=1] + %113 = icmp eq i32 %112, 0 ; [#uses=1] + br i1 %113, label %114, label %117 + +; <label>:114 ; preds = %107 + %115 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %116 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %115, %struct.lua_TValue* %116, i8* getelementptr inbounds ([6 x i8]* @.str1221, i32 0, i32 0)) + br label %117 + +; <label>:117 ; preds = %114, %107 + br label %118 + +; <label>:118 ; preds = %117, %106 + %119 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_TValue* %119, i32 0, i32 1 ; [#uses=1] + %121 = load i32* %120, align 4 ; [#uses=1] + %122 = icmp eq i32 %121, 6 ; [#uses=1] + br i1 %122, label %123, label %129 + +; <label>:123 ; preds = %118 + %124 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %125 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %126 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %127 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %128 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z6callTMP9lua_StatePK10lua_TValueS3_S3_S3_(%struct.lua_State* %124, %struct.lua_TValue* %125, %struct.lua_TValue* %126, %struct.lua_TValue* %127, %struct.lua_TValue* %128) + br label %136 + +; <label>:129 ; preds = %118 + %130 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + store %struct.lua_TValue* %130, %struct.lua_TValue** %2, align 4 + br label %131 + +; <label>:131 ; preds = %129 + %132 = load i32* %loop, align 4 ; [#uses=1] + %133 = add nsw i32 %132, 1 ; [#uses=1] + store i32 %133, i32* %loop, align 4 + br label %5 + +; <label>:134 ; preds = %5 + %135 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %135, i8* getelementptr inbounds ([17 x i8]* @.str3223, i32 0, i32 0)) + br label %136 + +; <label>:136 ; preds = %134, %123, %105 + ret void +} + +; [#uses=1] +define internal void @_Z6callTMP9lua_StatePK10lua_TValueS3_S3_S3_(%struct.lua_State* %L, %struct.lua_TValue* %f, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2, %struct.lua_TValue* %p3) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %5 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o23 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o14 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o25 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o16 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %f, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %4, align 4 + store %struct.lua_TValue* %p3, %struct.lua_TValue** %5, align 4 + %6 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %6, %struct.lua_TValue** %o2, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 4 ; [#uses=1] + %9 = load %struct.lua_TValue** %8, align 4 ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %o1, align 4 + %10 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast %union.anon* %11 to i8* ; [#uses=1] + %15 = bitcast %union.anon* %13 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %14, i8* %15, i32 8, i32 4, i1 false) + %16 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_TValue* %16, i32 0, i32 1 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_TValue* %19, i32 0, i32 1 ; [#uses=1] + store i32 %18, i32* %20, align 4 + %21 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + store %struct.lua_TValue* %21, %struct.lua_TValue** %o21, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 4 ; [#uses=1] + %24 = load %struct.lua_TValue** %23, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 1 ; [#uses=1] + store %struct.lua_TValue* %25, %struct.lua_TValue** %o12, align 4 + %26 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 0 ; [#uses=1] + %30 = bitcast %union.anon* %27 to i8* ; [#uses=1] + %31 = bitcast %union.anon* %29 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %30, i8* %31, i32 8, i32 4, i1 false) + %32 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_TValue* %32, i32 0, i32 1 ; [#uses=1] + %34 = load i32* %33, align 4 ; [#uses=1] + %35 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 1 ; [#uses=1] + store i32 %34, i32* %36, align 4 + %37 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + store %struct.lua_TValue* %37, %struct.lua_TValue** %o23, align 4 + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_State* %38, i32 0, i32 4 ; [#uses=1] + %40 = load %struct.lua_TValue** %39, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 2 ; [#uses=1] + store %struct.lua_TValue* %41, %struct.lua_TValue** %o14, align 4 + %42 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 0 ; [#uses=1] + %44 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %45 = getelementptr inbounds %struct.lua_TValue* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %union.anon* %43 to i8* ; [#uses=1] + %47 = bitcast %union.anon* %45 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %46, i8* %47, i32 8, i32 4, i1 false) + %48 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 1 ; [#uses=1] + %50 = load i32* %49, align 4 ; [#uses=1] + %51 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 0, i32 1 ; [#uses=1] + store i32 %50, i32* %52, align 4 + %53 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + store %struct.lua_TValue* %53, %struct.lua_TValue** %o25, align 4 + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 4 ; [#uses=1] + %56 = load %struct.lua_TValue** %55, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.lua_TValue* %56, i32 3 ; [#uses=1] + store %struct.lua_TValue* %57, %struct.lua_TValue** %o16, align 4 + %58 = load %struct.lua_TValue** %o16, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 0, i32 0 ; [#uses=1] + %60 = load %struct.lua_TValue** %o25, align 4 ; [#uses=1] + %61 = getelementptr inbounds %struct.lua_TValue* %60, i32 0, i32 0 ; [#uses=1] + %62 = bitcast %union.anon* %59 to i8* ; [#uses=1] + %63 = bitcast %union.anon* %61 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %62, i8* %63, i32 8, i32 4, i1 false) + %64 = load %struct.lua_TValue** %o25, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_TValue* %64, i32 0, i32 1 ; [#uses=1] + %66 = load i32* %65, align 4 ; [#uses=1] + %67 = load %struct.lua_TValue** %o16, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_TValue* %67, i32 0, i32 1 ; [#uses=1] + store i32 %66, i32* %68, align 4 + %69 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %70 = getelementptr inbounds %struct.lua_State* %69, i32 0, i32 9 ; [#uses=1] + %71 = load %struct.lua_TValue** %70, align 4 ; [#uses=1] + %72 = bitcast %struct.lua_TValue* %71 to i8* ; [#uses=1] + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_State* %73, i32 0, i32 4 ; [#uses=1] + %75 = load %struct.lua_TValue** %74, align 4 ; [#uses=1] + %76 = bitcast %struct.lua_TValue* %75 to i8* ; [#uses=1] + %77 = ptrtoint i8* %72 to i32 ; [#uses=1] + %78 = ptrtoint i8* %76 to i32 ; [#uses=1] + %79 = sub i32 %77, %78 ; [#uses=1] + %80 = icmp sle i32 %79, 48 ; [#uses=1] + br i1 %80, label %81, label %83 + +; <label>:81 ; preds = %0 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %82, i32 4) + br label %84 + +; <label>:83 ; preds = %0 + br label %84 + +; <label>:84 ; preds = %83, %81 + %85 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %86 = getelementptr inbounds %struct.lua_State* %85, i32 0, i32 4 ; [#uses=2] + %87 = load %struct.lua_TValue** %86, align 4 ; [#uses=1] + %88 = getelementptr inbounds %struct.lua_TValue* %87, i32 4 ; [#uses=1] + store %struct.lua_TValue* %88, %struct.lua_TValue** %86, align 4 + %89 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %90 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.lua_State* %90, i32 0, i32 4 ; [#uses=1] + %92 = load %struct.lua_TValue** %91, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_TValue* %92, i32 -4 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %89, %struct.lua_TValue* %93, i32 0) + ret void +} + +; [#uses=2] +define hidden i32 @_Z13luaV_lessthanP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %L, %struct.lua_TValue* %l, %struct.lua_TValue* %r) { + %1 = alloca i32, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=9] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=7] + %res = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %l, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %r, %struct.lua_TValue** %4, align 4 + %5 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp ne i32 %7, %10 ; [#uses=1] + br i1 %11, label %12, label %17 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %16 = call i32 @_Z15luaG_ordererrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %13, %struct.lua_TValue* %14, %struct.lua_TValue* %15) ; [#uses=1] + store i32 %16, i32* %1 + br label %72 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, 3 ; [#uses=1] + br i1 %21, label %22, label %33 + +; <label>:22 ; preds = %17 + %23 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = load double* %25, align 4 ; [#uses=1] + %27 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = load double* %29, align 4 ; [#uses=1] + %31 = fcmp olt double %26, %30 ; [#uses=1] + %32 = zext i1 %31 to i32 ; [#uses=1] + store i32 %32, i32* %1 + br label %72 + +; <label>:33 ; preds = %17 + %34 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 4 ; [#uses=1] + br i1 %37, label %38, label %56 + +; <label>:38 ; preds = %33 + %39 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %union.anon* %40, i32 0, i32 0 ; [#uses=1] + %42 = bitcast double* %41 to %union.GCObject** ; [#uses=1] + %43 = load %union.GCObject** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %union.GCObject* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast %struct.lua_State* %44 to %union.TString* ; [#uses=1] + %46 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_TValue* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds %union.anon* %47, i32 0, i32 0 ; [#uses=1] + %49 = bitcast double* %48 to %union.GCObject** ; [#uses=1] + %50 = load %union.GCObject** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %union.GCObject* %50, i32 0, i32 0 ; [#uses=1] + %52 = bitcast %struct.lua_State* %51 to %union.TString* ; [#uses=1] + %53 = call i32 @_Z8l_strcmpPK7TStringS1_(%union.TString* %45, %union.TString* %52) ; [#uses=1] + %54 = icmp slt i32 %53, 0 ; [#uses=1] + %55 = zext i1 %54 to i32 ; [#uses=1] + store i32 %55, i32* %1 + br label %72 + +; <label>:56 ; preds = %33 + %57 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %58 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %59 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %60 = call i32 @_Z12call_orderTMP9lua_StatePK10lua_TValueS3_3TMS(%struct.lua_State* %57, %struct.lua_TValue* %58, %struct.lua_TValue* %59, i32 13) ; [#uses=2] + store i32 %60, i32* %res, align 4 + %61 = icmp ne i32 %60, -1 ; [#uses=1] + br i1 %61, label %62, label %64 + +; <label>:62 ; preds = %56 + %63 = load i32* %res, align 4 ; [#uses=1] + store i32 %63, i32* %1 + br label %72 + +; <label>:64 ; preds = %56 + br label %65 + +; <label>:65 ; preds = %64 + br label %66 + +; <label>:66 ; preds = %65 + br label %67 + +; <label>:67 ; preds = %66 + %68 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %69 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %70 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %71 = call i32 @_Z15luaG_ordererrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %68, %struct.lua_TValue* %69, %struct.lua_TValue* %70) ; [#uses=1] + store i32 %71, i32* %1 + br label %72 + +; <label>:72 ; preds = %67, %62, %38, %22, %12 + %73 = load i32* %1 ; [#uses=1] + ret i32 %73 +} + +; [#uses=2] +define internal i32 @_Z8l_strcmpPK7TStringS1_(%union.TString* %ls, %union.TString* %rs) nounwind { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %union.TString*, align 4 ; [#uses=3] + %3 = alloca %union.TString*, align 4 ; [#uses=3] + %l = alloca i8*, align 4 ; [#uses=5] + %ll = alloca i32, align 4 ; [#uses=5] + %r = alloca i8*, align 4 ; [#uses=4] + %lr = alloca i32, align 4 ; [#uses=4] + %temp = alloca i32, align 4 ; [#uses=3] + %len = alloca i32, align 4 ; [#uses=10] + store %union.TString* %ls, %union.TString** %2, align 4 + store %union.TString* %rs, %union.TString** %3, align 4 + %4 = load %union.TString** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %union.TString* %4, i32 1 ; [#uses=1] + %6 = bitcast %union.TString* %5 to i8* ; [#uses=1] + store i8* %6, i8** %l, align 4 + %7 = load %union.TString** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %union.TString* %7, i32 0, i32 0 ; [#uses=1] + %9 = getelementptr inbounds %struct.anon* %8, i32 0, i32 5 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + store i32 %10, i32* %ll, align 4 + %11 = load %union.TString** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds %union.TString* %11, i32 1 ; [#uses=1] + %13 = bitcast %union.TString* %12 to i8* ; [#uses=1] + store i8* %13, i8** %r, align 4 + %14 = load %union.TString** %3, align 4 ; [#uses=1] + %15 = getelementptr inbounds %union.TString* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %struct.anon* %15, i32 0, i32 5 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + store i32 %17, i32* %lr, align 4 + br label %18 + +; <label>:18 ; preds = %58, %0 + %19 = load i8** %l, align 4 ; [#uses=1] + %20 = load i8** %r, align 4 ; [#uses=1] + %21 = call i32 @strcoll(i8* %19, i8* %20) nounwind readonly ; [#uses=1] + store i32 %21, i32* %temp, align 4 + %22 = load i32* %temp, align 4 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %26 + +; <label>:24 ; preds = %18 + %25 = load i32* %temp, align 4 ; [#uses=1] + store i32 %25, i32* %1 + br label %59 + +; <label>:26 ; preds = %18 + %27 = load i8** %l, align 4 ; [#uses=1] + %28 = call i32 @strlen(i8* %27) ; [#uses=1] + store i32 %28, i32* %len, align 4 + %29 = load i32* %len, align 4 ; [#uses=1] + %30 = load i32* %lr, align 4 ; [#uses=1] + %31 = icmp eq i32 %29, %30 ; [#uses=1] + br i1 %31, label %32, label %37 + +; <label>:32 ; preds = %26 + %33 = load i32* %len, align 4 ; [#uses=1] + %34 = load i32* %ll, align 4 ; [#uses=1] + %35 = icmp eq i32 %33, %34 ; [#uses=1] + %36 = select i1 %35, i32 0, i32 1 ; [#uses=1] + store i32 %36, i32* %1 + br label %59 + +; <label>:37 ; preds = %26 + %38 = load i32* %len, align 4 ; [#uses=1] + %39 = load i32* %ll, align 4 ; [#uses=1] + %40 = icmp eq i32 %38, %39 ; [#uses=1] + br i1 %40, label %41, label %42 + +; <label>:41 ; preds = %37 + store i32 -1, i32* %1 + br label %59 + +; <label>:42 ; preds = %37 + br label %43 + +; <label>:43 ; preds = %42 + %44 = load i32* %len, align 4 ; [#uses=1] + %45 = add i32 %44, 1 ; [#uses=1] + store i32 %45, i32* %len, align 4 + %46 = load i32* %len, align 4 ; [#uses=1] + %47 = load i8** %l, align 4 ; [#uses=1] + %48 = getelementptr inbounds i8* %47, i32 %46 ; [#uses=1] + store i8* %48, i8** %l, align 4 + %49 = load i32* %len, align 4 ; [#uses=1] + %50 = load i32* %ll, align 4 ; [#uses=1] + %51 = sub i32 %50, %49 ; [#uses=1] + store i32 %51, i32* %ll, align 4 + %52 = load i32* %len, align 4 ; [#uses=1] + %53 = load i8** %r, align 4 ; [#uses=1] + %54 = getelementptr inbounds i8* %53, i32 %52 ; [#uses=1] + store i8* %54, i8** %r, align 4 + %55 = load i32* %len, align 4 ; [#uses=1] + %56 = load i32* %lr, align 4 ; [#uses=1] + %57 = sub i32 %56, %55 ; [#uses=1] + store i32 %57, i32* %lr, align 4 + br label %58 + +; <label>:58 ; preds = %43 + br label %18 + +; <label>:59 ; preds = %41, %32, %24 + %60 = load i32* %1 ; [#uses=1] + ret i32 %60 +} + +; [#uses=3] +define internal i32 @_Z12call_orderTMP9lua_StatePK10lua_TValueS3_3TMS(%struct.lua_State* %L, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2, i32 %event) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %5 = alloca i32, align 4 ; [#uses=3] + %tm1 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %tm2 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %4, align 4 + store i32 %event, i32* %5, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %8 = load i32* %5, align 4 ; [#uses=1] + %9 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %6, %struct.lua_TValue* %7, i32 %8) ; [#uses=1] + store %struct.lua_TValue* %9, %struct.lua_TValue** %tm1, align 4 + %10 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 1 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %0 + store i32 -1, i32* %1 + br label %61 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %18 = load i32* %5, align 4 ; [#uses=1] + %19 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %16, %struct.lua_TValue* %17, i32 %18) ; [#uses=1] + store %struct.lua_TValue* %19, %struct.lua_TValue** %tm2, align 4 + %20 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + %21 = load %struct.lua_TValue** %tm2, align 4 ; [#uses=1] + %22 = call i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %20, %struct.lua_TValue* %21) ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %25, label %24 + +; <label>:24 ; preds = %15 + store i32 -1, i32* %1 + br label %61 + +; <label>:25 ; preds = %15 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_State* %27, i32 0, i32 4 ; [#uses=1] + %29 = load %struct.lua_TValue** %28, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %32 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z9callTMresP9lua_StateP10lua_TValuePKS1_S4_S4_(%struct.lua_State* %26, %struct.lua_TValue* %29, %struct.lua_TValue* %30, %struct.lua_TValue* %31, %struct.lua_TValue* %32) + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = getelementptr inbounds %struct.lua_State* %33, i32 0, i32 4 ; [#uses=1] + %35 = load %struct.lua_TValue** %34, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.lua_TValue* %35, i32 0, i32 1 ; [#uses=1] + %37 = load i32* %36, align 4 ; [#uses=1] + %38 = icmp eq i32 %37, 0 ; [#uses=1] + br i1 %38, label %57, label %39 + +; <label>:39 ; preds = %25 + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_State* %40, i32 0, i32 4 ; [#uses=1] + %42 = load %struct.lua_TValue** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.lua_TValue* %42, i32 0, i32 1 ; [#uses=1] + %44 = load i32* %43, align 4 ; [#uses=1] + %45 = icmp eq i32 %44, 1 ; [#uses=1] + br i1 %45, label %46, label %55 + +; <label>:46 ; preds = %39 + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_State* %47, i32 0, i32 4 ; [#uses=1] + %49 = load %struct.lua_TValue** %48, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.lua_TValue* %49, i32 0, i32 0 ; [#uses=1] + %51 = getelementptr inbounds %union.anon* %50, i32 0, i32 0 ; [#uses=1] + %52 = bitcast double* %51 to i32* ; [#uses=1] + %53 = load i32* %52, align 4 ; [#uses=1] + %54 = icmp eq i32 %53, 0 ; [#uses=1] + br label %55 + +; <label>:55 ; preds = %46, %39 + %56 = phi i1 [ false, %39 ], [ %54, %46 ] ; [#uses=1] + br label %57 + +; <label>:57 ; preds = %55, %25 + %58 = phi i1 [ true, %25 ], [ %56, %55 ] ; [#uses=1] + %59 = xor i1 %58, true ; [#uses=1] + %60 = zext i1 %59 to i32 ; [#uses=1] + store i32 %60, i32* %1 + br label %61 + +; <label>:61 ; preds = %57, %24, %14 + %62 = load i32* %1 ; [#uses=1] + ret i32 %62 +} + +; [#uses=2] +define hidden i32 @_Z13luaV_equalvalP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %L, %struct.lua_TValue* %t1, %struct.lua_TValue* %t2) { + %1 = alloca i32, align 4 ; [#uses=10] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=11] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=10] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %t1, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %t2, %struct.lua_TValue** %4, align 4 + %5 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + switch i32 %7, label %126 [ + i32 0, label %8 + i32 3, label %9 + i32 1, label %20 + i32 2, label %33 + i32 7, label %46 + i32 5, label %88 + ] + +; <label>:8 ; preds = %0 + store i32 1, i32* %1 + br label %179 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_TValue* %10, i32 0, i32 0 ; [#uses=1] + %12 = getelementptr inbounds %union.anon* %11, i32 0, i32 0 ; [#uses=1] + %13 = load double* %12, align 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] + %17 = load double* %16, align 4 ; [#uses=1] + %18 = fcmp oeq double %13, %17 ; [#uses=1] + %19 = zext i1 %18 to i32 ; [#uses=1] + store i32 %19, i32* %1 + br label %179 + +; <label>:20 ; preds = %0 + %21 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 0 ; [#uses=1] + %23 = getelementptr inbounds %union.anon* %22, i32 0, i32 0 ; [#uses=1] + %24 = bitcast double* %23 to i32* ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + %26 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_TValue* %26, i32 0, i32 0 ; [#uses=1] + %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] + %29 = bitcast double* %28 to i32* ; [#uses=1] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = icmp eq i32 %25, %30 ; [#uses=1] + %32 = zext i1 %31 to i32 ; [#uses=1] + store i32 %32, i32* %1 + br label %179 + +; <label>:33 ; preds = %0 + %34 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 0 ; [#uses=1] + %36 = getelementptr inbounds %union.anon* %35, i32 0, i32 0 ; [#uses=1] + %37 = bitcast double* %36 to i8** ; [#uses=1] + %38 = load i8** %37, align 4 ; [#uses=1] + %39 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %union.anon* %40, i32 0, i32 0 ; [#uses=1] + %42 = bitcast double* %41 to i8** ; [#uses=1] + %43 = load i8** %42, align 4 ; [#uses=1] + %44 = icmp eq i8* %38, %43 ; [#uses=1] + %45 = zext i1 %44 to i32 ; [#uses=1] + store i32 %45, i32* %1 + br label %179 + +; <label>:46 ; preds = %0 + %47 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.lua_TValue* %47, i32 0, i32 0 ; [#uses=1] + %49 = getelementptr inbounds %union.anon* %48, i32 0, i32 0 ; [#uses=1] + %50 = bitcast double* %49 to %union.GCObject** ; [#uses=1] + %51 = load %union.GCObject** %50, align 4 ; [#uses=1] + %52 = getelementptr inbounds %union.GCObject* %51, i32 0, i32 0 ; [#uses=1] + %53 = bitcast %struct.lua_State* %52 to %union.Udata* ; [#uses=1] + %54 = getelementptr inbounds %union.Udata* %53, i32 0, i32 0 ; [#uses=1] + %55 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.lua_TValue* %55, i32 0, i32 0 ; [#uses=1] + %57 = getelementptr inbounds %union.anon* %56, i32 0, i32 0 ; [#uses=1] + %58 = bitcast double* %57 to %union.GCObject** ; [#uses=1] + %59 = load %union.GCObject** %58, align 4 ; [#uses=1] + %60 = getelementptr inbounds %union.GCObject* %59, i32 0, i32 0 ; [#uses=1] + %61 = bitcast %struct.lua_State* %60 to %union.Udata* ; [#uses=1] + %62 = getelementptr inbounds %union.Udata* %61, i32 0, i32 0 ; [#uses=1] + %63 = icmp eq %4* %54, %62 ; [#uses=1] + br i1 %63, label %64, label %65 + +; <label>:64 ; preds = %46 + store i32 1, i32* %1 + br label %179 + +; <label>:65 ; preds = %46 + %66 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %67 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_TValue* %67, i32 0, i32 0 ; [#uses=1] + %69 = getelementptr inbounds %union.anon* %68, i32 0, i32 0 ; [#uses=1] + %70 = bitcast double* %69 to %union.GCObject** ; [#uses=1] + %71 = load %union.GCObject** %70, align 4 ; [#uses=1] + %72 = getelementptr inbounds %union.GCObject* %71, i32 0, i32 0 ; [#uses=1] + %73 = bitcast %struct.lua_State* %72 to %union.Udata* ; [#uses=1] + %74 = getelementptr inbounds %union.Udata* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %4* %74, i32 0, i32 3 ; [#uses=1] + %76 = load %struct.Table** %75, align 4 ; [#uses=1] + %77 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.lua_TValue* %77, i32 0, i32 0 ; [#uses=1] + %79 = getelementptr inbounds %union.anon* %78, i32 0, i32 0 ; [#uses=1] + %80 = bitcast double* %79 to %union.GCObject** ; [#uses=1] + %81 = load %union.GCObject** %80, align 4 ; [#uses=1] + %82 = getelementptr inbounds %union.GCObject* %81, i32 0, i32 0 ; [#uses=1] + %83 = bitcast %struct.lua_State* %82 to %union.Udata* ; [#uses=1] + %84 = getelementptr inbounds %union.Udata* %83, i32 0, i32 0 ; [#uses=1] + %85 = getelementptr inbounds %4* %84, i32 0, i32 3 ; [#uses=1] + %86 = load %struct.Table** %85, align 4 ; [#uses=1] + %87 = call %struct.lua_TValue* @_Z10get_compTMP9lua_StateP5TableS2_3TMS(%struct.lua_State* %66, %struct.Table* %76, %struct.Table* %86, i32 4) ; [#uses=1] + store %struct.lua_TValue* %87, %struct.lua_TValue** %tm, align 4 + br label %139 + +; <label>:88 ; preds = %0 + %89 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %90 = getelementptr inbounds %struct.lua_TValue* %89, i32 0, i32 0 ; [#uses=1] + %91 = getelementptr inbounds %union.anon* %90, i32 0, i32 0 ; [#uses=1] + %92 = bitcast double* %91 to %union.GCObject** ; [#uses=1] + %93 = load %union.GCObject** %92, align 4 ; [#uses=1] + %94 = getelementptr inbounds %union.GCObject* %93, i32 0, i32 0 ; [#uses=1] + %95 = bitcast %struct.lua_State* %94 to %struct.Table* ; [#uses=1] + %96 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %97 = getelementptr inbounds %struct.lua_TValue* %96, i32 0, i32 0 ; [#uses=1] + %98 = getelementptr inbounds %union.anon* %97, i32 0, i32 0 ; [#uses=1] + %99 = bitcast double* %98 to %union.GCObject** ; [#uses=1] + %100 = load %union.GCObject** %99, align 4 ; [#uses=1] + %101 = getelementptr inbounds %union.GCObject* %100, i32 0, i32 0 ; [#uses=1] + %102 = bitcast %struct.lua_State* %101 to %struct.Table* ; [#uses=1] + %103 = icmp eq %struct.Table* %95, %102 ; [#uses=1] + br i1 %103, label %104, label %105 + +; <label>:104 ; preds = %88 + store i32 1, i32* %1 + br label %179 + +; <label>:105 ; preds = %88 + %106 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %107 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %108 = getelementptr inbounds %struct.lua_TValue* %107, i32 0, i32 0 ; [#uses=1] + %109 = getelementptr inbounds %union.anon* %108, i32 0, i32 0 ; [#uses=1] + %110 = bitcast double* %109 to %union.GCObject** ; [#uses=1] + %111 = load %union.GCObject** %110, align 4 ; [#uses=1] + %112 = getelementptr inbounds %union.GCObject* %111, i32 0, i32 0 ; [#uses=1] + %113 = bitcast %struct.lua_State* %112 to %struct.Table* ; [#uses=1] + %114 = getelementptr inbounds %struct.Table* %113, i32 0, i32 5 ; [#uses=1] + %115 = load %struct.Table** %114, align 4 ; [#uses=1] + %116 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %117 = getelementptr inbounds %struct.lua_TValue* %116, i32 0, i32 0 ; [#uses=1] + %118 = getelementptr inbounds %union.anon* %117, i32 0, i32 0 ; [#uses=1] + %119 = bitcast double* %118 to %union.GCObject** ; [#uses=1] + %120 = load %union.GCObject** %119, align 4 ; [#uses=1] + %121 = getelementptr inbounds %union.GCObject* %120, i32 0, i32 0 ; [#uses=1] + %122 = bitcast %struct.lua_State* %121 to %struct.Table* ; [#uses=1] + %123 = getelementptr inbounds %struct.Table* %122, i32 0, i32 5 ; [#uses=1] + %124 = load %struct.Table** %123, align 4 ; [#uses=1] + %125 = call %struct.lua_TValue* @_Z10get_compTMP9lua_StateP5TableS2_3TMS(%struct.lua_State* %106, %struct.Table* %115, %struct.Table* %124, i32 4) ; [#uses=1] + store %struct.lua_TValue* %125, %struct.lua_TValue** %tm, align 4 + br label %139 + +; <label>:126 ; preds = %0 + %127 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %128 = getelementptr inbounds %struct.lua_TValue* %127, i32 0, i32 0 ; [#uses=1] + %129 = getelementptr inbounds %union.anon* %128, i32 0, i32 0 ; [#uses=1] + %130 = bitcast double* %129 to %union.GCObject** ; [#uses=1] + %131 = load %union.GCObject** %130, align 4 ; [#uses=1] + %132 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %133 = getelementptr inbounds %struct.lua_TValue* %132, i32 0, i32 0 ; [#uses=1] + %134 = getelementptr inbounds %union.anon* %133, i32 0, i32 0 ; [#uses=1] + %135 = bitcast double* %134 to %union.GCObject** ; [#uses=1] + %136 = load %union.GCObject** %135, align 4 ; [#uses=1] + %137 = icmp eq %union.GCObject* %131, %136 ; [#uses=1] + %138 = zext i1 %137 to i32 ; [#uses=1] + store i32 %138, i32* %1 + br label %179 + +; <label>:139 ; preds = %105, %65 + %140 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %141 = icmp eq %struct.lua_TValue* %140, null ; [#uses=1] + br i1 %141, label %142, label %143 + +; <label>:142 ; preds = %139 + store i32 0, i32* %1 + br label %179 + +; <label>:143 ; preds = %139 + %144 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %145 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.lua_State* %145, i32 0, i32 4 ; [#uses=1] + %147 = load %struct.lua_TValue** %146, align 4 ; [#uses=1] + %148 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %149 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %150 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z9callTMresP9lua_StateP10lua_TValuePKS1_S4_S4_(%struct.lua_State* %144, %struct.lua_TValue* %147, %struct.lua_TValue* %148, %struct.lua_TValue* %149, %struct.lua_TValue* %150) + %151 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %152 = getelementptr inbounds %struct.lua_State* %151, i32 0, i32 4 ; [#uses=1] + %153 = load %struct.lua_TValue** %152, align 4 ; [#uses=1] + %154 = getelementptr inbounds %struct.lua_TValue* %153, i32 0, i32 1 ; [#uses=1] + %155 = load i32* %154, align 4 ; [#uses=1] + %156 = icmp eq i32 %155, 0 ; [#uses=1] + br i1 %156, label %175, label %157 + +; <label>:157 ; preds = %143 + %158 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %159 = getelementptr inbounds %struct.lua_State* %158, i32 0, i32 4 ; [#uses=1] + %160 = load %struct.lua_TValue** %159, align 4 ; [#uses=1] + %161 = getelementptr inbounds %struct.lua_TValue* %160, i32 0, i32 1 ; [#uses=1] + %162 = load i32* %161, align 4 ; [#uses=1] + %163 = icmp eq i32 %162, 1 ; [#uses=1] + br i1 %163, label %164, label %173 + +; <label>:164 ; preds = %157 + %165 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %166 = getelementptr inbounds %struct.lua_State* %165, i32 0, i32 4 ; [#uses=1] + %167 = load %struct.lua_TValue** %166, align 4 ; [#uses=1] + %168 = getelementptr inbounds %struct.lua_TValue* %167, i32 0, i32 0 ; [#uses=1] + %169 = getelementptr inbounds %union.anon* %168, i32 0, i32 0 ; [#uses=1] + %170 = bitcast double* %169 to i32* ; [#uses=1] + %171 = load i32* %170, align 4 ; [#uses=1] + %172 = icmp eq i32 %171, 0 ; [#uses=1] + br label %173 + +; <label>:173 ; preds = %164, %157 + %174 = phi i1 [ false, %157 ], [ %172, %164 ] ; [#uses=1] + br label %175 + +; <label>:175 ; preds = %173, %143 + %176 = phi i1 [ true, %143 ], [ %174, %173 ] ; [#uses=1] + %177 = xor i1 %176, true ; [#uses=1] + %178 = zext i1 %177 to i32 ; [#uses=1] + store i32 %178, i32* %1 + br label %179 + +; <label>:179 ; preds = %175, %142, %126, %104, %64, %33, %20, %9, %8 + %180 = load i32* %1 ; [#uses=1] + ret i32 %180 +} + +; [#uses=2] +define internal %struct.lua_TValue* @_Z10get_compTMP9lua_StateP5TableS2_3TMS(%struct.lua_State* %L, %struct.Table* %mt1, %struct.Table* %mt2, i32 %event) { + %1 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca %struct.Table*, align 4 ; [#uses=5] + %4 = alloca %struct.Table*, align 4 ; [#uses=5] + %5 = alloca i32, align 4 ; [#uses=7] + %tm1 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %tm2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.Table* %mt1, %struct.Table** %3, align 4 + store %struct.Table* %mt2, %struct.Table** %4, align 4 + store i32 %event, i32* %5, align 4 + %6 = load %struct.Table** %3, align 4 ; [#uses=1] + %7 = icmp eq %struct.Table* %6, null ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + br label %32 + +; <label>:9 ; preds = %0 + %10 = load %struct.Table** %3, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Table* %10, i32 0, i32 3 ; [#uses=1] + %12 = load i8* %11, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = load i32* %5, align 4 ; [#uses=1] + %15 = shl i32 1, %14 ; [#uses=1] + %16 = and i32 %13, %15 ; [#uses=1] + %17 = icmp ne i32 %16, 0 ; [#uses=1] + br i1 %17, label %18, label %19 + +; <label>:18 ; preds = %9 + br label %30 + +; <label>:19 ; preds = %9 + %20 = load %struct.Table** %3, align 4 ; [#uses=1] + %21 = load i32* %5, align 4 ; [#uses=1] + %22 = load i32* %5, align 4 ; [#uses=1] + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_State* %23, i32 0, i32 6 ; [#uses=1] + %25 = load %struct.global_State** %24, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.global_State* %25, i32 0, i32 24 ; [#uses=1] + %27 = getelementptr inbounds [17 x %union.TString*]* %26, i32 0, i32 %22 ; [#uses=1] + %28 = load %union.TString** %27 ; [#uses=1] + %29 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %20, i32 %21, %union.TString* %28) ; [#uses=1] + br label %30 + +; <label>:30 ; preds = %19, %18 + %31 = phi %struct.lua_TValue* [ null, %18 ], [ %29, %19 ] ; [#uses=1] + br label %32 + +; <label>:32 ; preds = %30, %8 + %33 = phi %struct.lua_TValue* [ null, %8 ], [ %31, %30 ] ; [#uses=1] + store %struct.lua_TValue* %33, %struct.lua_TValue** %tm1, align 4 + %34 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + %35 = icmp eq %struct.lua_TValue* %34, null ; [#uses=1] + br i1 %35, label %36, label %37 + +; <label>:36 ; preds = %32 + store %struct.lua_TValue* null, %struct.lua_TValue** %1 + br label %83 + +; <label>:37 ; preds = %32 + %38 = load %struct.Table** %3, align 4 ; [#uses=1] + %39 = load %struct.Table** %4, align 4 ; [#uses=1] + %40 = icmp eq %struct.Table* %38, %39 ; [#uses=1] + br i1 %40, label %41, label %43 + +; <label>:41 ; preds = %37 + %42 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + store %struct.lua_TValue* %42, %struct.lua_TValue** %1 + br label %83 + +; <label>:43 ; preds = %37 + %44 = load %struct.Table** %4, align 4 ; [#uses=1] + %45 = icmp eq %struct.Table* %44, null ; [#uses=1] + br i1 %45, label %46, label %47 + +; <label>:46 ; preds = %43 + br label %70 + +; <label>:47 ; preds = %43 + %48 = load %struct.Table** %4, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.Table* %48, i32 0, i32 3 ; [#uses=1] + %50 = load i8* %49, align 1 ; [#uses=1] + %51 = zext i8 %50 to i32 ; [#uses=1] + %52 = load i32* %5, align 4 ; [#uses=1] + %53 = shl i32 1, %52 ; [#uses=1] + %54 = and i32 %51, %53 ; [#uses=1] + %55 = icmp ne i32 %54, 0 ; [#uses=1] + br i1 %55, label %56, label %57 + +; <label>:56 ; preds = %47 + br label %68 + +; <label>:57 ; preds = %47 + %58 = load %struct.Table** %4, align 4 ; [#uses=1] + %59 = load i32* %5, align 4 ; [#uses=1] + %60 = load i32* %5, align 4 ; [#uses=1] + %61 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.lua_State* %61, i32 0, i32 6 ; [#uses=1] + %63 = load %struct.global_State** %62, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.global_State* %63, i32 0, i32 24 ; [#uses=1] + %65 = getelementptr inbounds [17 x %union.TString*]* %64, i32 0, i32 %60 ; [#uses=1] + %66 = load %union.TString** %65 ; [#uses=1] + %67 = call %struct.lua_TValue* @_Z10luaT_gettmP5Table3TMSP7TString(%struct.Table* %58, i32 %59, %union.TString* %66) ; [#uses=1] + br label %68 + +; <label>:68 ; preds = %57, %56 + %69 = phi %struct.lua_TValue* [ null, %56 ], [ %67, %57 ] ; [#uses=1] + br label %70 + +; <label>:70 ; preds = %68, %46 + %71 = phi %struct.lua_TValue* [ null, %46 ], [ %69, %68 ] ; [#uses=1] + store %struct.lua_TValue* %71, %struct.lua_TValue** %tm2, align 4 + %72 = load %struct.lua_TValue** %tm2, align 4 ; [#uses=1] + %73 = icmp eq %struct.lua_TValue* %72, null ; [#uses=1] + br i1 %73, label %74, label %75 + +; <label>:74 ; preds = %70 + store %struct.lua_TValue* null, %struct.lua_TValue** %1 + br label %83 + +; <label>:75 ; preds = %70 + %76 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + %77 = load %struct.lua_TValue** %tm2, align 4 ; [#uses=1] + %78 = call i32 @_Z16luaO_rawequalObjPK10lua_TValueS1_(%struct.lua_TValue* %76, %struct.lua_TValue* %77) ; [#uses=1] + %79 = icmp ne i32 %78, 0 ; [#uses=1] + br i1 %79, label %80, label %82 + +; <label>:80 ; preds = %75 + %81 = load %struct.lua_TValue** %tm1, align 4 ; [#uses=1] + store %struct.lua_TValue* %81, %struct.lua_TValue** %1 + br label %83 + +; <label>:82 ; preds = %75 + store %struct.lua_TValue* null, %struct.lua_TValue** %1 + br label %83 + +; <label>:83 ; preds = %82, %80, %74, %41, %36 + %84 = load %struct.lua_TValue** %1 ; [#uses=1] + ret %struct.lua_TValue* %84 +} + +; [#uses=3] +define hidden void @_Z11luaV_concatP9lua_Stateii(%struct.lua_State* %L, i32 %total, i32 %last) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca i32, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=4] + %top = alloca %struct.lua_TValue*, align 4 ; [#uses=20] + %n = alloca i32, align 4 ; [#uses=12] + %tl = alloca i32, align 4 ; [#uses=10] + %buffer = alloca i8*, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=6] + %l = alloca i32, align 4 ; [#uses=3] + %l1 = alloca i32, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %total, i32* %2, align 4 + store i32 %last, i32* %3, align 4 + br label %4 + +; <label>:4 ; preds = %218, %0 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_State* %5, i32 0, i32 5 ; [#uses=1] + %7 = load %struct.lua_TValue** %6, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %7, i32 %8 ; [#uses=1] + %10 = getelementptr inbounds %struct.lua_TValue* %9, i32 1 ; [#uses=1] + store %struct.lua_TValue* %10, %struct.lua_TValue** %top, align 4 + store i32 2, i32* %n, align 4 + %11 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 -2 ; [#uses=1] + %13 = getelementptr inbounds %struct.lua_TValue* %12, i32 0, i32 1 ; [#uses=1] + %14 = load i32* %13, align 4 ; [#uses=1] + %15 = icmp eq i32 %14, 4 ; [#uses=1] + br i1 %15, label %22, label %16 + +; <label>:16 ; preds = %4 + %17 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_TValue* %17, i32 -2 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, 3 ; [#uses=1] + br i1 %21, label %22, label %34 + +; <label>:22 ; preds = %16, %4 + %23 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 -1 ; [#uses=1] + %25 = getelementptr inbounds %struct.lua_TValue* %24, i32 0, i32 1 ; [#uses=1] + %26 = load i32* %25, align 4 ; [#uses=1] + %27 = icmp eq i32 %26, 4 ; [#uses=1] + br i1 %27, label %51, label %28 + +; <label>:28 ; preds = %22 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.lua_TValue* %30, i32 -1 ; [#uses=1] + %32 = call i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %29, %struct.lua_TValue* %31) ; [#uses=1] + %33 = icmp ne i32 %32, 0 ; [#uses=1] + br i1 %33, label %51, label %34 + +; <label>:34 ; preds = %28, %16 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.lua_TValue* %36, i32 -2 ; [#uses=1] + %38 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 -1 ; [#uses=1] + %40 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_TValue* %40, i32 -2 ; [#uses=1] + %42 = call i32 @_Z10call_binTMP9lua_StatePK10lua_TValueS3_PS1_3TMS(%struct.lua_State* %35, %struct.lua_TValue* %37, %struct.lua_TValue* %39, %struct.lua_TValue* %41, i32 15) ; [#uses=1] + %43 = icmp ne i32 %42, 0 ; [#uses=1] + br i1 %43, label %50, label %44 + +; <label>:44 ; preds = %34 + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_TValue* %46, i32 -2 ; [#uses=1] + %48 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 -1 ; [#uses=1] + call void @_Z16luaG_concaterrorP9lua_StateP10lua_TValueS2_(%struct.lua_State* %45, %struct.lua_TValue* %47, %struct.lua_TValue* %49) + br label %50 + +; <label>:50 ; preds = %44, %34 + br label %209 + +; <label>:51 ; preds = %28, %22 + %52 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.lua_TValue* %52, i32 -1 ; [#uses=1] + %54 = getelementptr inbounds %struct.lua_TValue* %53, i32 0, i32 0 ; [#uses=1] + %55 = getelementptr inbounds %union.anon* %54, i32 0, i32 0 ; [#uses=1] + %56 = bitcast double* %55 to %union.GCObject** ; [#uses=1] + %57 = load %union.GCObject** %56, align 4 ; [#uses=1] + %58 = getelementptr inbounds %union.GCObject* %57, i32 0, i32 0 ; [#uses=1] + %59 = bitcast %struct.lua_State* %58 to %union.TString* ; [#uses=1] + %60 = getelementptr inbounds %union.TString* %59, i32 0, i32 0 ; [#uses=1] + %61 = getelementptr inbounds %struct.anon* %60, i32 0, i32 5 ; [#uses=1] + %62 = load i32* %61, align 4 ; [#uses=1] + %63 = icmp eq i32 %62, 0 ; [#uses=1] + br i1 %63, label %64, label %78 + +; <label>:64 ; preds = %51 + %65 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_TValue* %65, i32 -2 ; [#uses=1] + %67 = getelementptr inbounds %struct.lua_TValue* %66, i32 0, i32 1 ; [#uses=1] + %68 = load i32* %67, align 4 ; [#uses=1] + %69 = icmp eq i32 %68, 4 ; [#uses=1] + br i1 %69, label %76, label %70 + +; <label>:70 ; preds = %64 + %71 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %72 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %72, i32 -2 ; [#uses=1] + %74 = call i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %71, %struct.lua_TValue* %73) ; [#uses=1] + %75 = icmp ne i32 %74, 0 ; [#uses=1] + br label %76 + +; <label>:76 ; preds = %70, %64 + %77 = phi i1 [ true, %64 ], [ %75, %70 ] ; [#uses=0] + br label %208 + +; <label>:78 ; preds = %51 + %79 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.lua_TValue* %79, i32 -1 ; [#uses=1] + %81 = getelementptr inbounds %struct.lua_TValue* %80, i32 0, i32 0 ; [#uses=1] + %82 = getelementptr inbounds %union.anon* %81, i32 0, i32 0 ; [#uses=1] + %83 = bitcast double* %82 to %union.GCObject** ; [#uses=1] + %84 = load %union.GCObject** %83, align 4 ; [#uses=1] + %85 = getelementptr inbounds %union.GCObject* %84, i32 0, i32 0 ; [#uses=1] + %86 = bitcast %struct.lua_State* %85 to %union.TString* ; [#uses=1] + %87 = getelementptr inbounds %union.TString* %86, i32 0, i32 0 ; [#uses=1] + %88 = getelementptr inbounds %struct.anon* %87, i32 0, i32 5 ; [#uses=1] + %89 = load i32* %88, align 4 ; [#uses=1] + store i32 %89, i32* %tl, align 4 + store i32 1, i32* %n, align 4 + br label %90 + +; <label>:90 ; preds = %141, %78 + %91 = load i32* %n, align 4 ; [#uses=1] + %92 = load i32* %2, align 4 ; [#uses=1] + %93 = icmp slt i32 %91, %92 ; [#uses=1] + br i1 %93, label %94, label %114 + +; <label>:94 ; preds = %90 + %95 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %96 = load i32* %n, align 4 ; [#uses=1] + %97 = sub i32 0, %96 ; [#uses=1] + %98 = getelementptr inbounds %struct.lua_TValue* %95, i32 %97 ; [#uses=1] + %99 = getelementptr inbounds %struct.lua_TValue* %98, i32 -1 ; [#uses=1] + %100 = getelementptr inbounds %struct.lua_TValue* %99, i32 0, i32 1 ; [#uses=1] + %101 = load i32* %100, align 4 ; [#uses=1] + %102 = icmp eq i32 %101, 4 ; [#uses=1] + br i1 %102, label %112, label %103 + +; <label>:103 ; preds = %94 + %104 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %105 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %106 = load i32* %n, align 4 ; [#uses=1] + %107 = sub i32 0, %106 ; [#uses=1] + %108 = getelementptr inbounds %struct.lua_TValue* %105, i32 %107 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_TValue* %108, i32 -1 ; [#uses=1] + %110 = call i32 @_Z13luaV_tostringP9lua_StateP10lua_TValue(%struct.lua_State* %104, %struct.lua_TValue* %109) ; [#uses=1] + %111 = icmp ne i32 %110, 0 ; [#uses=1] + br label %112 + +; <label>:112 ; preds = %103, %94 + %113 = phi i1 [ true, %94 ], [ %111, %103 ] ; [#uses=1] + br label %114 + +; <label>:114 ; preds = %112, %90 + %115 = phi i1 [ false, %90 ], [ %113, %112 ] ; [#uses=1] + br i1 %115, label %116, label %144 + +; <label>:116 ; preds = %114 + %117 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %118 = load i32* %n, align 4 ; [#uses=1] + %119 = sub i32 0, %118 ; [#uses=1] + %120 = getelementptr inbounds %struct.lua_TValue* %117, i32 %119 ; [#uses=1] + %121 = getelementptr inbounds %struct.lua_TValue* %120, i32 -1 ; [#uses=1] + %122 = getelementptr inbounds %struct.lua_TValue* %121, i32 0, i32 0 ; [#uses=1] + %123 = getelementptr inbounds %union.anon* %122, i32 0, i32 0 ; [#uses=1] + %124 = bitcast double* %123 to %union.GCObject** ; [#uses=1] + %125 = load %union.GCObject** %124, align 4 ; [#uses=1] + %126 = getelementptr inbounds %union.GCObject* %125, i32 0, i32 0 ; [#uses=1] + %127 = bitcast %struct.lua_State* %126 to %union.TString* ; [#uses=1] + %128 = getelementptr inbounds %union.TString* %127, i32 0, i32 0 ; [#uses=1] + %129 = getelementptr inbounds %struct.anon* %128, i32 0, i32 5 ; [#uses=1] + %130 = load i32* %129, align 4 ; [#uses=1] + store i32 %130, i32* %l, align 4 + %131 = load i32* %l, align 4 ; [#uses=1] + %132 = load i32* %tl, align 4 ; [#uses=1] + %133 = sub i32 -3, %132 ; [#uses=1] + %134 = icmp uge i32 %131, %133 ; [#uses=1] + br i1 %134, label %135, label %137 + +; <label>:135 ; preds = %116 + %136 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %136, i8* getelementptr inbounds ([23 x i8]* @.str4224, i32 0, i32 0)) + br label %137 + +; <label>:137 ; preds = %135, %116 + %138 = load i32* %l, align 4 ; [#uses=1] + %139 = load i32* %tl, align 4 ; [#uses=1] + %140 = add i32 %139, %138 ; [#uses=1] + store i32 %140, i32* %tl, align 4 + br label %141 + +; <label>:141 ; preds = %137 + %142 = load i32* %n, align 4 ; [#uses=1] + %143 = add nsw i32 %142, 1 ; [#uses=1] + store i32 %143, i32* %n, align 4 + br label %90 + +; <label>:144 ; preds = %114 + %145 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %146 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %147 = getelementptr inbounds %struct.lua_State* %146, i32 0, i32 6 ; [#uses=1] + %148 = load %struct.global_State** %147, align 4 ; [#uses=1] + %149 = getelementptr inbounds %struct.global_State* %148, i32 0, i32 12 ; [#uses=1] + %150 = load i32* %tl, align 4 ; [#uses=1] + %151 = call i8* @_Z14luaZ_openspaceP9lua_StateP7Mbufferj(%struct.lua_State* %145, %struct.Mbuffer* %149, i32 %150) ; [#uses=1] + store i8* %151, i8** %buffer, align 4 + store i32 0, i32* %tl, align 4 + %152 = load i32* %n, align 4 ; [#uses=1] + store i32 %152, i32* %i, align 4 + br label %153 + +; <label>:153 ; preds = %189, %144 + %154 = load i32* %i, align 4 ; [#uses=1] + %155 = icmp sgt i32 %154, 0 ; [#uses=1] + br i1 %155, label %156, label %192 + +; <label>:156 ; preds = %153 + %157 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %158 = load i32* %i, align 4 ; [#uses=1] + %159 = sub i32 0, %158 ; [#uses=1] + %160 = getelementptr inbounds %struct.lua_TValue* %157, i32 %159 ; [#uses=1] + %161 = getelementptr inbounds %struct.lua_TValue* %160, i32 0, i32 0 ; [#uses=1] + %162 = getelementptr inbounds %union.anon* %161, i32 0, i32 0 ; [#uses=1] + %163 = bitcast double* %162 to %union.GCObject** ; [#uses=1] + %164 = load %union.GCObject** %163, align 4 ; [#uses=1] + %165 = getelementptr inbounds %union.GCObject* %164, i32 0, i32 0 ; [#uses=1] + %166 = bitcast %struct.lua_State* %165 to %union.TString* ; [#uses=1] + %167 = getelementptr inbounds %union.TString* %166, i32 0, i32 0 ; [#uses=1] + %168 = getelementptr inbounds %struct.anon* %167, i32 0, i32 5 ; [#uses=1] + %169 = load i32* %168, align 4 ; [#uses=1] + store i32 %169, i32* %l1, align 4 + %170 = load i8** %buffer, align 4 ; [#uses=1] + %171 = load i32* %tl, align 4 ; [#uses=1] + %172 = getelementptr inbounds i8* %170, i32 %171 ; [#uses=1] + %173 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %174 = load i32* %i, align 4 ; [#uses=1] + %175 = sub i32 0, %174 ; [#uses=1] + %176 = getelementptr inbounds %struct.lua_TValue* %173, i32 %175 ; [#uses=1] + %177 = getelementptr inbounds %struct.lua_TValue* %176, i32 0, i32 0 ; [#uses=1] + %178 = getelementptr inbounds %union.anon* %177, i32 0, i32 0 ; [#uses=1] + %179 = bitcast double* %178 to %union.GCObject** ; [#uses=1] + %180 = load %union.GCObject** %179, align 4 ; [#uses=1] + %181 = getelementptr inbounds %union.GCObject* %180, i32 0, i32 0 ; [#uses=1] + %182 = bitcast %struct.lua_State* %181 to %union.TString* ; [#uses=1] + %183 = getelementptr inbounds %union.TString* %182, i32 1 ; [#uses=1] + %184 = bitcast %union.TString* %183 to i8* ; [#uses=1] + %185 = load i32* %l1, align 4 ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %172, i8* %184, i32 %185, i32 1, i1 false) + %186 = load i32* %l1, align 4 ; [#uses=1] + %187 = load i32* %tl, align 4 ; [#uses=1] + %188 = add i32 %187, %186 ; [#uses=1] + store i32 %188, i32* %tl, align 4 + br label %189 + +; <label>:189 ; preds = %156 + %190 = load i32* %i, align 4 ; [#uses=1] + %191 = add nsw i32 %190, -1 ; [#uses=1] + store i32 %191, i32* %i, align 4 + br label %153 + +; <label>:192 ; preds = %153 + %193 = load %struct.lua_TValue** %top, align 4 ; [#uses=1] + %194 = load i32* %n, align 4 ; [#uses=1] + %195 = sub i32 0, %194 ; [#uses=1] + %196 = getelementptr inbounds %struct.lua_TValue* %193, i32 %195 ; [#uses=1] + store %struct.lua_TValue* %196, %struct.lua_TValue** %i_o, align 4 + %197 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %198 = load i8** %buffer, align 4 ; [#uses=1] + %199 = load i32* %tl, align 4 ; [#uses=1] + %200 = call %union.TString* @_Z12luaS_newlstrP9lua_StatePKcj(%struct.lua_State* %197, i8* %198, i32 %199) ; [#uses=1] + %201 = bitcast %union.TString* %200 to %union.GCObject* ; [#uses=1] + %202 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %203 = getelementptr inbounds %struct.lua_TValue* %202, i32 0, i32 0 ; [#uses=1] + %204 = getelementptr inbounds %union.anon* %203, i32 0, i32 0 ; [#uses=1] + %205 = bitcast double* %204 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %201, %union.GCObject** %205, align 4 + %206 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %207 = getelementptr inbounds %struct.lua_TValue* %206, i32 0, i32 1 ; [#uses=1] + store i32 4, i32* %207, align 4 + br label %208 + +; <label>:208 ; preds = %192, %76 + br label %209 + +; <label>:209 ; preds = %208, %50 + %210 = load i32* %n, align 4 ; [#uses=1] + %211 = sub nsw i32 %210, 1 ; [#uses=1] + %212 = load i32* %2, align 4 ; [#uses=1] + %213 = sub nsw i32 %212, %211 ; [#uses=1] + store i32 %213, i32* %2, align 4 + %214 = load i32* %n, align 4 ; [#uses=1] + %215 = sub nsw i32 %214, 1 ; [#uses=1] + %216 = load i32* %3, align 4 ; [#uses=1] + %217 = sub nsw i32 %216, %215 ; [#uses=1] + store i32 %217, i32* %3, align 4 + br label %218 + +; <label>:218 ; preds = %209 + %219 = load i32* %2, align 4 ; [#uses=1] + %220 = icmp sgt i32 %219, 1 ; [#uses=1] + br i1 %220, label %4, label %221 + +; <label>:221 ; preds = %218 + ret void +} + +; [#uses=3] +define internal i32 @_Z10call_binTMP9lua_StatePK10lua_TValueS3_PS1_3TMS(%struct.lua_State* %L, %struct.lua_TValue* %p1, %struct.lua_TValue* %p2, %struct.lua_TValue* %res, i32 %event) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %5 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %6 = alloca i32, align 4 ; [#uses=3] + %tm = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %p1, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %p2, %struct.lua_TValue** %4, align 4 + store %struct.lua_TValue* %res, %struct.lua_TValue** %5, align 4 + store i32 %event, i32* %6, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %9 = load i32* %6, align 4 ; [#uses=1] + %10 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %7, %struct.lua_TValue* %8, i32 %9) ; [#uses=1] + store %struct.lua_TValue* %10, %struct.lua_TValue** %tm, align 4 + %11 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + %14 = icmp eq i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %20 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %18 = load i32* %6, align 4 ; [#uses=1] + %19 = call %struct.lua_TValue* @_Z15luaT_gettmbyobjP9lua_StatePK10lua_TValue3TMS(%struct.lua_State* %16, %struct.lua_TValue* %17, i32 %18) ; [#uses=1] + store %struct.lua_TValue* %19, %struct.lua_TValue** %tm, align 4 + br label %20 + +; <label>:20 ; preds = %15, %0 + %21 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.lua_TValue* %21, i32 0, i32 1 ; [#uses=1] + %23 = load i32* %22, align 4 ; [#uses=1] + %24 = icmp eq i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %26 + +; <label>:25 ; preds = %20 + store i32 0, i32* %1 + br label %32 + +; <label>:26 ; preds = %20 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load %struct.lua_TValue** %5, align 4 ; [#uses=1] + %29 = load %struct.lua_TValue** %tm, align 4 ; [#uses=1] + %30 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %31 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z9callTMresP9lua_StateP10lua_TValuePKS1_S4_S4_(%struct.lua_State* %27, %struct.lua_TValue* %28, %struct.lua_TValue* %29, %struct.lua_TValue* %30, %struct.lua_TValue* %31) + store i32 1, i32* %1 + br label %32 + +; <label>:32 ; preds = %26, %25 + %33 = load i32* %1 ; [#uses=1] + ret i32 %33 +} + +; [#uses=2] +define hidden void @_Z12luaV_executeP9lua_Statei(%struct.lua_State* %L, i32 %nexeccalls) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=129] + %2 = alloca i32, align 4 ; [#uses=5] + %cl = alloca %struct.LClosure*, align 4 ; [#uses=10] + %base = alloca %struct.lua_TValue*, align 4 ; [#uses=64] + %k = alloca %struct.lua_TValue*, align 4 ; [#uses=26] + %pc = alloca i32*, align 4 ; [#uses=75] + %i = alloca i32, align 4 ; [#uses=110] + %ra = alloca %struct.lua_TValue*, align 4 ; [#uses=72] + %o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o21 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %b = alloca i32, align 4 ; [#uses=2] + %o23 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o14 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %g = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %rb5 = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %i_o6 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %g7 = alloca %struct.lua_TValue, align 4 ; [#uses=2] + %i_o8 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %uv = alloca %struct.UpVal*, align 4 ; [#uses=4] + %o29 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o110 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %b11 = alloca i32, align 4 ; [#uses=2] + %c = alloca i32, align 4 ; [#uses=2] + %i_o12 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb13 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o214 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o115 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb16 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb = alloca double, align 8 ; [#uses=2] + %nc = alloca double, align 8 ; [#uses=2] + %i_o17 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb18 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc19 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb20 = alloca double, align 8 ; [#uses=2] + %nc21 = alloca double, align 8 ; [#uses=2] + %i_o22 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb23 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc24 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb25 = alloca double, align 8 ; [#uses=2] + %nc26 = alloca double, align 8 ; [#uses=2] + %i_o27 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb28 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc29 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb30 = alloca double, align 8 ; [#uses=2] + %nc31 = alloca double, align 8 ; [#uses=2] + %i_o32 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb33 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc34 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb35 = alloca double, align 8 ; [#uses=3] + %nc36 = alloca double, align 8 ; [#uses=3] + %i_o37 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb38 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %rc39 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %nb40 = alloca double, align 8 ; [#uses=2] + %nc41 = alloca double, align 8 ; [#uses=2] + %i_o42 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb43 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %nb44 = alloca double, align 8 ; [#uses=2] + %i_o45 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %res = alloca i32, align 4 ; [#uses=2] + %i_o46 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb47 = alloca %struct.lua_TValue*, align 4 ; [#uses=6] + %i_o48 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o49 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %b50 = alloca i32, align 4 ; [#uses=3] + %c51 = alloca i32, align 4 ; [#uses=3] + %o252 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o153 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb54 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rc55 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %rb56 = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %o257 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o158 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %b59 = alloca i32, align 4 ; [#uses=3] + %nresults = alloca i32, align 4 ; [#uses=3] + %b60 = alloca i32, align 4 ; [#uses=3] + %ci = alloca %struct.CallInfo*, align 4 ; [#uses=10] + %aux = alloca i32, align 4 ; [#uses=7] + %func = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %pfunc = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o261 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o162 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %b63 = alloca i32, align 4 ; [#uses=5] + %step = alloca double, align 8 ; [#uses=3] + %idx = alloca double, align 8 ; [#uses=5] + %limit = alloca double, align 8 ; [#uses=3] + %i_o64 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o65 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %init = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %plimit = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %pstep = alloca %struct.lua_TValue*, align 4 ; [#uses=5] + %i_o66 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %cb = alloca %struct.lua_TValue*, align 4 ; [#uses=10] + %o267 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o168 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o269 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o170 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o271 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o172 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o273 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o174 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %n = alloca i32, align 4 ; [#uses=8] + %c75 = alloca i32, align 4 ; [#uses=4] + %last = alloca i32, align 4 ; [#uses=5] + %h = alloca %struct.Table*, align 4 ; [#uses=6] + %val = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %o276 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o177 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %p = alloca %struct.Proto*, align 4 ; [#uses=3] + %ncl = alloca %union.Closure*, align 4 ; [#uses=5] + %nup = alloca i32, align 4 ; [#uses=3] + %j = alloca i32, align 4 ; [#uses=6] + %i_o78 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %b79 = alloca i32, align 4 ; [#uses=4] + %j80 = alloca i32, align 4 ; [#uses=8] + %ci81 = alloca %struct.CallInfo*, align 4 ; [#uses=4] + %n82 = alloca i32, align 4 ; [#uses=7] + %o283 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %o184 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %nexeccalls, i32* %2, align 4 + br label %3 + +; <label>:3 ; preds = %1630, %1561, %1455, %0 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.lua_State* %4, i32 0, i32 8 ; [#uses=1] + %6 = load i32** %5, align 4 ; [#uses=1] + store i32* %6, i32** %pc, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.lua_State* %7, i32 0, i32 7 ; [#uses=1] + %9 = load %struct.CallInfo** %8, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.CallInfo* %9, i32 0, i32 1 ; [#uses=1] + %11 = load %struct.lua_TValue** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.lua_TValue* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] + %14 = bitcast double* %13 to %union.GCObject** ; [#uses=1] + %15 = load %union.GCObject** %14, align 4 ; [#uses=1] + %16 = getelementptr inbounds %union.GCObject* %15, i32 0, i32 0 ; [#uses=1] + %17 = bitcast %struct.lua_State* %16 to %union.Closure* ; [#uses=1] + %18 = getelementptr inbounds %union.Closure* %17, i32 0, i32 0 ; [#uses=1] + %19 = bitcast %struct.CClosure* %18 to %struct.LClosure* ; [#uses=1] + store %struct.LClosure* %19, %struct.LClosure** %cl, align 4 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.lua_State* %20, i32 0, i32 5 ; [#uses=1] + %22 = load %struct.lua_TValue** %21, align 4 ; [#uses=1] + store %struct.lua_TValue* %22, %struct.lua_TValue** %base, align 4 + %23 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LClosure* %23, i32 0, i32 7 ; [#uses=1] + %25 = load %struct.Proto** %24, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.Proto* %25, i32 0, i32 3 ; [#uses=1] + %27 = load %struct.lua_TValue** %26, align 4 ; [#uses=1] + store %struct.lua_TValue* %27, %struct.lua_TValue** %k, align 4 + br label %28 + +; <label>:28 ; preds = %2187, %2186, %2076, %1975, %1974, %1851, %1729, %1680, %1582, %1469, %1428, %1373, %1333, %1269, %1205, %1126, %1103, %1073, %1003, %971, %936, %856, %771, %691, %611, %531, %446, %399, %357, %312, %229, %223, %170, %147, %146, %131, %95, %77, %3 + %29 = load i32** %pc, align 4 ; [#uses=2] + %30 = getelementptr inbounds i32* %29, i32 1 ; [#uses=1] + store i32* %30, i32** %pc, align 4 + %31 = load i32* %29 ; [#uses=1] + store i32 %31, i32* %i, align 4 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = getelementptr inbounds %struct.lua_State* %32, i32 0, i32 17 ; [#uses=1] + %34 = load i8* %33, align 1 ; [#uses=1] + %35 = zext i8 %34 to i32 ; [#uses=1] + %36 = and i32 %35, 12 ; [#uses=1] + %37 = icmp ne i32 %36, 0 ; [#uses=1] + br i1 %37, label %38, label %68 + +; <label>:38 ; preds = %28 + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_State* %39, i32 0, i32 20 ; [#uses=2] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = add nsw i32 %41, -1 ; [#uses=2] + store i32 %42, i32* %40, align 4 + %43 = icmp eq i32 %42, 0 ; [#uses=1] + br i1 %43, label %51, label %44 + +; <label>:44 ; preds = %38 + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.lua_State* %45, i32 0, i32 17 ; [#uses=1] + %47 = load i8* %46, align 1 ; [#uses=1] + %48 = zext i8 %47 to i32 ; [#uses=1] + %49 = and i32 %48, 4 ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %68 + +; <label>:51 ; preds = %44, %38 + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = load i32** %pc, align 4 ; [#uses=1] + call void @_Z9traceexecP9lua_StatePKj(%struct.lua_State* %52, i32* %53) + %54 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.lua_State* %54, i32 0, i32 3 ; [#uses=1] + %56 = load i8* %55, align 1 ; [#uses=1] + %57 = zext i8 %56 to i32 ; [#uses=1] + %58 = icmp eq i32 %57, 1 ; [#uses=1] + br i1 %58, label %59, label %64 + +; <label>:59 ; preds = %51 + %60 = load i32** %pc, align 4 ; [#uses=1] + %61 = getelementptr inbounds i32* %60, i32 -1 ; [#uses=1] + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = getelementptr inbounds %struct.lua_State* %62, i32 0, i32 8 ; [#uses=1] + store i32* %61, i32** %63, align 4 + br label %2188 + +; <label>:64 ; preds = %51 + %65 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.lua_State* %65, i32 0, i32 5 ; [#uses=1] + %67 = load %struct.lua_TValue** %66, align 4 ; [#uses=1] + store %struct.lua_TValue* %67, %struct.lua_TValue** %base, align 4 + br label %68 + +; <label>:68 ; preds = %64, %44, %28 + %69 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %70 = load i32* %i, align 4 ; [#uses=1] + %71 = lshr i32 %70, 6 ; [#uses=1] + %72 = and i32 %71, 255 ; [#uses=1] + %73 = getelementptr inbounds %struct.lua_TValue* %69, i32 %72 ; [#uses=1] + store %struct.lua_TValue* %73, %struct.lua_TValue** %ra, align 4 + %74 = load i32* %i, align 4 ; [#uses=1] + %75 = lshr i32 %74, 0 ; [#uses=1] + %76 = and i32 %75, 63 ; [#uses=1] + switch i32 %76, label %2187 [ + i32 0, label %77 + i32 1, label %95 + i32 2, label %113 + i32 3, label %132 + i32 4, label %147 + i32 5, label %170 + i32 6, label %195 + i32 7, label %229 + i32 8, label %253 + i32 9, label %313 + i32 10, label %362 + i32 11, label %403 + i32 12, label %452 + i32 13, label %532 + i32 14, label %612 + i32 15, label %692 + i32 16, label %772 + i32 17, label %857 + i32 18, label %937 + i32 19, label %972 + i32 20, label %1014 + i32 21, label %1074 + i32 22, label %1126 + i32 23, label %1133 + i32 24, label %1211 + i32 25, label %1275 + i32 26, label %1339 + i32 27, label %1376 + i32 28, label %1431 + i32 29, label %1474 + i32 30, label %1587 + i32 31, label %1631 + i32 32, label %1681 + i32 33, label %1751 + i32 34, label %1854 + i32 35, label %1975 + i32 36, label %1978 + i32 37, label %2080 + ] + +; <label>:77 ; preds = %68 + %78 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %79 = load i32* %i, align 4 ; [#uses=1] + %80 = lshr i32 %79, 23 ; [#uses=1] + %81 = and i32 %80, 511 ; [#uses=1] + %82 = getelementptr inbounds %struct.lua_TValue* %78, i32 %81 ; [#uses=1] + store %struct.lua_TValue* %82, %struct.lua_TValue** %o2, align 4 + %83 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %83, %struct.lua_TValue** %o1, align 4 + %84 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_TValue* %84, i32 0, i32 0 ; [#uses=1] + %86 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_TValue* %86, i32 0, i32 0 ; [#uses=1] + %88 = bitcast %union.anon* %85 to i8* ; [#uses=1] + %89 = bitcast %union.anon* %87 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %88, i8* %89, i32 8, i32 4, i1 false) + %90 = load %struct.lua_TValue** %o2, align 4 ; [#uses=1] + %91 = getelementptr inbounds %struct.lua_TValue* %90, i32 0, i32 1 ; [#uses=1] + %92 = load i32* %91, align 4 ; [#uses=1] + %93 = load %struct.lua_TValue** %o1, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.lua_TValue* %93, i32 0, i32 1 ; [#uses=1] + store i32 %92, i32* %94, align 4 + br label %28 + +; <label>:95 ; preds = %68 + %96 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %97 = load i32* %i, align 4 ; [#uses=1] + %98 = lshr i32 %97, 14 ; [#uses=1] + %99 = and i32 %98, 262143 ; [#uses=1] + %100 = getelementptr inbounds %struct.lua_TValue* %96, i32 %99 ; [#uses=1] + store %struct.lua_TValue* %100, %struct.lua_TValue** %o21, align 4 + %101 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %101, %struct.lua_TValue** %o12, align 4 + %102 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %103 = getelementptr inbounds %struct.lua_TValue* %102, i32 0, i32 0 ; [#uses=1] + %104 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.lua_TValue* %104, i32 0, i32 0 ; [#uses=1] + %106 = bitcast %union.anon* %103 to i8* ; [#uses=1] + %107 = bitcast %union.anon* %105 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %106, i8* %107, i32 8, i32 4, i1 false) + %108 = load %struct.lua_TValue** %o21, align 4 ; [#uses=1] + %109 = getelementptr inbounds %struct.lua_TValue* %108, i32 0, i32 1 ; [#uses=1] + %110 = load i32* %109, align 4 ; [#uses=1] + %111 = load %struct.lua_TValue** %o12, align 4 ; [#uses=1] + %112 = getelementptr inbounds %struct.lua_TValue* %111, i32 0, i32 1 ; [#uses=1] + store i32 %110, i32* %112, align 4 + br label %28 + +; <label>:113 ; preds = %68 + %114 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %114, %struct.lua_TValue** %i_o, align 4 + %115 = load i32* %i, align 4 ; [#uses=1] + %116 = lshr i32 %115, 23 ; [#uses=1] + %117 = and i32 %116, 511 ; [#uses=1] + %118 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %119 = getelementptr inbounds %struct.lua_TValue* %118, i32 0, i32 0 ; [#uses=1] + %120 = getelementptr inbounds %union.anon* %119, i32 0, i32 0 ; [#uses=1] + %121 = bitcast double* %120 to i32* ; [#uses=1] + store i32 %117, i32* %121, align 4 + %122 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %123 = getelementptr inbounds %struct.lua_TValue* %122, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %123, align 4 + %124 = load i32* %i, align 4 ; [#uses=1] + %125 = lshr i32 %124, 14 ; [#uses=1] + %126 = and i32 %125, 511 ; [#uses=1] + %127 = icmp ne i32 %126, 0 ; [#uses=1] + br i1 %127, label %128, label %131 + +; <label>:128 ; preds = %113 + %129 = load i32** %pc, align 4 ; [#uses=1] + %130 = getelementptr inbounds i32* %129, i32 1 ; [#uses=1] + store i32* %130, i32** %pc, align 4 + br label %131 + +; <label>:131 ; preds = %128, %113 + br label %28 + +; <label>:132 ; preds = %68 + %133 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %134 = load i32* %i, align 4 ; [#uses=1] + %135 = lshr i32 %134, 23 ; [#uses=1] + %136 = and i32 %135, 511 ; [#uses=1] + %137 = getelementptr inbounds %struct.lua_TValue* %133, i32 %136 ; [#uses=1] + store %struct.lua_TValue* %137, %struct.lua_TValue** %rb, align 4 + br label %138 + +; <label>:138 ; preds = %142, %132 + %139 = load %struct.lua_TValue** %rb, align 4 ; [#uses=2] + %140 = getelementptr inbounds %struct.lua_TValue* %139, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %140, %struct.lua_TValue** %rb, align 4 + %141 = getelementptr inbounds %struct.lua_TValue* %139, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %141, align 4 + br label %142 + +; <label>:142 ; preds = %138 + %143 = load %struct.lua_TValue** %rb, align 4 ; [#uses=1] + %144 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %145 = icmp uge %struct.lua_TValue* %143, %144 ; [#uses=1] + br i1 %145, label %138, label %146 + +; <label>:146 ; preds = %142 + br label %28 + +; <label>:147 ; preds = %68 + %148 = load i32* %i, align 4 ; [#uses=1] + %149 = lshr i32 %148, 23 ; [#uses=1] + %150 = and i32 %149, 511 ; [#uses=1] + store i32 %150, i32* %b, align 4 + %151 = load i32* %b, align 4 ; [#uses=1] + %152 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %153 = getelementptr inbounds %struct.LClosure* %152, i32 0, i32 8 ; [#uses=1] + %154 = getelementptr inbounds [1 x %struct.UpVal*]* %153, i32 0, i32 %151 ; [#uses=1] + %155 = load %struct.UpVal** %154 ; [#uses=1] + %156 = getelementptr inbounds %struct.UpVal* %155, i32 0, i32 3 ; [#uses=1] + %157 = load %struct.lua_TValue** %156, align 4 ; [#uses=1] + store %struct.lua_TValue* %157, %struct.lua_TValue** %o23, align 4 + %158 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %158, %struct.lua_TValue** %o14, align 4 + %159 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %160 = getelementptr inbounds %struct.lua_TValue* %159, i32 0, i32 0 ; [#uses=1] + %161 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %162 = getelementptr inbounds %struct.lua_TValue* %161, i32 0, i32 0 ; [#uses=1] + %163 = bitcast %union.anon* %160 to i8* ; [#uses=1] + %164 = bitcast %union.anon* %162 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %163, i8* %164, i32 8, i32 4, i1 false) + %165 = load %struct.lua_TValue** %o23, align 4 ; [#uses=1] + %166 = getelementptr inbounds %struct.lua_TValue* %165, i32 0, i32 1 ; [#uses=1] + %167 = load i32* %166, align 4 ; [#uses=1] + %168 = load %struct.lua_TValue** %o14, align 4 ; [#uses=1] + %169 = getelementptr inbounds %struct.lua_TValue* %168, i32 0, i32 1 ; [#uses=1] + store i32 %167, i32* %169, align 4 + br label %28 + +; <label>:170 ; preds = %68 + %171 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %172 = load i32* %i, align 4 ; [#uses=1] + %173 = lshr i32 %172, 14 ; [#uses=1] + %174 = and i32 %173, 262143 ; [#uses=1] + %175 = getelementptr inbounds %struct.lua_TValue* %171, i32 %174 ; [#uses=1] + store %struct.lua_TValue* %175, %struct.lua_TValue** %rb5, align 4 + store %struct.lua_TValue* %g, %struct.lua_TValue** %i_o6, align 4 + %176 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %177 = getelementptr inbounds %struct.LClosure* %176, i32 0, i32 6 ; [#uses=1] + %178 = load %struct.Table** %177, align 4 ; [#uses=1] + %179 = bitcast %struct.Table* %178 to %union.GCObject* ; [#uses=1] + %180 = load %struct.lua_TValue** %i_o6, align 4 ; [#uses=1] + %181 = getelementptr inbounds %struct.lua_TValue* %180, i32 0, i32 0 ; [#uses=1] + %182 = getelementptr inbounds %union.anon* %181, i32 0, i32 0 ; [#uses=1] + %183 = bitcast double* %182 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %179, %union.GCObject** %183, align 4 + %184 = load %struct.lua_TValue** %i_o6, align 4 ; [#uses=1] + %185 = getelementptr inbounds %struct.lua_TValue* %184, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %185, align 4 + %186 = load i32** %pc, align 4 ; [#uses=1] + %187 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %188 = getelementptr inbounds %struct.lua_State* %187, i32 0, i32 8 ; [#uses=1] + store i32* %186, i32** %188, align 4 + %189 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %190 = load %struct.lua_TValue** %rb5, align 4 ; [#uses=1] + %191 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + call void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %189, %struct.lua_TValue* %g, %struct.lua_TValue* %190, %struct.lua_TValue* %191) + %192 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %193 = getelementptr inbounds %struct.lua_State* %192, i32 0, i32 5 ; [#uses=1] + %194 = load %struct.lua_TValue** %193, align 4 ; [#uses=1] + store %struct.lua_TValue* %194, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:195 ; preds = %68 + %196 = load i32** %pc, align 4 ; [#uses=1] + %197 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %198 = getelementptr inbounds %struct.lua_State* %197, i32 0, i32 8 ; [#uses=1] + store i32* %196, i32** %198, align 4 + %199 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %200 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %201 = load i32* %i, align 4 ; [#uses=1] + %202 = lshr i32 %201, 23 ; [#uses=1] + %203 = and i32 %202, 511 ; [#uses=1] + %204 = getelementptr inbounds %struct.lua_TValue* %200, i32 %203 ; [#uses=1] + %205 = load i32* %i, align 4 ; [#uses=1] + %206 = lshr i32 %205, 14 ; [#uses=1] + %207 = and i32 %206, 511 ; [#uses=1] + %208 = and i32 %207, 256 ; [#uses=1] + %209 = icmp ne i32 %208, 0 ; [#uses=1] + br i1 %209, label %210, label %217 + +; <label>:210 ; preds = %195 + %211 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %212 = load i32* %i, align 4 ; [#uses=1] + %213 = lshr i32 %212, 14 ; [#uses=1] + %214 = and i32 %213, 511 ; [#uses=1] + %215 = and i32 %214, -257 ; [#uses=1] + %216 = getelementptr inbounds %struct.lua_TValue* %211, i32 %215 ; [#uses=1] + br label %223 + +; <label>:217 ; preds = %195 + %218 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %219 = load i32* %i, align 4 ; [#uses=1] + %220 = lshr i32 %219, 14 ; [#uses=1] + %221 = and i32 %220, 511 ; [#uses=1] + %222 = getelementptr inbounds %struct.lua_TValue* %218, i32 %221 ; [#uses=1] + br label %223 + +; <label>:223 ; preds = %217, %210 + %224 = phi %struct.lua_TValue* [ %216, %210 ], [ %222, %217 ] ; [#uses=1] + %225 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + call void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %199, %struct.lua_TValue* %204, %struct.lua_TValue* %224, %struct.lua_TValue* %225) + %226 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %227 = getelementptr inbounds %struct.lua_State* %226, i32 0, i32 5 ; [#uses=1] + %228 = load %struct.lua_TValue** %227, align 4 ; [#uses=1] + store %struct.lua_TValue* %228, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:229 ; preds = %68 + store %struct.lua_TValue* %g7, %struct.lua_TValue** %i_o8, align 4 + %230 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %231 = getelementptr inbounds %struct.LClosure* %230, i32 0, i32 6 ; [#uses=1] + %232 = load %struct.Table** %231, align 4 ; [#uses=1] + %233 = bitcast %struct.Table* %232 to %union.GCObject* ; [#uses=1] + %234 = load %struct.lua_TValue** %i_o8, align 4 ; [#uses=1] + %235 = getelementptr inbounds %struct.lua_TValue* %234, i32 0, i32 0 ; [#uses=1] + %236 = getelementptr inbounds %union.anon* %235, i32 0, i32 0 ; [#uses=1] + %237 = bitcast double* %236 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %233, %union.GCObject** %237, align 4 + %238 = load %struct.lua_TValue** %i_o8, align 4 ; [#uses=1] + %239 = getelementptr inbounds %struct.lua_TValue* %238, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %239, align 4 + %240 = load i32** %pc, align 4 ; [#uses=1] + %241 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %242 = getelementptr inbounds %struct.lua_State* %241, i32 0, i32 8 ; [#uses=1] + store i32* %240, i32** %242, align 4 + %243 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %244 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %245 = load i32* %i, align 4 ; [#uses=1] + %246 = lshr i32 %245, 14 ; [#uses=1] + %247 = and i32 %246, 262143 ; [#uses=1] + %248 = getelementptr inbounds %struct.lua_TValue* %244, i32 %247 ; [#uses=1] + %249 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + call void @_Z13luaV_settableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %243, %struct.lua_TValue* %g7, %struct.lua_TValue* %248, %struct.lua_TValue* %249) + %250 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %251 = getelementptr inbounds %struct.lua_State* %250, i32 0, i32 5 ; [#uses=1] + %252 = load %struct.lua_TValue** %251, align 4 ; [#uses=1] + store %struct.lua_TValue* %252, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:253 ; preds = %68 + %254 = load i32* %i, align 4 ; [#uses=1] + %255 = lshr i32 %254, 23 ; [#uses=1] + %256 = and i32 %255, 511 ; [#uses=1] + %257 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %258 = getelementptr inbounds %struct.LClosure* %257, i32 0, i32 8 ; [#uses=1] + %259 = getelementptr inbounds [1 x %struct.UpVal*]* %258, i32 0, i32 %256 ; [#uses=1] + %260 = load %struct.UpVal** %259 ; [#uses=1] + store %struct.UpVal* %260, %struct.UpVal** %uv, align 4 + %261 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %261, %struct.lua_TValue** %o29, align 4 + %262 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %263 = getelementptr inbounds %struct.UpVal* %262, i32 0, i32 3 ; [#uses=1] + %264 = load %struct.lua_TValue** %263, align 4 ; [#uses=1] + store %struct.lua_TValue* %264, %struct.lua_TValue** %o110, align 4 + %265 = load %struct.lua_TValue** %o110, align 4 ; [#uses=1] + %266 = getelementptr inbounds %struct.lua_TValue* %265, i32 0, i32 0 ; [#uses=1] + %267 = load %struct.lua_TValue** %o29, align 4 ; [#uses=1] + %268 = getelementptr inbounds %struct.lua_TValue* %267, i32 0, i32 0 ; [#uses=1] + %269 = bitcast %union.anon* %266 to i8* ; [#uses=1] + %270 = bitcast %union.anon* %268 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %269, i8* %270, i32 8, i32 4, i1 false) + %271 = load %struct.lua_TValue** %o29, align 4 ; [#uses=1] + %272 = getelementptr inbounds %struct.lua_TValue* %271, i32 0, i32 1 ; [#uses=1] + %273 = load i32* %272, align 4 ; [#uses=1] + %274 = load %struct.lua_TValue** %o110, align 4 ; [#uses=1] + %275 = getelementptr inbounds %struct.lua_TValue* %274, i32 0, i32 1 ; [#uses=1] + store i32 %273, i32* %275, align 4 + %276 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %277 = getelementptr inbounds %struct.lua_TValue* %276, i32 0, i32 1 ; [#uses=1] + %278 = load i32* %277, align 4 ; [#uses=1] + %279 = icmp sge i32 %278, 4 ; [#uses=1] + br i1 %279, label %280, label %312 + +; <label>:280 ; preds = %253 + %281 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %282 = getelementptr inbounds %struct.lua_TValue* %281, i32 0, i32 0 ; [#uses=1] + %283 = getelementptr inbounds %union.anon* %282, i32 0, i32 0 ; [#uses=1] + %284 = bitcast double* %283 to %union.GCObject** ; [#uses=1] + %285 = load %union.GCObject** %284, align 4 ; [#uses=1] + %286 = getelementptr inbounds %union.GCObject* %285, i32 0, i32 0 ; [#uses=1] + %287 = bitcast %struct.lua_State* %286 to %struct.GCheader* ; [#uses=1] + %288 = getelementptr inbounds %struct.GCheader* %287, i32 0, i32 2 ; [#uses=1] + %289 = load i8* %288, align 1 ; [#uses=1] + %290 = zext i8 %289 to i32 ; [#uses=1] + %291 = and i32 %290, 3 ; [#uses=1] + %292 = icmp ne i32 %291, 0 ; [#uses=1] + br i1 %292, label %293, label %312 + +; <label>:293 ; preds = %280 + %294 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %295 = bitcast %struct.UpVal* %294 to %union.GCObject* ; [#uses=1] + %296 = getelementptr inbounds %union.GCObject* %295, i32 0, i32 0 ; [#uses=1] + %297 = bitcast %struct.lua_State* %296 to %struct.GCheader* ; [#uses=1] + %298 = getelementptr inbounds %struct.GCheader* %297, i32 0, i32 2 ; [#uses=1] + %299 = load i8* %298, align 1 ; [#uses=1] + %300 = zext i8 %299 to i32 ; [#uses=1] + %301 = and i32 %300, 4 ; [#uses=1] + %302 = icmp ne i32 %301, 0 ; [#uses=1] + br i1 %302, label %303, label %312 + +; <label>:303 ; preds = %293 + %304 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %305 = load %struct.UpVal** %uv, align 4 ; [#uses=1] + %306 = bitcast %struct.UpVal* %305 to %union.GCObject* ; [#uses=1] + %307 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %308 = getelementptr inbounds %struct.lua_TValue* %307, i32 0, i32 0 ; [#uses=1] + %309 = getelementptr inbounds %union.anon* %308, i32 0, i32 0 ; [#uses=1] + %310 = bitcast double* %309 to %union.GCObject** ; [#uses=1] + %311 = load %union.GCObject** %310, align 4 ; [#uses=1] + call void @_Z13luaC_barrierfP9lua_StateP8GCObjectS2_(%struct.lua_State* %304, %union.GCObject* %306, %union.GCObject* %311) + br label %312 + +; <label>:312 ; preds = %303, %293, %280, %253 + br label %28 + +; <label>:313 ; preds = %68 + %314 = load i32** %pc, align 4 ; [#uses=1] + %315 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %316 = getelementptr inbounds %struct.lua_State* %315, i32 0, i32 8 ; [#uses=1] + store i32* %314, i32** %316, align 4 + %317 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %318 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %319 = load i32* %i, align 4 ; [#uses=1] + %320 = lshr i32 %319, 23 ; [#uses=1] + %321 = and i32 %320, 511 ; [#uses=1] + %322 = and i32 %321, 256 ; [#uses=1] + %323 = icmp ne i32 %322, 0 ; [#uses=1] + br i1 %323, label %324, label %331 + +; <label>:324 ; preds = %313 + %325 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %326 = load i32* %i, align 4 ; [#uses=1] + %327 = lshr i32 %326, 23 ; [#uses=1] + %328 = and i32 %327, 511 ; [#uses=1] + %329 = and i32 %328, -257 ; [#uses=1] + %330 = getelementptr inbounds %struct.lua_TValue* %325, i32 %329 ; [#uses=1] + br label %337 + +; <label>:331 ; preds = %313 + %332 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %333 = load i32* %i, align 4 ; [#uses=1] + %334 = lshr i32 %333, 23 ; [#uses=1] + %335 = and i32 %334, 511 ; [#uses=1] + %336 = getelementptr inbounds %struct.lua_TValue* %332, i32 %335 ; [#uses=1] + br label %337 + +; <label>:337 ; preds = %331, %324 + %338 = phi %struct.lua_TValue* [ %330, %324 ], [ %336, %331 ] ; [#uses=1] + %339 = load i32* %i, align 4 ; [#uses=1] + %340 = lshr i32 %339, 14 ; [#uses=1] + %341 = and i32 %340, 511 ; [#uses=1] + %342 = and i32 %341, 256 ; [#uses=1] + %343 = icmp ne i32 %342, 0 ; [#uses=1] + br i1 %343, label %344, label %351 + +; <label>:344 ; preds = %337 + %345 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %346 = load i32* %i, align 4 ; [#uses=1] + %347 = lshr i32 %346, 14 ; [#uses=1] + %348 = and i32 %347, 511 ; [#uses=1] + %349 = and i32 %348, -257 ; [#uses=1] + %350 = getelementptr inbounds %struct.lua_TValue* %345, i32 %349 ; [#uses=1] + br label %357 + +; <label>:351 ; preds = %337 + %352 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %353 = load i32* %i, align 4 ; [#uses=1] + %354 = lshr i32 %353, 14 ; [#uses=1] + %355 = and i32 %354, 511 ; [#uses=1] + %356 = getelementptr inbounds %struct.lua_TValue* %352, i32 %355 ; [#uses=1] + br label %357 + +; <label>:357 ; preds = %351, %344 + %358 = phi %struct.lua_TValue* [ %350, %344 ], [ %356, %351 ] ; [#uses=1] + call void @_Z13luaV_settableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %317, %struct.lua_TValue* %318, %struct.lua_TValue* %338, %struct.lua_TValue* %358) + %359 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %360 = getelementptr inbounds %struct.lua_State* %359, i32 0, i32 5 ; [#uses=1] + %361 = load %struct.lua_TValue** %360, align 4 ; [#uses=1] + store %struct.lua_TValue* %361, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:362 ; preds = %68 + %363 = load i32* %i, align 4 ; [#uses=1] + %364 = lshr i32 %363, 23 ; [#uses=1] + %365 = and i32 %364, 511 ; [#uses=1] + store i32 %365, i32* %b11, align 4 + %366 = load i32* %i, align 4 ; [#uses=1] + %367 = lshr i32 %366, 14 ; [#uses=1] + %368 = and i32 %367, 511 ; [#uses=1] + store i32 %368, i32* %c, align 4 + %369 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %369, %struct.lua_TValue** %i_o12, align 4 + %370 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %371 = load i32* %b11, align 4 ; [#uses=1] + %372 = call i32 @_Z11luaO_fb2inti(i32 %371) ; [#uses=1] + %373 = load i32* %c, align 4 ; [#uses=1] + %374 = call i32 @_Z11luaO_fb2inti(i32 %373) ; [#uses=1] + %375 = call %struct.Table* @_Z8luaH_newP9lua_Stateii(%struct.lua_State* %370, i32 %372, i32 %374) ; [#uses=1] + %376 = bitcast %struct.Table* %375 to %union.GCObject* ; [#uses=1] + %377 = load %struct.lua_TValue** %i_o12, align 4 ; [#uses=1] + %378 = getelementptr inbounds %struct.lua_TValue* %377, i32 0, i32 0 ; [#uses=1] + %379 = getelementptr inbounds %union.anon* %378, i32 0, i32 0 ; [#uses=1] + %380 = bitcast double* %379 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %376, %union.GCObject** %380, align 4 + %381 = load %struct.lua_TValue** %i_o12, align 4 ; [#uses=1] + %382 = getelementptr inbounds %struct.lua_TValue* %381, i32 0, i32 1 ; [#uses=1] + store i32 5, i32* %382, align 4 + %383 = load i32** %pc, align 4 ; [#uses=1] + %384 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %385 = getelementptr inbounds %struct.lua_State* %384, i32 0, i32 8 ; [#uses=1] + store i32* %383, i32** %385, align 4 + %386 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %387 = getelementptr inbounds %struct.lua_State* %386, i32 0, i32 6 ; [#uses=1] + %388 = load %struct.global_State** %387, align 4 ; [#uses=1] + %389 = getelementptr inbounds %struct.global_State* %388, i32 0, i32 14 ; [#uses=1] + %390 = load i32* %389, align 4 ; [#uses=1] + %391 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %392 = getelementptr inbounds %struct.lua_State* %391, i32 0, i32 6 ; [#uses=1] + %393 = load %struct.global_State** %392, align 4 ; [#uses=1] + %394 = getelementptr inbounds %struct.global_State* %393, i32 0, i32 13 ; [#uses=1] + %395 = load i32* %394, align 4 ; [#uses=1] + %396 = icmp uge i32 %390, %395 ; [#uses=1] + br i1 %396, label %397, label %399 + +; <label>:397 ; preds = %362 + %398 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %398) + br label %399 + +; <label>:399 ; preds = %397, %362 + %400 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %401 = getelementptr inbounds %struct.lua_State* %400, i32 0, i32 5 ; [#uses=1] + %402 = load %struct.lua_TValue** %401, align 4 ; [#uses=1] + store %struct.lua_TValue* %402, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:403 ; preds = %68 + %404 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %405 = load i32* %i, align 4 ; [#uses=1] + %406 = lshr i32 %405, 23 ; [#uses=1] + %407 = and i32 %406, 511 ; [#uses=1] + %408 = getelementptr inbounds %struct.lua_TValue* %404, i32 %407 ; [#uses=1] + store %struct.lua_TValue* %408, %struct.lua_TValue** %rb13, align 4 + %409 = load %struct.lua_TValue** %rb13, align 4 ; [#uses=1] + store %struct.lua_TValue* %409, %struct.lua_TValue** %o214, align 4 + %410 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %411 = getelementptr inbounds %struct.lua_TValue* %410, i32 1 ; [#uses=1] + store %struct.lua_TValue* %411, %struct.lua_TValue** %o115, align 4 + %412 = load %struct.lua_TValue** %o115, align 4 ; [#uses=1] + %413 = getelementptr inbounds %struct.lua_TValue* %412, i32 0, i32 0 ; [#uses=1] + %414 = load %struct.lua_TValue** %o214, align 4 ; [#uses=1] + %415 = getelementptr inbounds %struct.lua_TValue* %414, i32 0, i32 0 ; [#uses=1] + %416 = bitcast %union.anon* %413 to i8* ; [#uses=1] + %417 = bitcast %union.anon* %415 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %416, i8* %417, i32 8, i32 4, i1 false) + %418 = load %struct.lua_TValue** %o214, align 4 ; [#uses=1] + %419 = getelementptr inbounds %struct.lua_TValue* %418, i32 0, i32 1 ; [#uses=1] + %420 = load i32* %419, align 4 ; [#uses=1] + %421 = load %struct.lua_TValue** %o115, align 4 ; [#uses=1] + %422 = getelementptr inbounds %struct.lua_TValue* %421, i32 0, i32 1 ; [#uses=1] + store i32 %420, i32* %422, align 4 + %423 = load i32** %pc, align 4 ; [#uses=1] + %424 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %425 = getelementptr inbounds %struct.lua_State* %424, i32 0, i32 8 ; [#uses=1] + store i32* %423, i32** %425, align 4 + %426 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %427 = load %struct.lua_TValue** %rb13, align 4 ; [#uses=1] + %428 = load i32* %i, align 4 ; [#uses=1] + %429 = lshr i32 %428, 14 ; [#uses=1] + %430 = and i32 %429, 511 ; [#uses=1] + %431 = and i32 %430, 256 ; [#uses=1] + %432 = icmp ne i32 %431, 0 ; [#uses=1] + br i1 %432, label %433, label %440 + +; <label>:433 ; preds = %403 + %434 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %435 = load i32* %i, align 4 ; [#uses=1] + %436 = lshr i32 %435, 14 ; [#uses=1] + %437 = and i32 %436, 511 ; [#uses=1] + %438 = and i32 %437, -257 ; [#uses=1] + %439 = getelementptr inbounds %struct.lua_TValue* %434, i32 %438 ; [#uses=1] + br label %446 + +; <label>:440 ; preds = %403 + %441 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %442 = load i32* %i, align 4 ; [#uses=1] + %443 = lshr i32 %442, 14 ; [#uses=1] + %444 = and i32 %443, 511 ; [#uses=1] + %445 = getelementptr inbounds %struct.lua_TValue* %441, i32 %444 ; [#uses=1] + br label %446 + +; <label>:446 ; preds = %440, %433 + %447 = phi %struct.lua_TValue* [ %439, %433 ], [ %445, %440 ] ; [#uses=1] + %448 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + call void @_Z13luaV_gettableP9lua_StatePK10lua_TValuePS1_S4_(%struct.lua_State* %426, %struct.lua_TValue* %427, %struct.lua_TValue* %447, %struct.lua_TValue* %448) + %449 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %450 = getelementptr inbounds %struct.lua_State* %449, i32 0, i32 5 ; [#uses=1] + %451 = load %struct.lua_TValue** %450, align 4 ; [#uses=1] + store %struct.lua_TValue* %451, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:452 ; preds = %68 + %453 = load i32* %i, align 4 ; [#uses=1] + %454 = lshr i32 %453, 23 ; [#uses=1] + %455 = and i32 %454, 511 ; [#uses=1] + %456 = and i32 %455, 256 ; [#uses=1] + %457 = icmp ne i32 %456, 0 ; [#uses=1] + br i1 %457, label %458, label %465 + +; <label>:458 ; preds = %452 + %459 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %460 = load i32* %i, align 4 ; [#uses=1] + %461 = lshr i32 %460, 23 ; [#uses=1] + %462 = and i32 %461, 511 ; [#uses=1] + %463 = and i32 %462, -257 ; [#uses=1] + %464 = getelementptr inbounds %struct.lua_TValue* %459, i32 %463 ; [#uses=1] + br label %471 + +; <label>:465 ; preds = %452 + %466 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %467 = load i32* %i, align 4 ; [#uses=1] + %468 = lshr i32 %467, 23 ; [#uses=1] + %469 = and i32 %468, 511 ; [#uses=1] + %470 = getelementptr inbounds %struct.lua_TValue* %466, i32 %469 ; [#uses=1] + br label %471 + +; <label>:471 ; preds = %465, %458 + %472 = phi %struct.lua_TValue* [ %464, %458 ], [ %470, %465 ] ; [#uses=1] + store %struct.lua_TValue* %472, %struct.lua_TValue** %rb16, align 4 + %473 = load i32* %i, align 4 ; [#uses=1] + %474 = lshr i32 %473, 14 ; [#uses=1] + %475 = and i32 %474, 511 ; [#uses=1] + %476 = and i32 %475, 256 ; [#uses=1] + %477 = icmp ne i32 %476, 0 ; [#uses=1] + br i1 %477, label %478, label %485 + +; <label>:478 ; preds = %471 + %479 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %480 = load i32* %i, align 4 ; [#uses=1] + %481 = lshr i32 %480, 14 ; [#uses=1] + %482 = and i32 %481, 511 ; [#uses=1] + %483 = and i32 %482, -257 ; [#uses=1] + %484 = getelementptr inbounds %struct.lua_TValue* %479, i32 %483 ; [#uses=1] + br label %491 + +; <label>:485 ; preds = %471 + %486 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %487 = load i32* %i, align 4 ; [#uses=1] + %488 = lshr i32 %487, 14 ; [#uses=1] + %489 = and i32 %488, 511 ; [#uses=1] + %490 = getelementptr inbounds %struct.lua_TValue* %486, i32 %489 ; [#uses=1] + br label %491 + +; <label>:491 ; preds = %485, %478 + %492 = phi %struct.lua_TValue* [ %484, %478 ], [ %490, %485 ] ; [#uses=1] + store %struct.lua_TValue* %492, %struct.lua_TValue** %rc, align 4 + %493 = load %struct.lua_TValue** %rb16, align 4 ; [#uses=1] + %494 = getelementptr inbounds %struct.lua_TValue* %493, i32 0, i32 1 ; [#uses=1] + %495 = load i32* %494, align 4 ; [#uses=1] + %496 = icmp eq i32 %495, 3 ; [#uses=1] + br i1 %496, label %497, label %520 + +; <label>:497 ; preds = %491 + %498 = load %struct.lua_TValue** %rc, align 4 ; [#uses=1] + %499 = getelementptr inbounds %struct.lua_TValue* %498, i32 0, i32 1 ; [#uses=1] + %500 = load i32* %499, align 4 ; [#uses=1] + %501 = icmp eq i32 %500, 3 ; [#uses=1] + br i1 %501, label %502, label %520 + +; <label>:502 ; preds = %497 + %503 = load %struct.lua_TValue** %rb16, align 4 ; [#uses=1] + %504 = getelementptr inbounds %struct.lua_TValue* %503, i32 0, i32 0 ; [#uses=1] + %505 = getelementptr inbounds %union.anon* %504, i32 0, i32 0 ; [#uses=1] + %506 = load double* %505, align 4 ; [#uses=1] + store double %506, double* %nb, align 8 + %507 = load %struct.lua_TValue** %rc, align 4 ; [#uses=1] + %508 = getelementptr inbounds %struct.lua_TValue* %507, i32 0, i32 0 ; [#uses=1] + %509 = getelementptr inbounds %union.anon* %508, i32 0, i32 0 ; [#uses=1] + %510 = load double* %509, align 4 ; [#uses=1] + store double %510, double* %nc, align 8 + %511 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %511, %struct.lua_TValue** %i_o17, align 4 + %512 = load double* %nb, align 8 ; [#uses=1] + %513 = load double* %nc, align 8 ; [#uses=1] + %514 = fadd double %512, %513 ; [#uses=1] + %515 = load %struct.lua_TValue** %i_o17, align 4 ; [#uses=1] + %516 = getelementptr inbounds %struct.lua_TValue* %515, i32 0, i32 0 ; [#uses=1] + %517 = getelementptr inbounds %union.anon* %516, i32 0, i32 0 ; [#uses=1] + store double %514, double* %517, align 4 + %518 = load %struct.lua_TValue** %i_o17, align 4 ; [#uses=1] + %519 = getelementptr inbounds %struct.lua_TValue* %518, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %519, align 4 + br label %531 + +; <label>:520 ; preds = %497, %491 + %521 = load i32** %pc, align 4 ; [#uses=1] + %522 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %523 = getelementptr inbounds %struct.lua_State* %522, i32 0, i32 8 ; [#uses=1] + store i32* %521, i32** %523, align 4 + %524 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %525 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %526 = load %struct.lua_TValue** %rb16, align 4 ; [#uses=1] + %527 = load %struct.lua_TValue** %rc, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %524, %struct.lua_TValue* %525, %struct.lua_TValue* %526, %struct.lua_TValue* %527, i32 5) + %528 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %529 = getelementptr inbounds %struct.lua_State* %528, i32 0, i32 5 ; [#uses=1] + %530 = load %struct.lua_TValue** %529, align 4 ; [#uses=1] + store %struct.lua_TValue* %530, %struct.lua_TValue** %base, align 4 + br label %531 + +; <label>:531 ; preds = %520, %502 + br label %28 + +; <label>:532 ; preds = %68 + %533 = load i32* %i, align 4 ; [#uses=1] + %534 = lshr i32 %533, 23 ; [#uses=1] + %535 = and i32 %534, 511 ; [#uses=1] + %536 = and i32 %535, 256 ; [#uses=1] + %537 = icmp ne i32 %536, 0 ; [#uses=1] + br i1 %537, label %538, label %545 + +; <label>:538 ; preds = %532 + %539 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %540 = load i32* %i, align 4 ; [#uses=1] + %541 = lshr i32 %540, 23 ; [#uses=1] + %542 = and i32 %541, 511 ; [#uses=1] + %543 = and i32 %542, -257 ; [#uses=1] + %544 = getelementptr inbounds %struct.lua_TValue* %539, i32 %543 ; [#uses=1] + br label %551 + +; <label>:545 ; preds = %532 + %546 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %547 = load i32* %i, align 4 ; [#uses=1] + %548 = lshr i32 %547, 23 ; [#uses=1] + %549 = and i32 %548, 511 ; [#uses=1] + %550 = getelementptr inbounds %struct.lua_TValue* %546, i32 %549 ; [#uses=1] + br label %551 + +; <label>:551 ; preds = %545, %538 + %552 = phi %struct.lua_TValue* [ %544, %538 ], [ %550, %545 ] ; [#uses=1] + store %struct.lua_TValue* %552, %struct.lua_TValue** %rb18, align 4 + %553 = load i32* %i, align 4 ; [#uses=1] + %554 = lshr i32 %553, 14 ; [#uses=1] + %555 = and i32 %554, 511 ; [#uses=1] + %556 = and i32 %555, 256 ; [#uses=1] + %557 = icmp ne i32 %556, 0 ; [#uses=1] + br i1 %557, label %558, label %565 + +; <label>:558 ; preds = %551 + %559 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %560 = load i32* %i, align 4 ; [#uses=1] + %561 = lshr i32 %560, 14 ; [#uses=1] + %562 = and i32 %561, 511 ; [#uses=1] + %563 = and i32 %562, -257 ; [#uses=1] + %564 = getelementptr inbounds %struct.lua_TValue* %559, i32 %563 ; [#uses=1] + br label %571 + +; <label>:565 ; preds = %551 + %566 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %567 = load i32* %i, align 4 ; [#uses=1] + %568 = lshr i32 %567, 14 ; [#uses=1] + %569 = and i32 %568, 511 ; [#uses=1] + %570 = getelementptr inbounds %struct.lua_TValue* %566, i32 %569 ; [#uses=1] + br label %571 + +; <label>:571 ; preds = %565, %558 + %572 = phi %struct.lua_TValue* [ %564, %558 ], [ %570, %565 ] ; [#uses=1] + store %struct.lua_TValue* %572, %struct.lua_TValue** %rc19, align 4 + %573 = load %struct.lua_TValue** %rb18, align 4 ; [#uses=1] + %574 = getelementptr inbounds %struct.lua_TValue* %573, i32 0, i32 1 ; [#uses=1] + %575 = load i32* %574, align 4 ; [#uses=1] + %576 = icmp eq i32 %575, 3 ; [#uses=1] + br i1 %576, label %577, label %600 + +; <label>:577 ; preds = %571 + %578 = load %struct.lua_TValue** %rc19, align 4 ; [#uses=1] + %579 = getelementptr inbounds %struct.lua_TValue* %578, i32 0, i32 1 ; [#uses=1] + %580 = load i32* %579, align 4 ; [#uses=1] + %581 = icmp eq i32 %580, 3 ; [#uses=1] + br i1 %581, label %582, label %600 + +; <label>:582 ; preds = %577 + %583 = load %struct.lua_TValue** %rb18, align 4 ; [#uses=1] + %584 = getelementptr inbounds %struct.lua_TValue* %583, i32 0, i32 0 ; [#uses=1] + %585 = getelementptr inbounds %union.anon* %584, i32 0, i32 0 ; [#uses=1] + %586 = load double* %585, align 4 ; [#uses=1] + store double %586, double* %nb20, align 8 + %587 = load %struct.lua_TValue** %rc19, align 4 ; [#uses=1] + %588 = getelementptr inbounds %struct.lua_TValue* %587, i32 0, i32 0 ; [#uses=1] + %589 = getelementptr inbounds %union.anon* %588, i32 0, i32 0 ; [#uses=1] + %590 = load double* %589, align 4 ; [#uses=1] + store double %590, double* %nc21, align 8 + %591 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %591, %struct.lua_TValue** %i_o22, align 4 + %592 = load double* %nb20, align 8 ; [#uses=1] + %593 = load double* %nc21, align 8 ; [#uses=1] + %594 = fsub double %592, %593 ; [#uses=1] + %595 = load %struct.lua_TValue** %i_o22, align 4 ; [#uses=1] + %596 = getelementptr inbounds %struct.lua_TValue* %595, i32 0, i32 0 ; [#uses=1] + %597 = getelementptr inbounds %union.anon* %596, i32 0, i32 0 ; [#uses=1] + store double %594, double* %597, align 4 + %598 = load %struct.lua_TValue** %i_o22, align 4 ; [#uses=1] + %599 = getelementptr inbounds %struct.lua_TValue* %598, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %599, align 4 + br label %611 + +; <label>:600 ; preds = %577, %571 + %601 = load i32** %pc, align 4 ; [#uses=1] + %602 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %603 = getelementptr inbounds %struct.lua_State* %602, i32 0, i32 8 ; [#uses=1] + store i32* %601, i32** %603, align 4 + %604 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %605 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %606 = load %struct.lua_TValue** %rb18, align 4 ; [#uses=1] + %607 = load %struct.lua_TValue** %rc19, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %604, %struct.lua_TValue* %605, %struct.lua_TValue* %606, %struct.lua_TValue* %607, i32 6) + %608 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %609 = getelementptr inbounds %struct.lua_State* %608, i32 0, i32 5 ; [#uses=1] + %610 = load %struct.lua_TValue** %609, align 4 ; [#uses=1] + store %struct.lua_TValue* %610, %struct.lua_TValue** %base, align 4 + br label %611 + +; <label>:611 ; preds = %600, %582 + br label %28 + +; <label>:612 ; preds = %68 + %613 = load i32* %i, align 4 ; [#uses=1] + %614 = lshr i32 %613, 23 ; [#uses=1] + %615 = and i32 %614, 511 ; [#uses=1] + %616 = and i32 %615, 256 ; [#uses=1] + %617 = icmp ne i32 %616, 0 ; [#uses=1] + br i1 %617, label %618, label %625 + +; <label>:618 ; preds = %612 + %619 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %620 = load i32* %i, align 4 ; [#uses=1] + %621 = lshr i32 %620, 23 ; [#uses=1] + %622 = and i32 %621, 511 ; [#uses=1] + %623 = and i32 %622, -257 ; [#uses=1] + %624 = getelementptr inbounds %struct.lua_TValue* %619, i32 %623 ; [#uses=1] + br label %631 + +; <label>:625 ; preds = %612 + %626 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %627 = load i32* %i, align 4 ; [#uses=1] + %628 = lshr i32 %627, 23 ; [#uses=1] + %629 = and i32 %628, 511 ; [#uses=1] + %630 = getelementptr inbounds %struct.lua_TValue* %626, i32 %629 ; [#uses=1] + br label %631 + +; <label>:631 ; preds = %625, %618 + %632 = phi %struct.lua_TValue* [ %624, %618 ], [ %630, %625 ] ; [#uses=1] + store %struct.lua_TValue* %632, %struct.lua_TValue** %rb23, align 4 + %633 = load i32* %i, align 4 ; [#uses=1] + %634 = lshr i32 %633, 14 ; [#uses=1] + %635 = and i32 %634, 511 ; [#uses=1] + %636 = and i32 %635, 256 ; [#uses=1] + %637 = icmp ne i32 %636, 0 ; [#uses=1] + br i1 %637, label %638, label %645 + +; <label>:638 ; preds = %631 + %639 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %640 = load i32* %i, align 4 ; [#uses=1] + %641 = lshr i32 %640, 14 ; [#uses=1] + %642 = and i32 %641, 511 ; [#uses=1] + %643 = and i32 %642, -257 ; [#uses=1] + %644 = getelementptr inbounds %struct.lua_TValue* %639, i32 %643 ; [#uses=1] + br label %651 + +; <label>:645 ; preds = %631 + %646 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %647 = load i32* %i, align 4 ; [#uses=1] + %648 = lshr i32 %647, 14 ; [#uses=1] + %649 = and i32 %648, 511 ; [#uses=1] + %650 = getelementptr inbounds %struct.lua_TValue* %646, i32 %649 ; [#uses=1] + br label %651 + +; <label>:651 ; preds = %645, %638 + %652 = phi %struct.lua_TValue* [ %644, %638 ], [ %650, %645 ] ; [#uses=1] + store %struct.lua_TValue* %652, %struct.lua_TValue** %rc24, align 4 + %653 = load %struct.lua_TValue** %rb23, align 4 ; [#uses=1] + %654 = getelementptr inbounds %struct.lua_TValue* %653, i32 0, i32 1 ; [#uses=1] + %655 = load i32* %654, align 4 ; [#uses=1] + %656 = icmp eq i32 %655, 3 ; [#uses=1] + br i1 %656, label %657, label %680 + +; <label>:657 ; preds = %651 + %658 = load %struct.lua_TValue** %rc24, align 4 ; [#uses=1] + %659 = getelementptr inbounds %struct.lua_TValue* %658, i32 0, i32 1 ; [#uses=1] + %660 = load i32* %659, align 4 ; [#uses=1] + %661 = icmp eq i32 %660, 3 ; [#uses=1] + br i1 %661, label %662, label %680 + +; <label>:662 ; preds = %657 + %663 = load %struct.lua_TValue** %rb23, align 4 ; [#uses=1] + %664 = getelementptr inbounds %struct.lua_TValue* %663, i32 0, i32 0 ; [#uses=1] + %665 = getelementptr inbounds %union.anon* %664, i32 0, i32 0 ; [#uses=1] + %666 = load double* %665, align 4 ; [#uses=1] + store double %666, double* %nb25, align 8 + %667 = load %struct.lua_TValue** %rc24, align 4 ; [#uses=1] + %668 = getelementptr inbounds %struct.lua_TValue* %667, i32 0, i32 0 ; [#uses=1] + %669 = getelementptr inbounds %union.anon* %668, i32 0, i32 0 ; [#uses=1] + %670 = load double* %669, align 4 ; [#uses=1] + store double %670, double* %nc26, align 8 + %671 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %671, %struct.lua_TValue** %i_o27, align 4 + %672 = load double* %nb25, align 8 ; [#uses=1] + %673 = load double* %nc26, align 8 ; [#uses=1] + %674 = fmul double %672, %673 ; [#uses=1] + %675 = load %struct.lua_TValue** %i_o27, align 4 ; [#uses=1] + %676 = getelementptr inbounds %struct.lua_TValue* %675, i32 0, i32 0 ; [#uses=1] + %677 = getelementptr inbounds %union.anon* %676, i32 0, i32 0 ; [#uses=1] + store double %674, double* %677, align 4 + %678 = load %struct.lua_TValue** %i_o27, align 4 ; [#uses=1] + %679 = getelementptr inbounds %struct.lua_TValue* %678, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %679, align 4 + br label %691 + +; <label>:680 ; preds = %657, %651 + %681 = load i32** %pc, align 4 ; [#uses=1] + %682 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %683 = getelementptr inbounds %struct.lua_State* %682, i32 0, i32 8 ; [#uses=1] + store i32* %681, i32** %683, align 4 + %684 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %685 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %686 = load %struct.lua_TValue** %rb23, align 4 ; [#uses=1] + %687 = load %struct.lua_TValue** %rc24, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %684, %struct.lua_TValue* %685, %struct.lua_TValue* %686, %struct.lua_TValue* %687, i32 7) + %688 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %689 = getelementptr inbounds %struct.lua_State* %688, i32 0, i32 5 ; [#uses=1] + %690 = load %struct.lua_TValue** %689, align 4 ; [#uses=1] + store %struct.lua_TValue* %690, %struct.lua_TValue** %base, align 4 + br label %691 + +; <label>:691 ; preds = %680, %662 + br label %28 + +; <label>:692 ; preds = %68 + %693 = load i32* %i, align 4 ; [#uses=1] + %694 = lshr i32 %693, 23 ; [#uses=1] + %695 = and i32 %694, 511 ; [#uses=1] + %696 = and i32 %695, 256 ; [#uses=1] + %697 = icmp ne i32 %696, 0 ; [#uses=1] + br i1 %697, label %698, label %705 + +; <label>:698 ; preds = %692 + %699 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %700 = load i32* %i, align 4 ; [#uses=1] + %701 = lshr i32 %700, 23 ; [#uses=1] + %702 = and i32 %701, 511 ; [#uses=1] + %703 = and i32 %702, -257 ; [#uses=1] + %704 = getelementptr inbounds %struct.lua_TValue* %699, i32 %703 ; [#uses=1] + br label %711 + +; <label>:705 ; preds = %692 + %706 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %707 = load i32* %i, align 4 ; [#uses=1] + %708 = lshr i32 %707, 23 ; [#uses=1] + %709 = and i32 %708, 511 ; [#uses=1] + %710 = getelementptr inbounds %struct.lua_TValue* %706, i32 %709 ; [#uses=1] + br label %711 + +; <label>:711 ; preds = %705, %698 + %712 = phi %struct.lua_TValue* [ %704, %698 ], [ %710, %705 ] ; [#uses=1] + store %struct.lua_TValue* %712, %struct.lua_TValue** %rb28, align 4 + %713 = load i32* %i, align 4 ; [#uses=1] + %714 = lshr i32 %713, 14 ; [#uses=1] + %715 = and i32 %714, 511 ; [#uses=1] + %716 = and i32 %715, 256 ; [#uses=1] + %717 = icmp ne i32 %716, 0 ; [#uses=1] + br i1 %717, label %718, label %725 + +; <label>:718 ; preds = %711 + %719 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %720 = load i32* %i, align 4 ; [#uses=1] + %721 = lshr i32 %720, 14 ; [#uses=1] + %722 = and i32 %721, 511 ; [#uses=1] + %723 = and i32 %722, -257 ; [#uses=1] + %724 = getelementptr inbounds %struct.lua_TValue* %719, i32 %723 ; [#uses=1] + br label %731 + +; <label>:725 ; preds = %711 + %726 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %727 = load i32* %i, align 4 ; [#uses=1] + %728 = lshr i32 %727, 14 ; [#uses=1] + %729 = and i32 %728, 511 ; [#uses=1] + %730 = getelementptr inbounds %struct.lua_TValue* %726, i32 %729 ; [#uses=1] + br label %731 + +; <label>:731 ; preds = %725, %718 + %732 = phi %struct.lua_TValue* [ %724, %718 ], [ %730, %725 ] ; [#uses=1] + store %struct.lua_TValue* %732, %struct.lua_TValue** %rc29, align 4 + %733 = load %struct.lua_TValue** %rb28, align 4 ; [#uses=1] + %734 = getelementptr inbounds %struct.lua_TValue* %733, i32 0, i32 1 ; [#uses=1] + %735 = load i32* %734, align 4 ; [#uses=1] + %736 = icmp eq i32 %735, 3 ; [#uses=1] + br i1 %736, label %737, label %760 + +; <label>:737 ; preds = %731 + %738 = load %struct.lua_TValue** %rc29, align 4 ; [#uses=1] + %739 = getelementptr inbounds %struct.lua_TValue* %738, i32 0, i32 1 ; [#uses=1] + %740 = load i32* %739, align 4 ; [#uses=1] + %741 = icmp eq i32 %740, 3 ; [#uses=1] + br i1 %741, label %742, label %760 + +; <label>:742 ; preds = %737 + %743 = load %struct.lua_TValue** %rb28, align 4 ; [#uses=1] + %744 = getelementptr inbounds %struct.lua_TValue* %743, i32 0, i32 0 ; [#uses=1] + %745 = getelementptr inbounds %union.anon* %744, i32 0, i32 0 ; [#uses=1] + %746 = load double* %745, align 4 ; [#uses=1] + store double %746, double* %nb30, align 8 + %747 = load %struct.lua_TValue** %rc29, align 4 ; [#uses=1] + %748 = getelementptr inbounds %struct.lua_TValue* %747, i32 0, i32 0 ; [#uses=1] + %749 = getelementptr inbounds %union.anon* %748, i32 0, i32 0 ; [#uses=1] + %750 = load double* %749, align 4 ; [#uses=1] + store double %750, double* %nc31, align 8 + %751 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %751, %struct.lua_TValue** %i_o32, align 4 + %752 = load double* %nb30, align 8 ; [#uses=1] + %753 = load double* %nc31, align 8 ; [#uses=1] + %754 = fdiv double %752, %753 ; [#uses=1] + %755 = load %struct.lua_TValue** %i_o32, align 4 ; [#uses=1] + %756 = getelementptr inbounds %struct.lua_TValue* %755, i32 0, i32 0 ; [#uses=1] + %757 = getelementptr inbounds %union.anon* %756, i32 0, i32 0 ; [#uses=1] + store double %754, double* %757, align 4 + %758 = load %struct.lua_TValue** %i_o32, align 4 ; [#uses=1] + %759 = getelementptr inbounds %struct.lua_TValue* %758, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %759, align 4 + br label %771 + +; <label>:760 ; preds = %737, %731 + %761 = load i32** %pc, align 4 ; [#uses=1] + %762 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %763 = getelementptr inbounds %struct.lua_State* %762, i32 0, i32 8 ; [#uses=1] + store i32* %761, i32** %763, align 4 + %764 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %765 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %766 = load %struct.lua_TValue** %rb28, align 4 ; [#uses=1] + %767 = load %struct.lua_TValue** %rc29, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %764, %struct.lua_TValue* %765, %struct.lua_TValue* %766, %struct.lua_TValue* %767, i32 8) + %768 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %769 = getelementptr inbounds %struct.lua_State* %768, i32 0, i32 5 ; [#uses=1] + %770 = load %struct.lua_TValue** %769, align 4 ; [#uses=1] + store %struct.lua_TValue* %770, %struct.lua_TValue** %base, align 4 + br label %771 + +; <label>:771 ; preds = %760, %742 + br label %28 + +; <label>:772 ; preds = %68 + %773 = load i32* %i, align 4 ; [#uses=1] + %774 = lshr i32 %773, 23 ; [#uses=1] + %775 = and i32 %774, 511 ; [#uses=1] + %776 = and i32 %775, 256 ; [#uses=1] + %777 = icmp ne i32 %776, 0 ; [#uses=1] + br i1 %777, label %778, label %785 + +; <label>:778 ; preds = %772 + %779 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %780 = load i32* %i, align 4 ; [#uses=1] + %781 = lshr i32 %780, 23 ; [#uses=1] + %782 = and i32 %781, 511 ; [#uses=1] + %783 = and i32 %782, -257 ; [#uses=1] + %784 = getelementptr inbounds %struct.lua_TValue* %779, i32 %783 ; [#uses=1] + br label %791 + +; <label>:785 ; preds = %772 + %786 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %787 = load i32* %i, align 4 ; [#uses=1] + %788 = lshr i32 %787, 23 ; [#uses=1] + %789 = and i32 %788, 511 ; [#uses=1] + %790 = getelementptr inbounds %struct.lua_TValue* %786, i32 %789 ; [#uses=1] + br label %791 + +; <label>:791 ; preds = %785, %778 + %792 = phi %struct.lua_TValue* [ %784, %778 ], [ %790, %785 ] ; [#uses=1] + store %struct.lua_TValue* %792, %struct.lua_TValue** %rb33, align 4 + %793 = load i32* %i, align 4 ; [#uses=1] + %794 = lshr i32 %793, 14 ; [#uses=1] + %795 = and i32 %794, 511 ; [#uses=1] + %796 = and i32 %795, 256 ; [#uses=1] + %797 = icmp ne i32 %796, 0 ; [#uses=1] + br i1 %797, label %798, label %805 + +; <label>:798 ; preds = %791 + %799 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %800 = load i32* %i, align 4 ; [#uses=1] + %801 = lshr i32 %800, 14 ; [#uses=1] + %802 = and i32 %801, 511 ; [#uses=1] + %803 = and i32 %802, -257 ; [#uses=1] + %804 = getelementptr inbounds %struct.lua_TValue* %799, i32 %803 ; [#uses=1] + br label %811 + +; <label>:805 ; preds = %791 + %806 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %807 = load i32* %i, align 4 ; [#uses=1] + %808 = lshr i32 %807, 14 ; [#uses=1] + %809 = and i32 %808, 511 ; [#uses=1] + %810 = getelementptr inbounds %struct.lua_TValue* %806, i32 %809 ; [#uses=1] + br label %811 + +; <label>:811 ; preds = %805, %798 + %812 = phi %struct.lua_TValue* [ %804, %798 ], [ %810, %805 ] ; [#uses=1] + store %struct.lua_TValue* %812, %struct.lua_TValue** %rc34, align 4 + %813 = load %struct.lua_TValue** %rb33, align 4 ; [#uses=1] + %814 = getelementptr inbounds %struct.lua_TValue* %813, i32 0, i32 1 ; [#uses=1] + %815 = load i32* %814, align 4 ; [#uses=1] + %816 = icmp eq i32 %815, 3 ; [#uses=1] + br i1 %816, label %817, label %845 + +; <label>:817 ; preds = %811 + %818 = load %struct.lua_TValue** %rc34, align 4 ; [#uses=1] + %819 = getelementptr inbounds %struct.lua_TValue* %818, i32 0, i32 1 ; [#uses=1] + %820 = load i32* %819, align 4 ; [#uses=1] + %821 = icmp eq i32 %820, 3 ; [#uses=1] + br i1 %821, label %822, label %845 + +; <label>:822 ; preds = %817 + %823 = load %struct.lua_TValue** %rb33, align 4 ; [#uses=1] + %824 = getelementptr inbounds %struct.lua_TValue* %823, i32 0, i32 0 ; [#uses=1] + %825 = getelementptr inbounds %union.anon* %824, i32 0, i32 0 ; [#uses=1] + %826 = load double* %825, align 4 ; [#uses=1] + store double %826, double* %nb35, align 8 + %827 = load %struct.lua_TValue** %rc34, align 4 ; [#uses=1] + %828 = getelementptr inbounds %struct.lua_TValue* %827, i32 0, i32 0 ; [#uses=1] + %829 = getelementptr inbounds %union.anon* %828, i32 0, i32 0 ; [#uses=1] + %830 = load double* %829, align 4 ; [#uses=1] + store double %830, double* %nc36, align 8 + %831 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %831, %struct.lua_TValue** %i_o37, align 4 + %832 = load double* %nb35, align 8 ; [#uses=1] + %833 = load double* %nb35, align 8 ; [#uses=1] + %834 = load double* %nc36, align 8 ; [#uses=1] + %835 = fdiv double %833, %834 ; [#uses=1] + %836 = call double @floor(double %835) nounwind readnone ; [#uses=1] + %837 = load double* %nc36, align 8 ; [#uses=1] + %838 = fmul double %836, %837 ; [#uses=1] + %839 = fsub double %832, %838 ; [#uses=1] + %840 = load %struct.lua_TValue** %i_o37, align 4 ; [#uses=1] + %841 = getelementptr inbounds %struct.lua_TValue* %840, i32 0, i32 0 ; [#uses=1] + %842 = getelementptr inbounds %union.anon* %841, i32 0, i32 0 ; [#uses=1] + store double %839, double* %842, align 4 + %843 = load %struct.lua_TValue** %i_o37, align 4 ; [#uses=1] + %844 = getelementptr inbounds %struct.lua_TValue* %843, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %844, align 4 + br label %856 + +; <label>:845 ; preds = %817, %811 + %846 = load i32** %pc, align 4 ; [#uses=1] + %847 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %848 = getelementptr inbounds %struct.lua_State* %847, i32 0, i32 8 ; [#uses=1] + store i32* %846, i32** %848, align 4 + %849 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %850 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %851 = load %struct.lua_TValue** %rb33, align 4 ; [#uses=1] + %852 = load %struct.lua_TValue** %rc34, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %849, %struct.lua_TValue* %850, %struct.lua_TValue* %851, %struct.lua_TValue* %852, i32 9) + %853 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %854 = getelementptr inbounds %struct.lua_State* %853, i32 0, i32 5 ; [#uses=1] + %855 = load %struct.lua_TValue** %854, align 4 ; [#uses=1] + store %struct.lua_TValue* %855, %struct.lua_TValue** %base, align 4 + br label %856 + +; <label>:856 ; preds = %845, %822 + br label %28 + +; <label>:857 ; preds = %68 + %858 = load i32* %i, align 4 ; [#uses=1] + %859 = lshr i32 %858, 23 ; [#uses=1] + %860 = and i32 %859, 511 ; [#uses=1] + %861 = and i32 %860, 256 ; [#uses=1] + %862 = icmp ne i32 %861, 0 ; [#uses=1] + br i1 %862, label %863, label %870 + +; <label>:863 ; preds = %857 + %864 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %865 = load i32* %i, align 4 ; [#uses=1] + %866 = lshr i32 %865, 23 ; [#uses=1] + %867 = and i32 %866, 511 ; [#uses=1] + %868 = and i32 %867, -257 ; [#uses=1] + %869 = getelementptr inbounds %struct.lua_TValue* %864, i32 %868 ; [#uses=1] + br label %876 + +; <label>:870 ; preds = %857 + %871 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %872 = load i32* %i, align 4 ; [#uses=1] + %873 = lshr i32 %872, 23 ; [#uses=1] + %874 = and i32 %873, 511 ; [#uses=1] + %875 = getelementptr inbounds %struct.lua_TValue* %871, i32 %874 ; [#uses=1] + br label %876 + +; <label>:876 ; preds = %870, %863 + %877 = phi %struct.lua_TValue* [ %869, %863 ], [ %875, %870 ] ; [#uses=1] + store %struct.lua_TValue* %877, %struct.lua_TValue** %rb38, align 4 + %878 = load i32* %i, align 4 ; [#uses=1] + %879 = lshr i32 %878, 14 ; [#uses=1] + %880 = and i32 %879, 511 ; [#uses=1] + %881 = and i32 %880, 256 ; [#uses=1] + %882 = icmp ne i32 %881, 0 ; [#uses=1] + br i1 %882, label %883, label %890 + +; <label>:883 ; preds = %876 + %884 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %885 = load i32* %i, align 4 ; [#uses=1] + %886 = lshr i32 %885, 14 ; [#uses=1] + %887 = and i32 %886, 511 ; [#uses=1] + %888 = and i32 %887, -257 ; [#uses=1] + %889 = getelementptr inbounds %struct.lua_TValue* %884, i32 %888 ; [#uses=1] + br label %896 + +; <label>:890 ; preds = %876 + %891 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %892 = load i32* %i, align 4 ; [#uses=1] + %893 = lshr i32 %892, 14 ; [#uses=1] + %894 = and i32 %893, 511 ; [#uses=1] + %895 = getelementptr inbounds %struct.lua_TValue* %891, i32 %894 ; [#uses=1] + br label %896 + +; <label>:896 ; preds = %890, %883 + %897 = phi %struct.lua_TValue* [ %889, %883 ], [ %895, %890 ] ; [#uses=1] + store %struct.lua_TValue* %897, %struct.lua_TValue** %rc39, align 4 + %898 = load %struct.lua_TValue** %rb38, align 4 ; [#uses=1] + %899 = getelementptr inbounds %struct.lua_TValue* %898, i32 0, i32 1 ; [#uses=1] + %900 = load i32* %899, align 4 ; [#uses=1] + %901 = icmp eq i32 %900, 3 ; [#uses=1] + br i1 %901, label %902, label %925 + +; <label>:902 ; preds = %896 + %903 = load %struct.lua_TValue** %rc39, align 4 ; [#uses=1] + %904 = getelementptr inbounds %struct.lua_TValue* %903, i32 0, i32 1 ; [#uses=1] + %905 = load i32* %904, align 4 ; [#uses=1] + %906 = icmp eq i32 %905, 3 ; [#uses=1] + br i1 %906, label %907, label %925 + +; <label>:907 ; preds = %902 + %908 = load %struct.lua_TValue** %rb38, align 4 ; [#uses=1] + %909 = getelementptr inbounds %struct.lua_TValue* %908, i32 0, i32 0 ; [#uses=1] + %910 = getelementptr inbounds %union.anon* %909, i32 0, i32 0 ; [#uses=1] + %911 = load double* %910, align 4 ; [#uses=1] + store double %911, double* %nb40, align 8 + %912 = load %struct.lua_TValue** %rc39, align 4 ; [#uses=1] + %913 = getelementptr inbounds %struct.lua_TValue* %912, i32 0, i32 0 ; [#uses=1] + %914 = getelementptr inbounds %union.anon* %913, i32 0, i32 0 ; [#uses=1] + %915 = load double* %914, align 4 ; [#uses=1] + store double %915, double* %nc41, align 8 + %916 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %916, %struct.lua_TValue** %i_o42, align 4 + %917 = load double* %nb40, align 8 ; [#uses=1] + %918 = load double* %nc41, align 8 ; [#uses=1] + %919 = call double @llvm.pow.f64(double %917, double %918) ; [#uses=1] + %920 = load %struct.lua_TValue** %i_o42, align 4 ; [#uses=1] + %921 = getelementptr inbounds %struct.lua_TValue* %920, i32 0, i32 0 ; [#uses=1] + %922 = getelementptr inbounds %union.anon* %921, i32 0, i32 0 ; [#uses=1] + store double %919, double* %922, align 4 + %923 = load %struct.lua_TValue** %i_o42, align 4 ; [#uses=1] + %924 = getelementptr inbounds %struct.lua_TValue* %923, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %924, align 4 + br label %936 + +; <label>:925 ; preds = %902, %896 + %926 = load i32** %pc, align 4 ; [#uses=1] + %927 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %928 = getelementptr inbounds %struct.lua_State* %927, i32 0, i32 8 ; [#uses=1] + store i32* %926, i32** %928, align 4 + %929 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %930 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %931 = load %struct.lua_TValue** %rb38, align 4 ; [#uses=1] + %932 = load %struct.lua_TValue** %rc39, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %929, %struct.lua_TValue* %930, %struct.lua_TValue* %931, %struct.lua_TValue* %932, i32 10) + %933 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %934 = getelementptr inbounds %struct.lua_State* %933, i32 0, i32 5 ; [#uses=1] + %935 = load %struct.lua_TValue** %934, align 4 ; [#uses=1] + store %struct.lua_TValue* %935, %struct.lua_TValue** %base, align 4 + br label %936 + +; <label>:936 ; preds = %925, %907 + br label %28 + +; <label>:937 ; preds = %68 + %938 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %939 = load i32* %i, align 4 ; [#uses=1] + %940 = lshr i32 %939, 23 ; [#uses=1] + %941 = and i32 %940, 511 ; [#uses=1] + %942 = getelementptr inbounds %struct.lua_TValue* %938, i32 %941 ; [#uses=1] + store %struct.lua_TValue* %942, %struct.lua_TValue** %rb43, align 4 + %943 = load %struct.lua_TValue** %rb43, align 4 ; [#uses=1] + %944 = getelementptr inbounds %struct.lua_TValue* %943, i32 0, i32 1 ; [#uses=1] + %945 = load i32* %944, align 4 ; [#uses=1] + %946 = icmp eq i32 %945, 3 ; [#uses=1] + br i1 %946, label %947, label %960 + +; <label>:947 ; preds = %937 + %948 = load %struct.lua_TValue** %rb43, align 4 ; [#uses=1] + %949 = getelementptr inbounds %struct.lua_TValue* %948, i32 0, i32 0 ; [#uses=1] + %950 = getelementptr inbounds %union.anon* %949, i32 0, i32 0 ; [#uses=1] + %951 = load double* %950, align 4 ; [#uses=1] + store double %951, double* %nb44, align 8 + %952 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %952, %struct.lua_TValue** %i_o45, align 4 + %953 = load double* %nb44, align 8 ; [#uses=1] + %954 = fsub double -0.000000e+00, %953 ; [#uses=1] + %955 = load %struct.lua_TValue** %i_o45, align 4 ; [#uses=1] + %956 = getelementptr inbounds %struct.lua_TValue* %955, i32 0, i32 0 ; [#uses=1] + %957 = getelementptr inbounds %union.anon* %956, i32 0, i32 0 ; [#uses=1] + store double %954, double* %957, align 4 + %958 = load %struct.lua_TValue** %i_o45, align 4 ; [#uses=1] + %959 = getelementptr inbounds %struct.lua_TValue* %958, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %959, align 4 + br label %971 + +; <label>:960 ; preds = %937 + %961 = load i32** %pc, align 4 ; [#uses=1] + %962 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %963 = getelementptr inbounds %struct.lua_State* %962, i32 0, i32 8 ; [#uses=1] + store i32* %961, i32** %963, align 4 + %964 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %965 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %966 = load %struct.lua_TValue** %rb43, align 4 ; [#uses=1] + %967 = load %struct.lua_TValue** %rb43, align 4 ; [#uses=1] + call void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %964, %struct.lua_TValue* %965, %struct.lua_TValue* %966, %struct.lua_TValue* %967, i32 11) + %968 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %969 = getelementptr inbounds %struct.lua_State* %968, i32 0, i32 5 ; [#uses=1] + %970 = load %struct.lua_TValue** %969, align 4 ; [#uses=1] + store %struct.lua_TValue* %970, %struct.lua_TValue** %base, align 4 + br label %971 + +; <label>:971 ; preds = %960, %947 + br label %28 + +; <label>:972 ; preds = %68 + %973 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %974 = load i32* %i, align 4 ; [#uses=1] + %975 = lshr i32 %974, 23 ; [#uses=1] + %976 = and i32 %975, 511 ; [#uses=1] + %977 = getelementptr inbounds %struct.lua_TValue* %973, i32 %976 ; [#uses=1] + %978 = getelementptr inbounds %struct.lua_TValue* %977, i32 0, i32 1 ; [#uses=1] + %979 = load i32* %978, align 4 ; [#uses=1] + %980 = icmp eq i32 %979, 0 ; [#uses=1] + br i1 %980, label %1003, label %981 + +; <label>:981 ; preds = %972 + %982 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %983 = load i32* %i, align 4 ; [#uses=1] + %984 = lshr i32 %983, 23 ; [#uses=1] + %985 = and i32 %984, 511 ; [#uses=1] + %986 = getelementptr inbounds %struct.lua_TValue* %982, i32 %985 ; [#uses=1] + %987 = getelementptr inbounds %struct.lua_TValue* %986, i32 0, i32 1 ; [#uses=1] + %988 = load i32* %987, align 4 ; [#uses=1] + %989 = icmp eq i32 %988, 1 ; [#uses=1] + br i1 %989, label %990, label %1001 + +; <label>:990 ; preds = %981 + %991 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %992 = load i32* %i, align 4 ; [#uses=1] + %993 = lshr i32 %992, 23 ; [#uses=1] + %994 = and i32 %993, 511 ; [#uses=1] + %995 = getelementptr inbounds %struct.lua_TValue* %991, i32 %994 ; [#uses=1] + %996 = getelementptr inbounds %struct.lua_TValue* %995, i32 0, i32 0 ; [#uses=1] + %997 = getelementptr inbounds %union.anon* %996, i32 0, i32 0 ; [#uses=1] + %998 = bitcast double* %997 to i32* ; [#uses=1] + %999 = load i32* %998, align 4 ; [#uses=1] + %1000 = icmp eq i32 %999, 0 ; [#uses=1] + br label %1001 + +; <label>:1001 ; preds = %990, %981 + %1002 = phi i1 [ false, %981 ], [ %1000, %990 ] ; [#uses=1] + br label %1003 + +; <label>:1003 ; preds = %1001, %972 + %1004 = phi i1 [ true, %972 ], [ %1002, %1001 ] ; [#uses=1] + %1005 = zext i1 %1004 to i32 ; [#uses=1] + store i32 %1005, i32* %res, align 4 + %1006 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1006, %struct.lua_TValue** %i_o46, align 4 + %1007 = load i32* %res, align 4 ; [#uses=1] + %1008 = load %struct.lua_TValue** %i_o46, align 4 ; [#uses=1] + %1009 = getelementptr inbounds %struct.lua_TValue* %1008, i32 0, i32 0 ; [#uses=1] + %1010 = getelementptr inbounds %union.anon* %1009, i32 0, i32 0 ; [#uses=1] + %1011 = bitcast double* %1010 to i32* ; [#uses=1] + store i32 %1007, i32* %1011, align 4 + %1012 = load %struct.lua_TValue** %i_o46, align 4 ; [#uses=1] + %1013 = getelementptr inbounds %struct.lua_TValue* %1012, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %1013, align 4 + br label %28 + +; <label>:1014 ; preds = %68 + %1015 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1016 = load i32* %i, align 4 ; [#uses=1] + %1017 = lshr i32 %1016, 23 ; [#uses=1] + %1018 = and i32 %1017, 511 ; [#uses=1] + %1019 = getelementptr inbounds %struct.lua_TValue* %1015, i32 %1018 ; [#uses=1] + store %struct.lua_TValue* %1019, %struct.lua_TValue** %rb47, align 4 + %1020 = load %struct.lua_TValue** %rb47, align 4 ; [#uses=1] + %1021 = getelementptr inbounds %struct.lua_TValue* %1020, i32 0, i32 1 ; [#uses=1] + %1022 = load i32* %1021, align 4 ; [#uses=1] + switch i32 %1022, label %1057 [ + i32 5, label %1023 + i32 4, label %1039 + ] + +; <label>:1023 ; preds = %1014 + %1024 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1024, %struct.lua_TValue** %i_o48, align 4 + %1025 = load %struct.lua_TValue** %rb47, align 4 ; [#uses=1] + %1026 = getelementptr inbounds %struct.lua_TValue* %1025, i32 0, i32 0 ; [#uses=1] + %1027 = getelementptr inbounds %union.anon* %1026, i32 0, i32 0 ; [#uses=1] + %1028 = bitcast double* %1027 to %union.GCObject** ; [#uses=1] + %1029 = load %union.GCObject** %1028, align 4 ; [#uses=1] + %1030 = getelementptr inbounds %union.GCObject* %1029, i32 0, i32 0 ; [#uses=1] + %1031 = bitcast %struct.lua_State* %1030 to %struct.Table* ; [#uses=1] + %1032 = call i32 @_Z9luaH_getnP5Table(%struct.Table* %1031) ; [#uses=1] + %1033 = sitofp i32 %1032 to double ; [#uses=1] + %1034 = load %struct.lua_TValue** %i_o48, align 4 ; [#uses=1] + %1035 = getelementptr inbounds %struct.lua_TValue* %1034, i32 0, i32 0 ; [#uses=1] + %1036 = getelementptr inbounds %union.anon* %1035, i32 0, i32 0 ; [#uses=1] + store double %1033, double* %1036, align 4 + %1037 = load %struct.lua_TValue** %i_o48, align 4 ; [#uses=1] + %1038 = getelementptr inbounds %struct.lua_TValue* %1037, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %1038, align 4 + br label %1073 + +; <label>:1039 ; preds = %1014 + %1040 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1040, %struct.lua_TValue** %i_o49, align 4 + %1041 = load %struct.lua_TValue** %rb47, align 4 ; [#uses=1] + %1042 = getelementptr inbounds %struct.lua_TValue* %1041, i32 0, i32 0 ; [#uses=1] + %1043 = getelementptr inbounds %union.anon* %1042, i32 0, i32 0 ; [#uses=1] + %1044 = bitcast double* %1043 to %union.GCObject** ; [#uses=1] + %1045 = load %union.GCObject** %1044, align 4 ; [#uses=1] + %1046 = getelementptr inbounds %union.GCObject* %1045, i32 0, i32 0 ; [#uses=1] + %1047 = bitcast %struct.lua_State* %1046 to %union.TString* ; [#uses=1] + %1048 = getelementptr inbounds %union.TString* %1047, i32 0, i32 0 ; [#uses=1] + %1049 = getelementptr inbounds %struct.anon* %1048, i32 0, i32 5 ; [#uses=1] + %1050 = load i32* %1049, align 4 ; [#uses=1] + %1051 = uitofp i32 %1050 to double ; [#uses=1] + %1052 = load %struct.lua_TValue** %i_o49, align 4 ; [#uses=1] + %1053 = getelementptr inbounds %struct.lua_TValue* %1052, i32 0, i32 0 ; [#uses=1] + %1054 = getelementptr inbounds %union.anon* %1053, i32 0, i32 0 ; [#uses=1] + store double %1051, double* %1054, align 4 + %1055 = load %struct.lua_TValue** %i_o49, align 4 ; [#uses=1] + %1056 = getelementptr inbounds %struct.lua_TValue* %1055, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %1056, align 4 + br label %1073 + +; <label>:1057 ; preds = %1014 + %1058 = load i32** %pc, align 4 ; [#uses=1] + %1059 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1060 = getelementptr inbounds %struct.lua_State* %1059, i32 0, i32 8 ; [#uses=1] + store i32* %1058, i32** %1060, align 4 + %1061 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1062 = load %struct.lua_TValue** %rb47, align 4 ; [#uses=1] + %1063 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1064 = call i32 @_Z10call_binTMP9lua_StatePK10lua_TValueS3_PS1_3TMS(%struct.lua_State* %1061, %struct.lua_TValue* %1062, %struct.lua_TValue* bitcast (%7* @luaO_nilobject_ to %struct.lua_TValue*), %struct.lua_TValue* %1063, i32 12) ; [#uses=1] + %1065 = icmp ne i32 %1064, 0 ; [#uses=1] + br i1 %1065, label %1069, label %1066 + +; <label>:1066 ; preds = %1057 + %1067 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1068 = load %struct.lua_TValue** %rb47, align 4 ; [#uses=1] + call void @_Z14luaG_typeerrorP9lua_StatePK10lua_TValuePKc(%struct.lua_State* %1067, %struct.lua_TValue* %1068, i8* getelementptr inbounds ([14 x i8]* @.str5225, i32 0, i32 0)) + br label %1069 + +; <label>:1069 ; preds = %1066, %1057 + %1070 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1071 = getelementptr inbounds %struct.lua_State* %1070, i32 0, i32 5 ; [#uses=1] + %1072 = load %struct.lua_TValue** %1071, align 4 ; [#uses=1] + store %struct.lua_TValue* %1072, %struct.lua_TValue** %base, align 4 + br label %1073 + +; <label>:1073 ; preds = %1069, %1039, %1023 + br label %28 + +; <label>:1074 ; preds = %68 + %1075 = load i32* %i, align 4 ; [#uses=1] + %1076 = lshr i32 %1075, 23 ; [#uses=1] + %1077 = and i32 %1076, 511 ; [#uses=1] + store i32 %1077, i32* %b50, align 4 + %1078 = load i32* %i, align 4 ; [#uses=1] + %1079 = lshr i32 %1078, 14 ; [#uses=1] + %1080 = and i32 %1079, 511 ; [#uses=1] + store i32 %1080, i32* %c51, align 4 + %1081 = load i32** %pc, align 4 ; [#uses=1] + %1082 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1083 = getelementptr inbounds %struct.lua_State* %1082, i32 0, i32 8 ; [#uses=1] + store i32* %1081, i32** %1083, align 4 + %1084 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1085 = load i32* %c51, align 4 ; [#uses=1] + %1086 = load i32* %b50, align 4 ; [#uses=1] + %1087 = sub nsw i32 %1085, %1086 ; [#uses=1] + %1088 = add nsw i32 %1087, 1 ; [#uses=1] + %1089 = load i32* %c51, align 4 ; [#uses=1] + call void @_Z11luaV_concatP9lua_Stateii(%struct.lua_State* %1084, i32 %1088, i32 %1089) + %1090 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1091 = getelementptr inbounds %struct.lua_State* %1090, i32 0, i32 6 ; [#uses=1] + %1092 = load %struct.global_State** %1091, align 4 ; [#uses=1] + %1093 = getelementptr inbounds %struct.global_State* %1092, i32 0, i32 14 ; [#uses=1] + %1094 = load i32* %1093, align 4 ; [#uses=1] + %1095 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1096 = getelementptr inbounds %struct.lua_State* %1095, i32 0, i32 6 ; [#uses=1] + %1097 = load %struct.global_State** %1096, align 4 ; [#uses=1] + %1098 = getelementptr inbounds %struct.global_State* %1097, i32 0, i32 13 ; [#uses=1] + %1099 = load i32* %1098, align 4 ; [#uses=1] + %1100 = icmp uge i32 %1094, %1099 ; [#uses=1] + br i1 %1100, label %1101, label %1103 + +; <label>:1101 ; preds = %1074 + %1102 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %1102) + br label %1103 + +; <label>:1103 ; preds = %1101, %1074 + %1104 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1105 = getelementptr inbounds %struct.lua_State* %1104, i32 0, i32 5 ; [#uses=1] + %1106 = load %struct.lua_TValue** %1105, align 4 ; [#uses=1] + store %struct.lua_TValue* %1106, %struct.lua_TValue** %base, align 4 + %1107 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1108 = load i32* %b50, align 4 ; [#uses=1] + %1109 = getelementptr inbounds %struct.lua_TValue* %1107, i32 %1108 ; [#uses=1] + store %struct.lua_TValue* %1109, %struct.lua_TValue** %o252, align 4 + %1110 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1111 = load i32* %i, align 4 ; [#uses=1] + %1112 = lshr i32 %1111, 6 ; [#uses=1] + %1113 = and i32 %1112, 255 ; [#uses=1] + %1114 = getelementptr inbounds %struct.lua_TValue* %1110, i32 %1113 ; [#uses=1] + store %struct.lua_TValue* %1114, %struct.lua_TValue** %o153, align 4 + %1115 = load %struct.lua_TValue** %o153, align 4 ; [#uses=1] + %1116 = getelementptr inbounds %struct.lua_TValue* %1115, i32 0, i32 0 ; [#uses=1] + %1117 = load %struct.lua_TValue** %o252, align 4 ; [#uses=1] + %1118 = getelementptr inbounds %struct.lua_TValue* %1117, i32 0, i32 0 ; [#uses=1] + %1119 = bitcast %union.anon* %1116 to i8* ; [#uses=1] + %1120 = bitcast %union.anon* %1118 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1119, i8* %1120, i32 8, i32 4, i1 false) + %1121 = load %struct.lua_TValue** %o252, align 4 ; [#uses=1] + %1122 = getelementptr inbounds %struct.lua_TValue* %1121, i32 0, i32 1 ; [#uses=1] + %1123 = load i32* %1122, align 4 ; [#uses=1] + %1124 = load %struct.lua_TValue** %o153, align 4 ; [#uses=1] + %1125 = getelementptr inbounds %struct.lua_TValue* %1124, i32 0, i32 1 ; [#uses=1] + store i32 %1123, i32* %1125, align 4 + br label %28 + +; <label>:1126 ; preds = %68 + %1127 = load i32* %i, align 4 ; [#uses=1] + %1128 = lshr i32 %1127, 14 ; [#uses=1] + %1129 = and i32 %1128, 262143 ; [#uses=1] + %1130 = sub nsw i32 %1129, 131071 ; [#uses=1] + %1131 = load i32** %pc, align 4 ; [#uses=1] + %1132 = getelementptr inbounds i32* %1131, i32 %1130 ; [#uses=1] + store i32* %1132, i32** %pc, align 4 + br label %28 + +; <label>:1133 ; preds = %68 + %1134 = load i32* %i, align 4 ; [#uses=1] + %1135 = lshr i32 %1134, 23 ; [#uses=1] + %1136 = and i32 %1135, 511 ; [#uses=1] + %1137 = and i32 %1136, 256 ; [#uses=1] + %1138 = icmp ne i32 %1137, 0 ; [#uses=1] + br i1 %1138, label %1139, label %1146 + +; <label>:1139 ; preds = %1133 + %1140 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1141 = load i32* %i, align 4 ; [#uses=1] + %1142 = lshr i32 %1141, 23 ; [#uses=1] + %1143 = and i32 %1142, 511 ; [#uses=1] + %1144 = and i32 %1143, -257 ; [#uses=1] + %1145 = getelementptr inbounds %struct.lua_TValue* %1140, i32 %1144 ; [#uses=1] + br label %1152 + +; <label>:1146 ; preds = %1133 + %1147 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1148 = load i32* %i, align 4 ; [#uses=1] + %1149 = lshr i32 %1148, 23 ; [#uses=1] + %1150 = and i32 %1149, 511 ; [#uses=1] + %1151 = getelementptr inbounds %struct.lua_TValue* %1147, i32 %1150 ; [#uses=1] + br label %1152 + +; <label>:1152 ; preds = %1146, %1139 + %1153 = phi %struct.lua_TValue* [ %1145, %1139 ], [ %1151, %1146 ] ; [#uses=1] + store %struct.lua_TValue* %1153, %struct.lua_TValue** %rb54, align 4 + %1154 = load i32* %i, align 4 ; [#uses=1] + %1155 = lshr i32 %1154, 14 ; [#uses=1] + %1156 = and i32 %1155, 511 ; [#uses=1] + %1157 = and i32 %1156, 256 ; [#uses=1] + %1158 = icmp ne i32 %1157, 0 ; [#uses=1] + br i1 %1158, label %1159, label %1166 + +; <label>:1159 ; preds = %1152 + %1160 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1161 = load i32* %i, align 4 ; [#uses=1] + %1162 = lshr i32 %1161, 14 ; [#uses=1] + %1163 = and i32 %1162, 511 ; [#uses=1] + %1164 = and i32 %1163, -257 ; [#uses=1] + %1165 = getelementptr inbounds %struct.lua_TValue* %1160, i32 %1164 ; [#uses=1] + br label %1172 + +; <label>:1166 ; preds = %1152 + %1167 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1168 = load i32* %i, align 4 ; [#uses=1] + %1169 = lshr i32 %1168, 14 ; [#uses=1] + %1170 = and i32 %1169, 511 ; [#uses=1] + %1171 = getelementptr inbounds %struct.lua_TValue* %1167, i32 %1170 ; [#uses=1] + br label %1172 + +; <label>:1172 ; preds = %1166, %1159 + %1173 = phi %struct.lua_TValue* [ %1165, %1159 ], [ %1171, %1166 ] ; [#uses=1] + store %struct.lua_TValue* %1173, %struct.lua_TValue** %rc55, align 4 + %1174 = load i32** %pc, align 4 ; [#uses=1] + %1175 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1176 = getelementptr inbounds %struct.lua_State* %1175, i32 0, i32 8 ; [#uses=1] + store i32* %1174, i32** %1176, align 4 + %1177 = load %struct.lua_TValue** %rb54, align 4 ; [#uses=1] + %1178 = getelementptr inbounds %struct.lua_TValue* %1177, i32 0, i32 1 ; [#uses=1] + %1179 = load i32* %1178, align 4 ; [#uses=1] + %1180 = load %struct.lua_TValue** %rc55, align 4 ; [#uses=1] + %1181 = getelementptr inbounds %struct.lua_TValue* %1180, i32 0, i32 1 ; [#uses=1] + %1182 = load i32* %1181, align 4 ; [#uses=1] + %1183 = icmp eq i32 %1179, %1182 ; [#uses=1] + br i1 %1183, label %1184, label %1190 + +; <label>:1184 ; preds = %1172 + %1185 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1186 = load %struct.lua_TValue** %rb54, align 4 ; [#uses=1] + %1187 = load %struct.lua_TValue** %rc55, align 4 ; [#uses=1] + %1188 = call i32 @_Z13luaV_equalvalP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %1185, %struct.lua_TValue* %1186, %struct.lua_TValue* %1187) ; [#uses=1] + %1189 = icmp ne i32 %1188, 0 ; [#uses=1] + br label %1190 + +; <label>:1190 ; preds = %1184, %1172 + %1191 = phi i1 [ false, %1172 ], [ %1189, %1184 ] ; [#uses=1] + %1192 = zext i1 %1191 to i32 ; [#uses=1] + %1193 = load i32* %i, align 4 ; [#uses=1] + %1194 = lshr i32 %1193, 6 ; [#uses=1] + %1195 = and i32 %1194, 255 ; [#uses=1] + %1196 = icmp eq i32 %1192, %1195 ; [#uses=1] + br i1 %1196, label %1197, label %1205 + +; <label>:1197 ; preds = %1190 + %1198 = load i32** %pc, align 4 ; [#uses=1] + %1199 = load i32* %1198 ; [#uses=1] + %1200 = lshr i32 %1199, 14 ; [#uses=1] + %1201 = and i32 %1200, 262143 ; [#uses=1] + %1202 = sub nsw i32 %1201, 131071 ; [#uses=1] + %1203 = load i32** %pc, align 4 ; [#uses=1] + %1204 = getelementptr inbounds i32* %1203, i32 %1202 ; [#uses=1] + store i32* %1204, i32** %pc, align 4 + br label %1205 + +; <label>:1205 ; preds = %1197, %1190 + %1206 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1207 = getelementptr inbounds %struct.lua_State* %1206, i32 0, i32 5 ; [#uses=1] + %1208 = load %struct.lua_TValue** %1207, align 4 ; [#uses=1] + store %struct.lua_TValue* %1208, %struct.lua_TValue** %base, align 4 + %1209 = load i32** %pc, align 4 ; [#uses=1] + %1210 = getelementptr inbounds i32* %1209, i32 1 ; [#uses=1] + store i32* %1210, i32** %pc, align 4 + br label %28 + +; <label>:1211 ; preds = %68 + %1212 = load i32** %pc, align 4 ; [#uses=1] + %1213 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1214 = getelementptr inbounds %struct.lua_State* %1213, i32 0, i32 8 ; [#uses=1] + store i32* %1212, i32** %1214, align 4 + %1215 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1216 = load i32* %i, align 4 ; [#uses=1] + %1217 = lshr i32 %1216, 23 ; [#uses=1] + %1218 = and i32 %1217, 511 ; [#uses=1] + %1219 = and i32 %1218, 256 ; [#uses=1] + %1220 = icmp ne i32 %1219, 0 ; [#uses=1] + br i1 %1220, label %1221, label %1228 + +; <label>:1221 ; preds = %1211 + %1222 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1223 = load i32* %i, align 4 ; [#uses=1] + %1224 = lshr i32 %1223, 23 ; [#uses=1] + %1225 = and i32 %1224, 511 ; [#uses=1] + %1226 = and i32 %1225, -257 ; [#uses=1] + %1227 = getelementptr inbounds %struct.lua_TValue* %1222, i32 %1226 ; [#uses=1] + br label %1234 + +; <label>:1228 ; preds = %1211 + %1229 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1230 = load i32* %i, align 4 ; [#uses=1] + %1231 = lshr i32 %1230, 23 ; [#uses=1] + %1232 = and i32 %1231, 511 ; [#uses=1] + %1233 = getelementptr inbounds %struct.lua_TValue* %1229, i32 %1232 ; [#uses=1] + br label %1234 + +; <label>:1234 ; preds = %1228, %1221 + %1235 = phi %struct.lua_TValue* [ %1227, %1221 ], [ %1233, %1228 ] ; [#uses=1] + %1236 = load i32* %i, align 4 ; [#uses=1] + %1237 = lshr i32 %1236, 14 ; [#uses=1] + %1238 = and i32 %1237, 511 ; [#uses=1] + %1239 = and i32 %1238, 256 ; [#uses=1] + %1240 = icmp ne i32 %1239, 0 ; [#uses=1] + br i1 %1240, label %1241, label %1248 + +; <label>:1241 ; preds = %1234 + %1242 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1243 = load i32* %i, align 4 ; [#uses=1] + %1244 = lshr i32 %1243, 14 ; [#uses=1] + %1245 = and i32 %1244, 511 ; [#uses=1] + %1246 = and i32 %1245, -257 ; [#uses=1] + %1247 = getelementptr inbounds %struct.lua_TValue* %1242, i32 %1246 ; [#uses=1] + br label %1254 + +; <label>:1248 ; preds = %1234 + %1249 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1250 = load i32* %i, align 4 ; [#uses=1] + %1251 = lshr i32 %1250, 14 ; [#uses=1] + %1252 = and i32 %1251, 511 ; [#uses=1] + %1253 = getelementptr inbounds %struct.lua_TValue* %1249, i32 %1252 ; [#uses=1] + br label %1254 + +; <label>:1254 ; preds = %1248, %1241 + %1255 = phi %struct.lua_TValue* [ %1247, %1241 ], [ %1253, %1248 ] ; [#uses=1] + %1256 = call i32 @_Z13luaV_lessthanP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %1215, %struct.lua_TValue* %1235, %struct.lua_TValue* %1255) ; [#uses=1] + %1257 = load i32* %i, align 4 ; [#uses=1] + %1258 = lshr i32 %1257, 6 ; [#uses=1] + %1259 = and i32 %1258, 255 ; [#uses=1] + %1260 = icmp eq i32 %1256, %1259 ; [#uses=1] + br i1 %1260, label %1261, label %1269 + +; <label>:1261 ; preds = %1254 + %1262 = load i32** %pc, align 4 ; [#uses=1] + %1263 = load i32* %1262 ; [#uses=1] + %1264 = lshr i32 %1263, 14 ; [#uses=1] + %1265 = and i32 %1264, 262143 ; [#uses=1] + %1266 = sub nsw i32 %1265, 131071 ; [#uses=1] + %1267 = load i32** %pc, align 4 ; [#uses=1] + %1268 = getelementptr inbounds i32* %1267, i32 %1266 ; [#uses=1] + store i32* %1268, i32** %pc, align 4 + br label %1269 + +; <label>:1269 ; preds = %1261, %1254 + %1270 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1271 = getelementptr inbounds %struct.lua_State* %1270, i32 0, i32 5 ; [#uses=1] + %1272 = load %struct.lua_TValue** %1271, align 4 ; [#uses=1] + store %struct.lua_TValue* %1272, %struct.lua_TValue** %base, align 4 + %1273 = load i32** %pc, align 4 ; [#uses=1] + %1274 = getelementptr inbounds i32* %1273, i32 1 ; [#uses=1] + store i32* %1274, i32** %pc, align 4 + br label %28 + +; <label>:1275 ; preds = %68 + %1276 = load i32** %pc, align 4 ; [#uses=1] + %1277 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1278 = getelementptr inbounds %struct.lua_State* %1277, i32 0, i32 8 ; [#uses=1] + store i32* %1276, i32** %1278, align 4 + %1279 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1280 = load i32* %i, align 4 ; [#uses=1] + %1281 = lshr i32 %1280, 23 ; [#uses=1] + %1282 = and i32 %1281, 511 ; [#uses=1] + %1283 = and i32 %1282, 256 ; [#uses=1] + %1284 = icmp ne i32 %1283, 0 ; [#uses=1] + br i1 %1284, label %1285, label %1292 + +; <label>:1285 ; preds = %1275 + %1286 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1287 = load i32* %i, align 4 ; [#uses=1] + %1288 = lshr i32 %1287, 23 ; [#uses=1] + %1289 = and i32 %1288, 511 ; [#uses=1] + %1290 = and i32 %1289, -257 ; [#uses=1] + %1291 = getelementptr inbounds %struct.lua_TValue* %1286, i32 %1290 ; [#uses=1] + br label %1298 + +; <label>:1292 ; preds = %1275 + %1293 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1294 = load i32* %i, align 4 ; [#uses=1] + %1295 = lshr i32 %1294, 23 ; [#uses=1] + %1296 = and i32 %1295, 511 ; [#uses=1] + %1297 = getelementptr inbounds %struct.lua_TValue* %1293, i32 %1296 ; [#uses=1] + br label %1298 + +; <label>:1298 ; preds = %1292, %1285 + %1299 = phi %struct.lua_TValue* [ %1291, %1285 ], [ %1297, %1292 ] ; [#uses=1] + %1300 = load i32* %i, align 4 ; [#uses=1] + %1301 = lshr i32 %1300, 14 ; [#uses=1] + %1302 = and i32 %1301, 511 ; [#uses=1] + %1303 = and i32 %1302, 256 ; [#uses=1] + %1304 = icmp ne i32 %1303, 0 ; [#uses=1] + br i1 %1304, label %1305, label %1312 + +; <label>:1305 ; preds = %1298 + %1306 = load %struct.lua_TValue** %k, align 4 ; [#uses=1] + %1307 = load i32* %i, align 4 ; [#uses=1] + %1308 = lshr i32 %1307, 14 ; [#uses=1] + %1309 = and i32 %1308, 511 ; [#uses=1] + %1310 = and i32 %1309, -257 ; [#uses=1] + %1311 = getelementptr inbounds %struct.lua_TValue* %1306, i32 %1310 ; [#uses=1] + br label %1318 + +; <label>:1312 ; preds = %1298 + %1313 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1314 = load i32* %i, align 4 ; [#uses=1] + %1315 = lshr i32 %1314, 14 ; [#uses=1] + %1316 = and i32 %1315, 511 ; [#uses=1] + %1317 = getelementptr inbounds %struct.lua_TValue* %1313, i32 %1316 ; [#uses=1] + br label %1318 + +; <label>:1318 ; preds = %1312, %1305 + %1319 = phi %struct.lua_TValue* [ %1311, %1305 ], [ %1317, %1312 ] ; [#uses=1] + %1320 = call i32 @_Z9lessequalP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %1279, %struct.lua_TValue* %1299, %struct.lua_TValue* %1319) ; [#uses=1] + %1321 = load i32* %i, align 4 ; [#uses=1] + %1322 = lshr i32 %1321, 6 ; [#uses=1] + %1323 = and i32 %1322, 255 ; [#uses=1] + %1324 = icmp eq i32 %1320, %1323 ; [#uses=1] + br i1 %1324, label %1325, label %1333 + +; <label>:1325 ; preds = %1318 + %1326 = load i32** %pc, align 4 ; [#uses=1] + %1327 = load i32* %1326 ; [#uses=1] + %1328 = lshr i32 %1327, 14 ; [#uses=1] + %1329 = and i32 %1328, 262143 ; [#uses=1] + %1330 = sub nsw i32 %1329, 131071 ; [#uses=1] + %1331 = load i32** %pc, align 4 ; [#uses=1] + %1332 = getelementptr inbounds i32* %1331, i32 %1330 ; [#uses=1] + store i32* %1332, i32** %pc, align 4 + br label %1333 + +; <label>:1333 ; preds = %1325, %1318 + %1334 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1335 = getelementptr inbounds %struct.lua_State* %1334, i32 0, i32 5 ; [#uses=1] + %1336 = load %struct.lua_TValue** %1335, align 4 ; [#uses=1] + store %struct.lua_TValue* %1336, %struct.lua_TValue** %base, align 4 + %1337 = load i32** %pc, align 4 ; [#uses=1] + %1338 = getelementptr inbounds i32* %1337, i32 1 ; [#uses=1] + store i32* %1338, i32** %pc, align 4 + br label %28 + +; <label>:1339 ; preds = %68 + %1340 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1341 = getelementptr inbounds %struct.lua_TValue* %1340, i32 0, i32 1 ; [#uses=1] + %1342 = load i32* %1341, align 4 ; [#uses=1] + %1343 = icmp eq i32 %1342, 0 ; [#uses=1] + br i1 %1343, label %1358, label %1344 + +; <label>:1344 ; preds = %1339 + %1345 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1346 = getelementptr inbounds %struct.lua_TValue* %1345, i32 0, i32 1 ; [#uses=1] + %1347 = load i32* %1346, align 4 ; [#uses=1] + %1348 = icmp eq i32 %1347, 1 ; [#uses=1] + br i1 %1348, label %1349, label %1356 + +; <label>:1349 ; preds = %1344 + %1350 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1351 = getelementptr inbounds %struct.lua_TValue* %1350, i32 0, i32 0 ; [#uses=1] + %1352 = getelementptr inbounds %union.anon* %1351, i32 0, i32 0 ; [#uses=1] + %1353 = bitcast double* %1352 to i32* ; [#uses=1] + %1354 = load i32* %1353, align 4 ; [#uses=1] + %1355 = icmp eq i32 %1354, 0 ; [#uses=1] + br label %1356 + +; <label>:1356 ; preds = %1349, %1344 + %1357 = phi i1 [ false, %1344 ], [ %1355, %1349 ] ; [#uses=1] + br label %1358 + +; <label>:1358 ; preds = %1356, %1339 + %1359 = phi i1 [ true, %1339 ], [ %1357, %1356 ] ; [#uses=1] + %1360 = zext i1 %1359 to i32 ; [#uses=1] + %1361 = load i32* %i, align 4 ; [#uses=1] + %1362 = lshr i32 %1361, 14 ; [#uses=1] + %1363 = and i32 %1362, 511 ; [#uses=1] + %1364 = icmp ne i32 %1360, %1363 ; [#uses=1] + br i1 %1364, label %1365, label %1373 + +; <label>:1365 ; preds = %1358 + %1366 = load i32** %pc, align 4 ; [#uses=1] + %1367 = load i32* %1366 ; [#uses=1] + %1368 = lshr i32 %1367, 14 ; [#uses=1] + %1369 = and i32 %1368, 262143 ; [#uses=1] + %1370 = sub nsw i32 %1369, 131071 ; [#uses=1] + %1371 = load i32** %pc, align 4 ; [#uses=1] + %1372 = getelementptr inbounds i32* %1371, i32 %1370 ; [#uses=1] + store i32* %1372, i32** %pc, align 4 + br label %1373 + +; <label>:1373 ; preds = %1365, %1358 + %1374 = load i32** %pc, align 4 ; [#uses=1] + %1375 = getelementptr inbounds i32* %1374, i32 1 ; [#uses=1] + store i32* %1375, i32** %pc, align 4 + br label %28 + +; <label>:1376 ; preds = %68 + %1377 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1378 = load i32* %i, align 4 ; [#uses=1] + %1379 = lshr i32 %1378, 23 ; [#uses=1] + %1380 = and i32 %1379, 511 ; [#uses=1] + %1381 = getelementptr inbounds %struct.lua_TValue* %1377, i32 %1380 ; [#uses=1] + store %struct.lua_TValue* %1381, %struct.lua_TValue** %rb56, align 4 + %1382 = load %struct.lua_TValue** %rb56, align 4 ; [#uses=1] + %1383 = getelementptr inbounds %struct.lua_TValue* %1382, i32 0, i32 1 ; [#uses=1] + %1384 = load i32* %1383, align 4 ; [#uses=1] + %1385 = icmp eq i32 %1384, 0 ; [#uses=1] + br i1 %1385, label %1400, label %1386 + +; <label>:1386 ; preds = %1376 + %1387 = load %struct.lua_TValue** %rb56, align 4 ; [#uses=1] + %1388 = getelementptr inbounds %struct.lua_TValue* %1387, i32 0, i32 1 ; [#uses=1] + %1389 = load i32* %1388, align 4 ; [#uses=1] + %1390 = icmp eq i32 %1389, 1 ; [#uses=1] + br i1 %1390, label %1391, label %1398 + +; <label>:1391 ; preds = %1386 + %1392 = load %struct.lua_TValue** %rb56, align 4 ; [#uses=1] + %1393 = getelementptr inbounds %struct.lua_TValue* %1392, i32 0, i32 0 ; [#uses=1] + %1394 = getelementptr inbounds %union.anon* %1393, i32 0, i32 0 ; [#uses=1] + %1395 = bitcast double* %1394 to i32* ; [#uses=1] + %1396 = load i32* %1395, align 4 ; [#uses=1] + %1397 = icmp eq i32 %1396, 0 ; [#uses=1] + br label %1398 + +; <label>:1398 ; preds = %1391, %1386 + %1399 = phi i1 [ false, %1386 ], [ %1397, %1391 ] ; [#uses=1] + br label %1400 + +; <label>:1400 ; preds = %1398, %1376 + %1401 = phi i1 [ true, %1376 ], [ %1399, %1398 ] ; [#uses=1] + %1402 = zext i1 %1401 to i32 ; [#uses=1] + %1403 = load i32* %i, align 4 ; [#uses=1] + %1404 = lshr i32 %1403, 14 ; [#uses=1] + %1405 = and i32 %1404, 511 ; [#uses=1] + %1406 = icmp ne i32 %1402, %1405 ; [#uses=1] + br i1 %1406, label %1407, label %1428 + +; <label>:1407 ; preds = %1400 + %1408 = load %struct.lua_TValue** %rb56, align 4 ; [#uses=1] + store %struct.lua_TValue* %1408, %struct.lua_TValue** %o257, align 4 + %1409 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1409, %struct.lua_TValue** %o158, align 4 + %1410 = load %struct.lua_TValue** %o158, align 4 ; [#uses=1] + %1411 = getelementptr inbounds %struct.lua_TValue* %1410, i32 0, i32 0 ; [#uses=1] + %1412 = load %struct.lua_TValue** %o257, align 4 ; [#uses=1] + %1413 = getelementptr inbounds %struct.lua_TValue* %1412, i32 0, i32 0 ; [#uses=1] + %1414 = bitcast %union.anon* %1411 to i8* ; [#uses=1] + %1415 = bitcast %union.anon* %1413 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1414, i8* %1415, i32 8, i32 4, i1 false) + %1416 = load %struct.lua_TValue** %o257, align 4 ; [#uses=1] + %1417 = getelementptr inbounds %struct.lua_TValue* %1416, i32 0, i32 1 ; [#uses=1] + %1418 = load i32* %1417, align 4 ; [#uses=1] + %1419 = load %struct.lua_TValue** %o158, align 4 ; [#uses=1] + %1420 = getelementptr inbounds %struct.lua_TValue* %1419, i32 0, i32 1 ; [#uses=1] + store i32 %1418, i32* %1420, align 4 + %1421 = load i32** %pc, align 4 ; [#uses=1] + %1422 = load i32* %1421 ; [#uses=1] + %1423 = lshr i32 %1422, 14 ; [#uses=1] + %1424 = and i32 %1423, 262143 ; [#uses=1] + %1425 = sub nsw i32 %1424, 131071 ; [#uses=1] + %1426 = load i32** %pc, align 4 ; [#uses=1] + %1427 = getelementptr inbounds i32* %1426, i32 %1425 ; [#uses=1] + store i32* %1427, i32** %pc, align 4 + br label %1428 + +; <label>:1428 ; preds = %1407, %1400 + %1429 = load i32** %pc, align 4 ; [#uses=1] + %1430 = getelementptr inbounds i32* %1429, i32 1 ; [#uses=1] + store i32* %1430, i32** %pc, align 4 + br label %28 + +; <label>:1431 ; preds = %68 + %1432 = load i32* %i, align 4 ; [#uses=1] + %1433 = lshr i32 %1432, 23 ; [#uses=1] + %1434 = and i32 %1433, 511 ; [#uses=1] + store i32 %1434, i32* %b59, align 4 + %1435 = load i32* %i, align 4 ; [#uses=1] + %1436 = lshr i32 %1435, 14 ; [#uses=1] + %1437 = and i32 %1436, 511 ; [#uses=1] + %1438 = sub nsw i32 %1437, 1 ; [#uses=1] + store i32 %1438, i32* %nresults, align 4 + %1439 = load i32* %b59, align 4 ; [#uses=1] + %1440 = icmp ne i32 %1439, 0 ; [#uses=1] + br i1 %1440, label %1441, label %1447 + +; <label>:1441 ; preds = %1431 + %1442 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1443 = load i32* %b59, align 4 ; [#uses=1] + %1444 = getelementptr inbounds %struct.lua_TValue* %1442, i32 %1443 ; [#uses=1] + %1445 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1446 = getelementptr inbounds %struct.lua_State* %1445, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1444, %struct.lua_TValue** %1446, align 4 + br label %1447 + +; <label>:1447 ; preds = %1441, %1431 + %1448 = load i32** %pc, align 4 ; [#uses=1] + %1449 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1450 = getelementptr inbounds %struct.lua_State* %1449, i32 0, i32 8 ; [#uses=1] + store i32* %1448, i32** %1450, align 4 + %1451 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1452 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1453 = load i32* %nresults, align 4 ; [#uses=1] + %1454 = call i32 @_Z12luaD_precallP9lua_StateP10lua_TValuei(%struct.lua_State* %1451, %struct.lua_TValue* %1452, i32 %1453) ; [#uses=1] + switch i32 %1454, label %1473 [ + i32 0, label %1455 + i32 1, label %1458 + ] + +; <label>:1455 ; preds = %1447 + %1456 = load i32* %2, align 4 ; [#uses=1] + %1457 = add nsw i32 %1456, 1 ; [#uses=1] + store i32 %1457, i32* %2, align 4 + br label %3 + +; <label>:1458 ; preds = %1447 + %1459 = load i32* %nresults, align 4 ; [#uses=1] + %1460 = icmp sge i32 %1459, 0 ; [#uses=1] + br i1 %1460, label %1461, label %1469 + +; <label>:1461 ; preds = %1458 + %1462 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1463 = getelementptr inbounds %struct.lua_State* %1462, i32 0, i32 7 ; [#uses=1] + %1464 = load %struct.CallInfo** %1463, align 4 ; [#uses=1] + %1465 = getelementptr inbounds %struct.CallInfo* %1464, i32 0, i32 2 ; [#uses=1] + %1466 = load %struct.lua_TValue** %1465, align 4 ; [#uses=1] + %1467 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1468 = getelementptr inbounds %struct.lua_State* %1467, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1466, %struct.lua_TValue** %1468, align 4 + br label %1469 + +; <label>:1469 ; preds = %1461, %1458 + %1470 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1471 = getelementptr inbounds %struct.lua_State* %1470, i32 0, i32 5 ; [#uses=1] + %1472 = load %struct.lua_TValue** %1471, align 4 ; [#uses=1] + store %struct.lua_TValue* %1472, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:1473 ; preds = %1447 + br label %2188 + +; <label>:1474 ; preds = %68 + %1475 = load i32* %i, align 4 ; [#uses=1] + %1476 = lshr i32 %1475, 23 ; [#uses=1] + %1477 = and i32 %1476, 511 ; [#uses=1] + store i32 %1477, i32* %b60, align 4 + %1478 = load i32* %b60, align 4 ; [#uses=1] + %1479 = icmp ne i32 %1478, 0 ; [#uses=1] + br i1 %1479, label %1480, label %1486 + +; <label>:1480 ; preds = %1474 + %1481 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1482 = load i32* %b60, align 4 ; [#uses=1] + %1483 = getelementptr inbounds %struct.lua_TValue* %1481, i32 %1482 ; [#uses=1] + %1484 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1485 = getelementptr inbounds %struct.lua_State* %1484, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1483, %struct.lua_TValue** %1485, align 4 + br label %1486 + +; <label>:1486 ; preds = %1480, %1474 + %1487 = load i32** %pc, align 4 ; [#uses=1] + %1488 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1489 = getelementptr inbounds %struct.lua_State* %1488, i32 0, i32 8 ; [#uses=1] + store i32* %1487, i32** %1489, align 4 + %1490 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1491 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1492 = call i32 @_Z12luaD_precallP9lua_StateP10lua_TValuei(%struct.lua_State* %1490, %struct.lua_TValue* %1491, i32 -1) ; [#uses=1] + switch i32 %1492, label %1586 [ + i32 0, label %1493 + i32 1, label %1582 + ] + +; <label>:1493 ; preds = %1486 + %1494 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1495 = getelementptr inbounds %struct.lua_State* %1494, i32 0, i32 7 ; [#uses=1] + %1496 = load %struct.CallInfo** %1495, align 4 ; [#uses=1] + %1497 = getelementptr inbounds %struct.CallInfo* %1496, i32 -1 ; [#uses=1] + store %struct.CallInfo* %1497, %struct.CallInfo** %ci, align 4 + %1498 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1499 = getelementptr inbounds %struct.CallInfo* %1498, i32 0, i32 1 ; [#uses=1] + %1500 = load %struct.lua_TValue** %1499, align 4 ; [#uses=1] + store %struct.lua_TValue* %1500, %struct.lua_TValue** %func, align 4 + %1501 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1502 = getelementptr inbounds %struct.CallInfo* %1501, i32 1 ; [#uses=1] + %1503 = getelementptr inbounds %struct.CallInfo* %1502, i32 0, i32 1 ; [#uses=1] + %1504 = load %struct.lua_TValue** %1503, align 4 ; [#uses=1] + store %struct.lua_TValue* %1504, %struct.lua_TValue** %pfunc, align 4 + %1505 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1506 = getelementptr inbounds %struct.lua_State* %1505, i32 0, i32 24 ; [#uses=1] + %1507 = load %union.GCObject** %1506, align 4 ; [#uses=1] + %1508 = icmp ne %union.GCObject* %1507, null ; [#uses=1] + br i1 %1508, label %1509, label %1514 + +; <label>:1509 ; preds = %1493 + %1510 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1511 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1512 = getelementptr inbounds %struct.CallInfo* %1511, i32 0, i32 0 ; [#uses=1] + %1513 = load %struct.lua_TValue** %1512, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %1510, %struct.lua_TValue* %1513) + br label %1514 + +; <label>:1514 ; preds = %1509, %1493 + %1515 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1516 = getelementptr inbounds %struct.CallInfo* %1515, i32 0, i32 1 ; [#uses=1] + %1517 = load %struct.lua_TValue** %1516, align 4 ; [#uses=1] + %1518 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1519 = getelementptr inbounds %struct.CallInfo* %1518, i32 1 ; [#uses=1] + %1520 = getelementptr inbounds %struct.CallInfo* %1519, i32 0, i32 0 ; [#uses=1] + %1521 = load %struct.lua_TValue** %1520, align 4 ; [#uses=1] + %1522 = load %struct.lua_TValue** %pfunc, align 4 ; [#uses=1] + %1523 = ptrtoint %struct.lua_TValue* %1521 to i32 ; [#uses=1] + %1524 = ptrtoint %struct.lua_TValue* %1522 to i32 ; [#uses=1] + %1525 = sub i32 %1523, %1524 ; [#uses=1] + %1526 = sdiv exact i32 %1525, 12 ; [#uses=1] + %1527 = getelementptr inbounds %struct.lua_TValue* %1517, i32 %1526 ; [#uses=2] + %1528 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1529 = getelementptr inbounds %struct.CallInfo* %1528, i32 0, i32 0 ; [#uses=1] + store %struct.lua_TValue* %1527, %struct.lua_TValue** %1529, align 4 + %1530 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1531 = getelementptr inbounds %struct.lua_State* %1530, i32 0, i32 5 ; [#uses=1] + store %struct.lua_TValue* %1527, %struct.lua_TValue** %1531, align 4 + store i32 0, i32* %aux, align 4 + br label %1532 + +; <label>:1532 ; preds = %1558, %1514 + %1533 = load %struct.lua_TValue** %pfunc, align 4 ; [#uses=1] + %1534 = load i32* %aux, align 4 ; [#uses=1] + %1535 = getelementptr inbounds %struct.lua_TValue* %1533, i32 %1534 ; [#uses=1] + %1536 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1537 = getelementptr inbounds %struct.lua_State* %1536, i32 0, i32 4 ; [#uses=1] + %1538 = load %struct.lua_TValue** %1537, align 4 ; [#uses=1] + %1539 = icmp ult %struct.lua_TValue* %1535, %1538 ; [#uses=1] + br i1 %1539, label %1540, label %1561 + +; <label>:1540 ; preds = %1532 + %1541 = load %struct.lua_TValue** %pfunc, align 4 ; [#uses=1] + %1542 = load i32* %aux, align 4 ; [#uses=1] + %1543 = getelementptr inbounds %struct.lua_TValue* %1541, i32 %1542 ; [#uses=1] + store %struct.lua_TValue* %1543, %struct.lua_TValue** %o261, align 4 + %1544 = load %struct.lua_TValue** %func, align 4 ; [#uses=1] + %1545 = load i32* %aux, align 4 ; [#uses=1] + %1546 = getelementptr inbounds %struct.lua_TValue* %1544, i32 %1545 ; [#uses=1] + store %struct.lua_TValue* %1546, %struct.lua_TValue** %o162, align 4 + %1547 = load %struct.lua_TValue** %o162, align 4 ; [#uses=1] + %1548 = getelementptr inbounds %struct.lua_TValue* %1547, i32 0, i32 0 ; [#uses=1] + %1549 = load %struct.lua_TValue** %o261, align 4 ; [#uses=1] + %1550 = getelementptr inbounds %struct.lua_TValue* %1549, i32 0, i32 0 ; [#uses=1] + %1551 = bitcast %union.anon* %1548 to i8* ; [#uses=1] + %1552 = bitcast %union.anon* %1550 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1551, i8* %1552, i32 8, i32 4, i1 false) + %1553 = load %struct.lua_TValue** %o261, align 4 ; [#uses=1] + %1554 = getelementptr inbounds %struct.lua_TValue* %1553, i32 0, i32 1 ; [#uses=1] + %1555 = load i32* %1554, align 4 ; [#uses=1] + %1556 = load %struct.lua_TValue** %o162, align 4 ; [#uses=1] + %1557 = getelementptr inbounds %struct.lua_TValue* %1556, i32 0, i32 1 ; [#uses=1] + store i32 %1555, i32* %1557, align 4 + br label %1558 + +; <label>:1558 ; preds = %1540 + %1559 = load i32* %aux, align 4 ; [#uses=1] + %1560 = add nsw i32 %1559, 1 ; [#uses=1] + store i32 %1560, i32* %aux, align 4 + br label %1532 + +; <label>:1561 ; preds = %1532 + %1562 = load %struct.lua_TValue** %func, align 4 ; [#uses=1] + %1563 = load i32* %aux, align 4 ; [#uses=1] + %1564 = getelementptr inbounds %struct.lua_TValue* %1562, i32 %1563 ; [#uses=2] + %1565 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1566 = getelementptr inbounds %struct.lua_State* %1565, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1564, %struct.lua_TValue** %1566, align 4 + %1567 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1568 = getelementptr inbounds %struct.CallInfo* %1567, i32 0, i32 2 ; [#uses=1] + store %struct.lua_TValue* %1564, %struct.lua_TValue** %1568, align 4 + %1569 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1570 = getelementptr inbounds %struct.lua_State* %1569, i32 0, i32 8 ; [#uses=1] + %1571 = load i32** %1570, align 4 ; [#uses=1] + %1572 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1573 = getelementptr inbounds %struct.CallInfo* %1572, i32 0, i32 3 ; [#uses=1] + store i32* %1571, i32** %1573, align 4 + %1574 = load %struct.CallInfo** %ci, align 4 ; [#uses=1] + %1575 = getelementptr inbounds %struct.CallInfo* %1574, i32 0, i32 5 ; [#uses=2] + %1576 = load i32* %1575, align 4 ; [#uses=1] + %1577 = add nsw i32 %1576, 1 ; [#uses=1] + store i32 %1577, i32* %1575, align 4 + %1578 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1579 = getelementptr inbounds %struct.lua_State* %1578, i32 0, i32 7 ; [#uses=2] + %1580 = load %struct.CallInfo** %1579, align 4 ; [#uses=1] + %1581 = getelementptr inbounds %struct.CallInfo* %1580, i32 -1 ; [#uses=1] + store %struct.CallInfo* %1581, %struct.CallInfo** %1579, align 4 + br label %3 + +; <label>:1582 ; preds = %1486 + %1583 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1584 = getelementptr inbounds %struct.lua_State* %1583, i32 0, i32 5 ; [#uses=1] + %1585 = load %struct.lua_TValue** %1584, align 4 ; [#uses=1] + store %struct.lua_TValue* %1585, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:1586 ; preds = %1486 + br label %2188 + +; <label>:1587 ; preds = %68 + %1588 = load i32* %i, align 4 ; [#uses=1] + %1589 = lshr i32 %1588, 23 ; [#uses=1] + %1590 = and i32 %1589, 511 ; [#uses=1] + store i32 %1590, i32* %b63, align 4 + %1591 = load i32* %b63, align 4 ; [#uses=1] + %1592 = icmp ne i32 %1591, 0 ; [#uses=1] + br i1 %1592, label %1593, label %1600 + +; <label>:1593 ; preds = %1587 + %1594 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1595 = load i32* %b63, align 4 ; [#uses=1] + %1596 = getelementptr inbounds %struct.lua_TValue* %1594, i32 %1595 ; [#uses=1] + %1597 = getelementptr inbounds %struct.lua_TValue* %1596, i32 -1 ; [#uses=1] + %1598 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1599 = getelementptr inbounds %struct.lua_State* %1598, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1597, %struct.lua_TValue** %1599, align 4 + br label %1600 + +; <label>:1600 ; preds = %1593, %1587 + %1601 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1602 = getelementptr inbounds %struct.lua_State* %1601, i32 0, i32 24 ; [#uses=1] + %1603 = load %union.GCObject** %1602, align 4 ; [#uses=1] + %1604 = icmp ne %union.GCObject* %1603, null ; [#uses=1] + br i1 %1604, label %1605, label %1608 + +; <label>:1605 ; preds = %1600 + %1606 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1607 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %1606, %struct.lua_TValue* %1607) + br label %1608 + +; <label>:1608 ; preds = %1605, %1600 + %1609 = load i32** %pc, align 4 ; [#uses=1] + %1610 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1611 = getelementptr inbounds %struct.lua_State* %1610, i32 0, i32 8 ; [#uses=1] + store i32* %1609, i32** %1611, align 4 + %1612 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1613 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1614 = call i32 @_Z12luaD_poscallP9lua_StateP10lua_TValue(%struct.lua_State* %1612, %struct.lua_TValue* %1613) ; [#uses=1] + store i32 %1614, i32* %b63, align 4 + %1615 = load i32* %2, align 4 ; [#uses=1] + %1616 = add nsw i32 %1615, -1 ; [#uses=2] + store i32 %1616, i32* %2, align 4 + %1617 = icmp eq i32 %1616, 0 ; [#uses=1] + br i1 %1617, label %1618, label %1619 + +; <label>:1618 ; preds = %1608 + br label %2188 + +; <label>:1619 ; preds = %1608 + %1620 = load i32* %b63, align 4 ; [#uses=1] + %1621 = icmp ne i32 %1620, 0 ; [#uses=1] + br i1 %1621, label %1622, label %1630 + +; <label>:1622 ; preds = %1619 + %1623 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1624 = getelementptr inbounds %struct.lua_State* %1623, i32 0, i32 7 ; [#uses=1] + %1625 = load %struct.CallInfo** %1624, align 4 ; [#uses=1] + %1626 = getelementptr inbounds %struct.CallInfo* %1625, i32 0, i32 2 ; [#uses=1] + %1627 = load %struct.lua_TValue** %1626, align 4 ; [#uses=1] + %1628 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1629 = getelementptr inbounds %struct.lua_State* %1628, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1627, %struct.lua_TValue** %1629, align 4 + br label %1630 + +; <label>:1630 ; preds = %1622, %1619 + br label %3 + +; <label>:1631 ; preds = %68 + %1632 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1633 = getelementptr inbounds %struct.lua_TValue* %1632, i32 2 ; [#uses=1] + %1634 = getelementptr inbounds %struct.lua_TValue* %1633, i32 0, i32 0 ; [#uses=1] + %1635 = getelementptr inbounds %union.anon* %1634, i32 0, i32 0 ; [#uses=1] + %1636 = load double* %1635, align 4 ; [#uses=1] + store double %1636, double* %step, align 8 + %1637 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1638 = getelementptr inbounds %struct.lua_TValue* %1637, i32 0, i32 0 ; [#uses=1] + %1639 = getelementptr inbounds %union.anon* %1638, i32 0, i32 0 ; [#uses=1] + %1640 = load double* %1639, align 4 ; [#uses=1] + %1641 = load double* %step, align 8 ; [#uses=1] + %1642 = fadd double %1640, %1641 ; [#uses=1] + store double %1642, double* %idx, align 8 + %1643 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1644 = getelementptr inbounds %struct.lua_TValue* %1643, i32 1 ; [#uses=1] + %1645 = getelementptr inbounds %struct.lua_TValue* %1644, i32 0, i32 0 ; [#uses=1] + %1646 = getelementptr inbounds %union.anon* %1645, i32 0, i32 0 ; [#uses=1] + %1647 = load double* %1646, align 4 ; [#uses=1] + store double %1647, double* %limit, align 8 + %1648 = load double* %step, align 8 ; [#uses=1] + %1649 = fcmp olt double 0.000000e+00, %1648 ; [#uses=1] + br i1 %1649, label %1650, label %1654 + +; <label>:1650 ; preds = %1631 + %1651 = load double* %idx, align 8 ; [#uses=1] + %1652 = load double* %limit, align 8 ; [#uses=1] + %1653 = fcmp ole double %1651, %1652 ; [#uses=1] + br i1 %1653, label %1658, label %1680 + +; <label>:1654 ; preds = %1631 + %1655 = load double* %limit, align 8 ; [#uses=1] + %1656 = load double* %idx, align 8 ; [#uses=1] + %1657 = fcmp ole double %1655, %1656 ; [#uses=1] + br i1 %1657, label %1658, label %1680 + +; <label>:1658 ; preds = %1654, %1650 + %1659 = load i32* %i, align 4 ; [#uses=1] + %1660 = lshr i32 %1659, 14 ; [#uses=1] + %1661 = and i32 %1660, 262143 ; [#uses=1] + %1662 = sub nsw i32 %1661, 131071 ; [#uses=1] + %1663 = load i32** %pc, align 4 ; [#uses=1] + %1664 = getelementptr inbounds i32* %1663, i32 %1662 ; [#uses=1] + store i32* %1664, i32** %pc, align 4 + %1665 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1665, %struct.lua_TValue** %i_o64, align 4 + %1666 = load double* %idx, align 8 ; [#uses=1] + %1667 = load %struct.lua_TValue** %i_o64, align 4 ; [#uses=1] + %1668 = getelementptr inbounds %struct.lua_TValue* %1667, i32 0, i32 0 ; [#uses=1] + %1669 = getelementptr inbounds %union.anon* %1668, i32 0, i32 0 ; [#uses=1] + store double %1666, double* %1669, align 4 + %1670 = load %struct.lua_TValue** %i_o64, align 4 ; [#uses=1] + %1671 = getelementptr inbounds %struct.lua_TValue* %1670, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %1671, align 4 + %1672 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1673 = getelementptr inbounds %struct.lua_TValue* %1672, i32 3 ; [#uses=1] + store %struct.lua_TValue* %1673, %struct.lua_TValue** %i_o65, align 4 + %1674 = load double* %idx, align 8 ; [#uses=1] + %1675 = load %struct.lua_TValue** %i_o65, align 4 ; [#uses=1] + %1676 = getelementptr inbounds %struct.lua_TValue* %1675, i32 0, i32 0 ; [#uses=1] + %1677 = getelementptr inbounds %union.anon* %1676, i32 0, i32 0 ; [#uses=1] + store double %1674, double* %1677, align 4 + %1678 = load %struct.lua_TValue** %i_o65, align 4 ; [#uses=1] + %1679 = getelementptr inbounds %struct.lua_TValue* %1678, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %1679, align 4 + br label %1680 + +; <label>:1680 ; preds = %1658, %1654, %1650 + br label %28 + +; <label>:1681 ; preds = %68 + %1682 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1682, %struct.lua_TValue** %init, align 4 + %1683 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1684 = getelementptr inbounds %struct.lua_TValue* %1683, i32 1 ; [#uses=1] + store %struct.lua_TValue* %1684, %struct.lua_TValue** %plimit, align 4 + %1685 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1686 = getelementptr inbounds %struct.lua_TValue* %1685, i32 2 ; [#uses=1] + store %struct.lua_TValue* %1686, %struct.lua_TValue** %pstep, align 4 + %1687 = load i32** %pc, align 4 ; [#uses=1] + %1688 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1689 = getelementptr inbounds %struct.lua_State* %1688, i32 0, i32 8 ; [#uses=1] + store i32* %1687, i32** %1689, align 4 + %1690 = load %struct.lua_TValue** %init, align 4 ; [#uses=1] + %1691 = getelementptr inbounds %struct.lua_TValue* %1690, i32 0, i32 1 ; [#uses=1] + %1692 = load i32* %1691, align 4 ; [#uses=1] + %1693 = icmp eq i32 %1692, 3 ; [#uses=1] + br i1 %1693, label %1701, label %1694 + +; <label>:1694 ; preds = %1681 + %1695 = load %struct.lua_TValue** %init, align 4 ; [#uses=1] + %1696 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1697 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %1695, %struct.lua_TValue* %1696) ; [#uses=2] + store %struct.lua_TValue* %1697, %struct.lua_TValue** %init, align 4 + %1698 = icmp ne %struct.lua_TValue* %1697, null ; [#uses=1] + br i1 %1698, label %1701, label %1699 + +; <label>:1699 ; preds = %1694 + %1700 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %1700, i8* getelementptr inbounds ([37 x i8]* @.str6226, i32 0, i32 0)) + br label %1729 + +; <label>:1701 ; preds = %1694, %1681 + %1702 = load %struct.lua_TValue** %plimit, align 4 ; [#uses=1] + %1703 = getelementptr inbounds %struct.lua_TValue* %1702, i32 0, i32 1 ; [#uses=1] + %1704 = load i32* %1703, align 4 ; [#uses=1] + %1705 = icmp eq i32 %1704, 3 ; [#uses=1] + br i1 %1705, label %1714, label %1706 + +; <label>:1706 ; preds = %1701 + %1707 = load %struct.lua_TValue** %plimit, align 4 ; [#uses=1] + %1708 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1709 = getelementptr inbounds %struct.lua_TValue* %1708, i32 1 ; [#uses=1] + %1710 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %1707, %struct.lua_TValue* %1709) ; [#uses=2] + store %struct.lua_TValue* %1710, %struct.lua_TValue** %plimit, align 4 + %1711 = icmp ne %struct.lua_TValue* %1710, null ; [#uses=1] + br i1 %1711, label %1714, label %1712 + +; <label>:1712 ; preds = %1706 + %1713 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %1713, i8* getelementptr inbounds ([29 x i8]* @.str7227, i32 0, i32 0)) + br label %1728 + +; <label>:1714 ; preds = %1706, %1701 + %1715 = load %struct.lua_TValue** %pstep, align 4 ; [#uses=1] + %1716 = getelementptr inbounds %struct.lua_TValue* %1715, i32 0, i32 1 ; [#uses=1] + %1717 = load i32* %1716, align 4 ; [#uses=1] + %1718 = icmp eq i32 %1717, 3 ; [#uses=1] + br i1 %1718, label %1727, label %1719 + +; <label>:1719 ; preds = %1714 + %1720 = load %struct.lua_TValue** %pstep, align 4 ; [#uses=1] + %1721 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1722 = getelementptr inbounds %struct.lua_TValue* %1721, i32 2 ; [#uses=1] + %1723 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %1720, %struct.lua_TValue* %1722) ; [#uses=2] + store %struct.lua_TValue* %1723, %struct.lua_TValue** %pstep, align 4 + %1724 = icmp ne %struct.lua_TValue* %1723, null ; [#uses=1] + br i1 %1724, label %1727, label %1725 + +; <label>:1725 ; preds = %1719 + %1726 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void (%struct.lua_State*, i8*, ...)* @_Z13luaG_runerrorP9lua_StatePKcz(%struct.lua_State* %1726, i8* getelementptr inbounds ([28 x i8]* @.str8228, i32 0, i32 0)) + br label %1727 + +; <label>:1727 ; preds = %1725, %1719, %1714 + br label %1728 + +; <label>:1728 ; preds = %1727, %1712 + br label %1729 + +; <label>:1729 ; preds = %1728, %1699 + %1730 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1730, %struct.lua_TValue** %i_o66, align 4 + %1731 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1732 = getelementptr inbounds %struct.lua_TValue* %1731, i32 0, i32 0 ; [#uses=1] + %1733 = getelementptr inbounds %union.anon* %1732, i32 0, i32 0 ; [#uses=1] + %1734 = load double* %1733, align 4 ; [#uses=1] + %1735 = load %struct.lua_TValue** %pstep, align 4 ; [#uses=1] + %1736 = getelementptr inbounds %struct.lua_TValue* %1735, i32 0, i32 0 ; [#uses=1] + %1737 = getelementptr inbounds %union.anon* %1736, i32 0, i32 0 ; [#uses=1] + %1738 = load double* %1737, align 4 ; [#uses=1] + %1739 = fsub double %1734, %1738 ; [#uses=1] + %1740 = load %struct.lua_TValue** %i_o66, align 4 ; [#uses=1] + %1741 = getelementptr inbounds %struct.lua_TValue* %1740, i32 0, i32 0 ; [#uses=1] + %1742 = getelementptr inbounds %union.anon* %1741, i32 0, i32 0 ; [#uses=1] + store double %1739, double* %1742, align 4 + %1743 = load %struct.lua_TValue** %i_o66, align 4 ; [#uses=1] + %1744 = getelementptr inbounds %struct.lua_TValue* %1743, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %1744, align 4 + %1745 = load i32* %i, align 4 ; [#uses=1] + %1746 = lshr i32 %1745, 14 ; [#uses=1] + %1747 = and i32 %1746, 262143 ; [#uses=1] + %1748 = sub nsw i32 %1747, 131071 ; [#uses=1] + %1749 = load i32** %pc, align 4 ; [#uses=1] + %1750 = getelementptr inbounds i32* %1749, i32 %1748 ; [#uses=1] + store i32* %1750, i32** %pc, align 4 + br label %28 + +; <label>:1751 ; preds = %68 + %1752 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1753 = getelementptr inbounds %struct.lua_TValue* %1752, i32 3 ; [#uses=1] + store %struct.lua_TValue* %1753, %struct.lua_TValue** %cb, align 4 + %1754 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1755 = getelementptr inbounds %struct.lua_TValue* %1754, i32 2 ; [#uses=1] + store %struct.lua_TValue* %1755, %struct.lua_TValue** %o267, align 4 + %1756 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1757 = getelementptr inbounds %struct.lua_TValue* %1756, i32 2 ; [#uses=1] + store %struct.lua_TValue* %1757, %struct.lua_TValue** %o168, align 4 + %1758 = load %struct.lua_TValue** %o168, align 4 ; [#uses=1] + %1759 = getelementptr inbounds %struct.lua_TValue* %1758, i32 0, i32 0 ; [#uses=1] + %1760 = load %struct.lua_TValue** %o267, align 4 ; [#uses=1] + %1761 = getelementptr inbounds %struct.lua_TValue* %1760, i32 0, i32 0 ; [#uses=1] + %1762 = bitcast %union.anon* %1759 to i8* ; [#uses=1] + %1763 = bitcast %union.anon* %1761 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1762, i8* %1763, i32 8, i32 4, i1 false) + %1764 = load %struct.lua_TValue** %o267, align 4 ; [#uses=1] + %1765 = getelementptr inbounds %struct.lua_TValue* %1764, i32 0, i32 1 ; [#uses=1] + %1766 = load i32* %1765, align 4 ; [#uses=1] + %1767 = load %struct.lua_TValue** %o168, align 4 ; [#uses=1] + %1768 = getelementptr inbounds %struct.lua_TValue* %1767, i32 0, i32 1 ; [#uses=1] + store i32 %1766, i32* %1768, align 4 + %1769 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1770 = getelementptr inbounds %struct.lua_TValue* %1769, i32 1 ; [#uses=1] + store %struct.lua_TValue* %1770, %struct.lua_TValue** %o269, align 4 + %1771 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1772 = getelementptr inbounds %struct.lua_TValue* %1771, i32 1 ; [#uses=1] + store %struct.lua_TValue* %1772, %struct.lua_TValue** %o170, align 4 + %1773 = load %struct.lua_TValue** %o170, align 4 ; [#uses=1] + %1774 = getelementptr inbounds %struct.lua_TValue* %1773, i32 0, i32 0 ; [#uses=1] + %1775 = load %struct.lua_TValue** %o269, align 4 ; [#uses=1] + %1776 = getelementptr inbounds %struct.lua_TValue* %1775, i32 0, i32 0 ; [#uses=1] + %1777 = bitcast %union.anon* %1774 to i8* ; [#uses=1] + %1778 = bitcast %union.anon* %1776 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1777, i8* %1778, i32 8, i32 4, i1 false) + %1779 = load %struct.lua_TValue** %o269, align 4 ; [#uses=1] + %1780 = getelementptr inbounds %struct.lua_TValue* %1779, i32 0, i32 1 ; [#uses=1] + %1781 = load i32* %1780, align 4 ; [#uses=1] + %1782 = load %struct.lua_TValue** %o170, align 4 ; [#uses=1] + %1783 = getelementptr inbounds %struct.lua_TValue* %1782, i32 0, i32 1 ; [#uses=1] + store i32 %1781, i32* %1783, align 4 + %1784 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %1784, %struct.lua_TValue** %o271, align 4 + %1785 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + store %struct.lua_TValue* %1785, %struct.lua_TValue** %o172, align 4 + %1786 = load %struct.lua_TValue** %o172, align 4 ; [#uses=1] + %1787 = getelementptr inbounds %struct.lua_TValue* %1786, i32 0, i32 0 ; [#uses=1] + %1788 = load %struct.lua_TValue** %o271, align 4 ; [#uses=1] + %1789 = getelementptr inbounds %struct.lua_TValue* %1788, i32 0, i32 0 ; [#uses=1] + %1790 = bitcast %union.anon* %1787 to i8* ; [#uses=1] + %1791 = bitcast %union.anon* %1789 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1790, i8* %1791, i32 8, i32 4, i1 false) + %1792 = load %struct.lua_TValue** %o271, align 4 ; [#uses=1] + %1793 = getelementptr inbounds %struct.lua_TValue* %1792, i32 0, i32 1 ; [#uses=1] + %1794 = load i32* %1793, align 4 ; [#uses=1] + %1795 = load %struct.lua_TValue** %o172, align 4 ; [#uses=1] + %1796 = getelementptr inbounds %struct.lua_TValue* %1795, i32 0, i32 1 ; [#uses=1] + store i32 %1794, i32* %1796, align 4 + %1797 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1798 = getelementptr inbounds %struct.lua_TValue* %1797, i32 3 ; [#uses=1] + %1799 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1800 = getelementptr inbounds %struct.lua_State* %1799, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1798, %struct.lua_TValue** %1800, align 4 + %1801 = load i32** %pc, align 4 ; [#uses=1] + %1802 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1803 = getelementptr inbounds %struct.lua_State* %1802, i32 0, i32 8 ; [#uses=1] + store i32* %1801, i32** %1803, align 4 + %1804 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1805 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1806 = load i32* %i, align 4 ; [#uses=1] + %1807 = lshr i32 %1806, 14 ; [#uses=1] + %1808 = and i32 %1807, 511 ; [#uses=1] + call void @_Z9luaD_callP9lua_StateP10lua_TValuei(%struct.lua_State* %1804, %struct.lua_TValue* %1805, i32 %1808) + %1809 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1810 = getelementptr inbounds %struct.lua_State* %1809, i32 0, i32 5 ; [#uses=1] + %1811 = load %struct.lua_TValue** %1810, align 4 ; [#uses=1] + store %struct.lua_TValue* %1811, %struct.lua_TValue** %base, align 4 + %1812 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1813 = getelementptr inbounds %struct.lua_State* %1812, i32 0, i32 7 ; [#uses=1] + %1814 = load %struct.CallInfo** %1813, align 4 ; [#uses=1] + %1815 = getelementptr inbounds %struct.CallInfo* %1814, i32 0, i32 2 ; [#uses=1] + %1816 = load %struct.lua_TValue** %1815, align 4 ; [#uses=1] + %1817 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1818 = getelementptr inbounds %struct.lua_State* %1817, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1816, %struct.lua_TValue** %1818, align 4 + %1819 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %1820 = load i32* %i, align 4 ; [#uses=1] + %1821 = lshr i32 %1820, 6 ; [#uses=1] + %1822 = and i32 %1821, 255 ; [#uses=1] + %1823 = getelementptr inbounds %struct.lua_TValue* %1819, i32 %1822 ; [#uses=1] + %1824 = getelementptr inbounds %struct.lua_TValue* %1823, i32 3 ; [#uses=1] + store %struct.lua_TValue* %1824, %struct.lua_TValue** %cb, align 4 + %1825 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1826 = getelementptr inbounds %struct.lua_TValue* %1825, i32 0, i32 1 ; [#uses=1] + %1827 = load i32* %1826, align 4 ; [#uses=1] + %1828 = icmp eq i32 %1827, 0 ; [#uses=1] + br i1 %1828, label %1851, label %1829 + +; <label>:1829 ; preds = %1751 + %1830 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + store %struct.lua_TValue* %1830, %struct.lua_TValue** %o273, align 4 + %1831 = load %struct.lua_TValue** %cb, align 4 ; [#uses=1] + %1832 = getelementptr inbounds %struct.lua_TValue* %1831, i32 -1 ; [#uses=1] + store %struct.lua_TValue* %1832, %struct.lua_TValue** %o174, align 4 + %1833 = load %struct.lua_TValue** %o174, align 4 ; [#uses=1] + %1834 = getelementptr inbounds %struct.lua_TValue* %1833, i32 0, i32 0 ; [#uses=1] + %1835 = load %struct.lua_TValue** %o273, align 4 ; [#uses=1] + %1836 = getelementptr inbounds %struct.lua_TValue* %1835, i32 0, i32 0 ; [#uses=1] + %1837 = bitcast %union.anon* %1834 to i8* ; [#uses=1] + %1838 = bitcast %union.anon* %1836 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1837, i8* %1838, i32 8, i32 4, i1 false) + %1839 = load %struct.lua_TValue** %o273, align 4 ; [#uses=1] + %1840 = getelementptr inbounds %struct.lua_TValue* %1839, i32 0, i32 1 ; [#uses=1] + %1841 = load i32* %1840, align 4 ; [#uses=1] + %1842 = load %struct.lua_TValue** %o174, align 4 ; [#uses=1] + %1843 = getelementptr inbounds %struct.lua_TValue* %1842, i32 0, i32 1 ; [#uses=1] + store i32 %1841, i32* %1843, align 4 + %1844 = load i32** %pc, align 4 ; [#uses=1] + %1845 = load i32* %1844 ; [#uses=1] + %1846 = lshr i32 %1845, 14 ; [#uses=1] + %1847 = and i32 %1846, 262143 ; [#uses=1] + %1848 = sub nsw i32 %1847, 131071 ; [#uses=1] + %1849 = load i32** %pc, align 4 ; [#uses=1] + %1850 = getelementptr inbounds i32* %1849, i32 %1848 ; [#uses=1] + store i32* %1850, i32** %pc, align 4 + br label %1851 + +; <label>:1851 ; preds = %1829, %1751 + %1852 = load i32** %pc, align 4 ; [#uses=1] + %1853 = getelementptr inbounds i32* %1852, i32 1 ; [#uses=1] + store i32* %1853, i32** %pc, align 4 + br label %28 + +; <label>:1854 ; preds = %68 + %1855 = load i32* %i, align 4 ; [#uses=1] + %1856 = lshr i32 %1855, 23 ; [#uses=1] + %1857 = and i32 %1856, 511 ; [#uses=1] + store i32 %1857, i32* %n, align 4 + %1858 = load i32* %i, align 4 ; [#uses=1] + %1859 = lshr i32 %1858, 14 ; [#uses=1] + %1860 = and i32 %1859, 511 ; [#uses=1] + store i32 %1860, i32* %c75, align 4 + %1861 = load i32* %n, align 4 ; [#uses=1] + %1862 = icmp eq i32 %1861, 0 ; [#uses=1] + br i1 %1862, label %1863, label %1880 + +; <label>:1863 ; preds = %1854 + %1864 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1865 = getelementptr inbounds %struct.lua_State* %1864, i32 0, i32 4 ; [#uses=1] + %1866 = load %struct.lua_TValue** %1865, align 4 ; [#uses=1] + %1867 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1868 = ptrtoint %struct.lua_TValue* %1866 to i32 ; [#uses=1] + %1869 = ptrtoint %struct.lua_TValue* %1867 to i32 ; [#uses=1] + %1870 = sub i32 %1868, %1869 ; [#uses=1] + %1871 = sdiv exact i32 %1870, 12 ; [#uses=1] + %1872 = sub nsw i32 %1871, 1 ; [#uses=1] + store i32 %1872, i32* %n, align 4 + %1873 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1874 = getelementptr inbounds %struct.lua_State* %1873, i32 0, i32 7 ; [#uses=1] + %1875 = load %struct.CallInfo** %1874, align 4 ; [#uses=1] + %1876 = getelementptr inbounds %struct.CallInfo* %1875, i32 0, i32 2 ; [#uses=1] + %1877 = load %struct.lua_TValue** %1876, align 4 ; [#uses=1] + %1878 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1879 = getelementptr inbounds %struct.lua_State* %1878, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %1877, %struct.lua_TValue** %1879, align 4 + br label %1880 + +; <label>:1880 ; preds = %1863, %1854 + %1881 = load i32* %c75, align 4 ; [#uses=1] + %1882 = icmp eq i32 %1881, 0 ; [#uses=1] + br i1 %1882, label %1883, label %1887 + +; <label>:1883 ; preds = %1880 + %1884 = load i32** %pc, align 4 ; [#uses=2] + %1885 = getelementptr inbounds i32* %1884, i32 1 ; [#uses=1] + store i32* %1885, i32** %pc, align 4 + %1886 = load i32* %1884 ; [#uses=1] + store i32 %1886, i32* %c75, align 4 + br label %1887 + +; <label>:1887 ; preds = %1883, %1880 + %1888 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1889 = getelementptr inbounds %struct.lua_TValue* %1888, i32 0, i32 1 ; [#uses=1] + %1890 = load i32* %1889, align 4 ; [#uses=1] + %1891 = icmp eq i32 %1890, 5 ; [#uses=1] + br i1 %1891, label %1893, label %1892 + +; <label>:1892 ; preds = %1887 + br label %2187 + +; <label>:1893 ; preds = %1887 + %1894 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1895 = getelementptr inbounds %struct.lua_TValue* %1894, i32 0, i32 0 ; [#uses=1] + %1896 = getelementptr inbounds %union.anon* %1895, i32 0, i32 0 ; [#uses=1] + %1897 = bitcast double* %1896 to %union.GCObject** ; [#uses=1] + %1898 = load %union.GCObject** %1897, align 4 ; [#uses=1] + %1899 = getelementptr inbounds %union.GCObject* %1898, i32 0, i32 0 ; [#uses=1] + %1900 = bitcast %struct.lua_State* %1899 to %struct.Table* ; [#uses=1] + store %struct.Table* %1900, %struct.Table** %h, align 4 + %1901 = load i32* %c75, align 4 ; [#uses=1] + %1902 = sub nsw i32 %1901, 1 ; [#uses=1] + %1903 = mul nsw i32 %1902, 50 ; [#uses=1] + %1904 = load i32* %n, align 4 ; [#uses=1] + %1905 = add nsw i32 %1903, %1904 ; [#uses=1] + store i32 %1905, i32* %last, align 4 + %1906 = load i32* %last, align 4 ; [#uses=1] + %1907 = load %struct.Table** %h, align 4 ; [#uses=1] + %1908 = getelementptr inbounds %struct.Table* %1907, i32 0, i32 10 ; [#uses=1] + %1909 = load i32* %1908, align 4 ; [#uses=1] + %1910 = icmp sgt i32 %1906, %1909 ; [#uses=1] + br i1 %1910, label %1911, label %1915 + +; <label>:1911 ; preds = %1893 + %1912 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1913 = load %struct.Table** %h, align 4 ; [#uses=1] + %1914 = load i32* %last, align 4 ; [#uses=1] + call void @_Z16luaH_resizearrayP9lua_StateP5Tablei(%struct.lua_State* %1912, %struct.Table* %1913, i32 %1914) + br label %1915 + +; <label>:1915 ; preds = %1911, %1893 + br label %1916 + +; <label>:1916 ; preds = %1971, %1915 + %1917 = load i32* %n, align 4 ; [#uses=1] + %1918 = icmp sgt i32 %1917, 0 ; [#uses=1] + br i1 %1918, label %1919, label %1974 + +; <label>:1919 ; preds = %1916 + %1920 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %1921 = load i32* %n, align 4 ; [#uses=1] + %1922 = getelementptr inbounds %struct.lua_TValue* %1920, i32 %1921 ; [#uses=1] + store %struct.lua_TValue* %1922, %struct.lua_TValue** %val, align 4 + %1923 = load %struct.lua_TValue** %val, align 4 ; [#uses=1] + store %struct.lua_TValue* %1923, %struct.lua_TValue** %o276, align 4 + %1924 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1925 = load %struct.Table** %h, align 4 ; [#uses=1] + %1926 = load i32* %last, align 4 ; [#uses=2] + %1927 = add nsw i32 %1926, -1 ; [#uses=1] + store i32 %1927, i32* %last, align 4 + %1928 = call %struct.lua_TValue* @_Z11luaH_setnumP9lua_StateP5Tablei(%struct.lua_State* %1924, %struct.Table* %1925, i32 %1926) ; [#uses=1] + store %struct.lua_TValue* %1928, %struct.lua_TValue** %o177, align 4 + %1929 = load %struct.lua_TValue** %o177, align 4 ; [#uses=1] + %1930 = getelementptr inbounds %struct.lua_TValue* %1929, i32 0, i32 0 ; [#uses=1] + %1931 = load %struct.lua_TValue** %o276, align 4 ; [#uses=1] + %1932 = getelementptr inbounds %struct.lua_TValue* %1931, i32 0, i32 0 ; [#uses=1] + %1933 = bitcast %union.anon* %1930 to i8* ; [#uses=1] + %1934 = bitcast %union.anon* %1932 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1933, i8* %1934, i32 8, i32 4, i1 false) + %1935 = load %struct.lua_TValue** %o276, align 4 ; [#uses=1] + %1936 = getelementptr inbounds %struct.lua_TValue* %1935, i32 0, i32 1 ; [#uses=1] + %1937 = load i32* %1936, align 4 ; [#uses=1] + %1938 = load %struct.lua_TValue** %o177, align 4 ; [#uses=1] + %1939 = getelementptr inbounds %struct.lua_TValue* %1938, i32 0, i32 1 ; [#uses=1] + store i32 %1937, i32* %1939, align 4 + %1940 = load %struct.lua_TValue** %val, align 4 ; [#uses=1] + %1941 = getelementptr inbounds %struct.lua_TValue* %1940, i32 0, i32 1 ; [#uses=1] + %1942 = load i32* %1941, align 4 ; [#uses=1] + %1943 = icmp sge i32 %1942, 4 ; [#uses=1] + br i1 %1943, label %1944, label %1970 + +; <label>:1944 ; preds = %1919 + %1945 = load %struct.lua_TValue** %val, align 4 ; [#uses=1] + %1946 = getelementptr inbounds %struct.lua_TValue* %1945, i32 0, i32 0 ; [#uses=1] + %1947 = getelementptr inbounds %union.anon* %1946, i32 0, i32 0 ; [#uses=1] + %1948 = bitcast double* %1947 to %union.GCObject** ; [#uses=1] + %1949 = load %union.GCObject** %1948, align 4 ; [#uses=1] + %1950 = getelementptr inbounds %union.GCObject* %1949, i32 0, i32 0 ; [#uses=1] + %1951 = bitcast %struct.lua_State* %1950 to %struct.GCheader* ; [#uses=1] + %1952 = getelementptr inbounds %struct.GCheader* %1951, i32 0, i32 2 ; [#uses=1] + %1953 = load i8* %1952, align 1 ; [#uses=1] + %1954 = zext i8 %1953 to i32 ; [#uses=1] + %1955 = and i32 %1954, 3 ; [#uses=1] + %1956 = icmp ne i32 %1955, 0 ; [#uses=1] + br i1 %1956, label %1957, label %1970 + +; <label>:1957 ; preds = %1944 + %1958 = load %struct.Table** %h, align 4 ; [#uses=1] + %1959 = bitcast %struct.Table* %1958 to %union.GCObject* ; [#uses=1] + %1960 = getelementptr inbounds %union.GCObject* %1959, i32 0, i32 0 ; [#uses=1] + %1961 = bitcast %struct.lua_State* %1960 to %struct.GCheader* ; [#uses=1] + %1962 = getelementptr inbounds %struct.GCheader* %1961, i32 0, i32 2 ; [#uses=1] + %1963 = load i8* %1962, align 1 ; [#uses=1] + %1964 = zext i8 %1963 to i32 ; [#uses=1] + %1965 = and i32 %1964, 4 ; [#uses=1] + %1966 = icmp ne i32 %1965, 0 ; [#uses=1] + br i1 %1966, label %1967, label %1970 + +; <label>:1967 ; preds = %1957 + %1968 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1969 = load %struct.Table** %h, align 4 ; [#uses=1] + call void @_Z16luaC_barrierbackP9lua_StateP5Table(%struct.lua_State* %1968, %struct.Table* %1969) + br label %1970 + +; <label>:1970 ; preds = %1967, %1957, %1944, %1919 + br label %1971 + +; <label>:1971 ; preds = %1970 + %1972 = load i32* %n, align 4 ; [#uses=1] + %1973 = add nsw i32 %1972, -1 ; [#uses=1] + store i32 %1973, i32* %n, align 4 + br label %1916 + +; <label>:1974 ; preds = %1916 + br label %28 + +; <label>:1975 ; preds = %68 + %1976 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1977 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + call void @_Z10luaF_closeP9lua_StateP10lua_TValue(%struct.lua_State* %1976, %struct.lua_TValue* %1977) + br label %28 + +; <label>:1978 ; preds = %68 + %1979 = load i32* %i, align 4 ; [#uses=1] + %1980 = lshr i32 %1979, 14 ; [#uses=1] + %1981 = and i32 %1980, 262143 ; [#uses=1] + %1982 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %1983 = getelementptr inbounds %struct.LClosure* %1982, i32 0, i32 7 ; [#uses=1] + %1984 = load %struct.Proto** %1983, align 4 ; [#uses=1] + %1985 = getelementptr inbounds %struct.Proto* %1984, i32 0, i32 5 ; [#uses=1] + %1986 = load %struct.Proto*** %1985, align 4 ; [#uses=1] + %1987 = getelementptr inbounds %struct.Proto** %1986, i32 %1981 ; [#uses=1] + %1988 = load %struct.Proto** %1987 ; [#uses=1] + store %struct.Proto* %1988, %struct.Proto** %p, align 4 + %1989 = load %struct.Proto** %p, align 4 ; [#uses=1] + %1990 = getelementptr inbounds %struct.Proto* %1989, i32 0, i32 19 ; [#uses=1] + %1991 = load i8* %1990, align 1 ; [#uses=1] + %1992 = zext i8 %1991 to i32 ; [#uses=1] + store i32 %1992, i32* %nup, align 4 + %1993 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %1994 = load i32* %nup, align 4 ; [#uses=1] + %1995 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %1996 = getelementptr inbounds %struct.LClosure* %1995, i32 0, i32 6 ; [#uses=1] + %1997 = load %struct.Table** %1996, align 4 ; [#uses=1] + %1998 = call %union.Closure* @_Z16luaF_newLclosureP9lua_StateiP5Table(%struct.lua_State* %1993, i32 %1994, %struct.Table* %1997) ; [#uses=1] + store %union.Closure* %1998, %union.Closure** %ncl, align 4 + %1999 = load %struct.Proto** %p, align 4 ; [#uses=1] + %2000 = load %union.Closure** %ncl, align 4 ; [#uses=1] + %2001 = getelementptr inbounds %union.Closure* %2000, i32 0, i32 0 ; [#uses=1] + %2002 = bitcast %struct.CClosure* %2001 to %struct.LClosure* ; [#uses=1] + %2003 = getelementptr inbounds %struct.LClosure* %2002, i32 0, i32 7 ; [#uses=1] + store %struct.Proto* %1999, %struct.Proto** %2003, align 4 + store i32 0, i32* %j, align 4 + br label %2004 + +; <label>:2004 ; preds = %2045, %1978 + %2005 = load i32* %j, align 4 ; [#uses=1] + %2006 = load i32* %nup, align 4 ; [#uses=1] + %2007 = icmp slt i32 %2005, %2006 ; [#uses=1] + br i1 %2007, label %2008, label %2050 + +; <label>:2008 ; preds = %2004 + %2009 = load i32** %pc, align 4 ; [#uses=1] + %2010 = load i32* %2009 ; [#uses=1] + %2011 = lshr i32 %2010, 0 ; [#uses=1] + %2012 = and i32 %2011, 63 ; [#uses=1] + %2013 = icmp eq i32 %2012, 4 ; [#uses=1] + br i1 %2013, label %2014, label %2029 + +; <label>:2014 ; preds = %2008 + %2015 = load i32** %pc, align 4 ; [#uses=1] + %2016 = load i32* %2015 ; [#uses=1] + %2017 = lshr i32 %2016, 23 ; [#uses=1] + %2018 = and i32 %2017, 511 ; [#uses=1] + %2019 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %2020 = getelementptr inbounds %struct.LClosure* %2019, i32 0, i32 8 ; [#uses=1] + %2021 = getelementptr inbounds [1 x %struct.UpVal*]* %2020, i32 0, i32 %2018 ; [#uses=1] + %2022 = load %struct.UpVal** %2021 ; [#uses=1] + %2023 = load i32* %j, align 4 ; [#uses=1] + %2024 = load %union.Closure** %ncl, align 4 ; [#uses=1] + %2025 = getelementptr inbounds %union.Closure* %2024, i32 0, i32 0 ; [#uses=1] + %2026 = bitcast %struct.CClosure* %2025 to %struct.LClosure* ; [#uses=1] + %2027 = getelementptr inbounds %struct.LClosure* %2026, i32 0, i32 8 ; [#uses=1] + %2028 = getelementptr inbounds [1 x %struct.UpVal*]* %2027, i32 0, i32 %2023 ; [#uses=1] + store %struct.UpVal* %2022, %struct.UpVal** %2028 + br label %2044 + +; <label>:2029 ; preds = %2008 + %2030 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2031 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %2032 = load i32** %pc, align 4 ; [#uses=1] + %2033 = load i32* %2032 ; [#uses=1] + %2034 = lshr i32 %2033, 23 ; [#uses=1] + %2035 = and i32 %2034, 511 ; [#uses=1] + %2036 = getelementptr inbounds %struct.lua_TValue* %2031, i32 %2035 ; [#uses=1] + %2037 = call %struct.UpVal* @_Z14luaF_findupvalP9lua_StateP10lua_TValue(%struct.lua_State* %2030, %struct.lua_TValue* %2036) ; [#uses=1] + %2038 = load i32* %j, align 4 ; [#uses=1] + %2039 = load %union.Closure** %ncl, align 4 ; [#uses=1] + %2040 = getelementptr inbounds %union.Closure* %2039, i32 0, i32 0 ; [#uses=1] + %2041 = bitcast %struct.CClosure* %2040 to %struct.LClosure* ; [#uses=1] + %2042 = getelementptr inbounds %struct.LClosure* %2041, i32 0, i32 8 ; [#uses=1] + %2043 = getelementptr inbounds [1 x %struct.UpVal*]* %2042, i32 0, i32 %2038 ; [#uses=1] + store %struct.UpVal* %2037, %struct.UpVal** %2043 + br label %2044 + +; <label>:2044 ; preds = %2029, %2014 + br label %2045 + +; <label>:2045 ; preds = %2044 + %2046 = load i32* %j, align 4 ; [#uses=1] + %2047 = add nsw i32 %2046, 1 ; [#uses=1] + store i32 %2047, i32* %j, align 4 + %2048 = load i32** %pc, align 4 ; [#uses=1] + %2049 = getelementptr inbounds i32* %2048, i32 1 ; [#uses=1] + store i32* %2049, i32** %pc, align 4 + br label %2004 + +; <label>:2050 ; preds = %2004 + %2051 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + store %struct.lua_TValue* %2051, %struct.lua_TValue** %i_o78, align 4 + %2052 = load %union.Closure** %ncl, align 4 ; [#uses=1] + %2053 = bitcast %union.Closure* %2052 to %union.GCObject* ; [#uses=1] + %2054 = load %struct.lua_TValue** %i_o78, align 4 ; [#uses=1] + %2055 = getelementptr inbounds %struct.lua_TValue* %2054, i32 0, i32 0 ; [#uses=1] + %2056 = getelementptr inbounds %union.anon* %2055, i32 0, i32 0 ; [#uses=1] + %2057 = bitcast double* %2056 to %union.GCObject** ; [#uses=1] + store %union.GCObject* %2053, %union.GCObject** %2057, align 4 + %2058 = load %struct.lua_TValue** %i_o78, align 4 ; [#uses=1] + %2059 = getelementptr inbounds %struct.lua_TValue* %2058, i32 0, i32 1 ; [#uses=1] + store i32 6, i32* %2059, align 4 + %2060 = load i32** %pc, align 4 ; [#uses=1] + %2061 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2062 = getelementptr inbounds %struct.lua_State* %2061, i32 0, i32 8 ; [#uses=1] + store i32* %2060, i32** %2062, align 4 + %2063 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2064 = getelementptr inbounds %struct.lua_State* %2063, i32 0, i32 6 ; [#uses=1] + %2065 = load %struct.global_State** %2064, align 4 ; [#uses=1] + %2066 = getelementptr inbounds %struct.global_State* %2065, i32 0, i32 14 ; [#uses=1] + %2067 = load i32* %2066, align 4 ; [#uses=1] + %2068 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2069 = getelementptr inbounds %struct.lua_State* %2068, i32 0, i32 6 ; [#uses=1] + %2070 = load %struct.global_State** %2069, align 4 ; [#uses=1] + %2071 = getelementptr inbounds %struct.global_State* %2070, i32 0, i32 13 ; [#uses=1] + %2072 = load i32* %2071, align 4 ; [#uses=1] + %2073 = icmp uge i32 %2067, %2072 ; [#uses=1] + br i1 %2073, label %2074, label %2076 + +; <label>:2074 ; preds = %2050 + %2075 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9luaC_stepP9lua_State(%struct.lua_State* %2075) + br label %2076 + +; <label>:2076 ; preds = %2074, %2050 + %2077 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2078 = getelementptr inbounds %struct.lua_State* %2077, i32 0, i32 5 ; [#uses=1] + %2079 = load %struct.lua_TValue** %2078, align 4 ; [#uses=1] + store %struct.lua_TValue* %2079, %struct.lua_TValue** %base, align 4 + br label %28 + +; <label>:2080 ; preds = %68 + %2081 = load i32* %i, align 4 ; [#uses=1] + %2082 = lshr i32 %2081, 23 ; [#uses=1] + %2083 = and i32 %2082, 511 ; [#uses=1] + %2084 = sub nsw i32 %2083, 1 ; [#uses=1] + store i32 %2084, i32* %b79, align 4 + %2085 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2086 = getelementptr inbounds %struct.lua_State* %2085, i32 0, i32 7 ; [#uses=1] + %2087 = load %struct.CallInfo** %2086, align 4 ; [#uses=1] + store %struct.CallInfo* %2087, %struct.CallInfo** %ci81, align 4 + %2088 = load %struct.CallInfo** %ci81, align 4 ; [#uses=1] + %2089 = getelementptr inbounds %struct.CallInfo* %2088, i32 0, i32 0 ; [#uses=1] + %2090 = load %struct.lua_TValue** %2089, align 4 ; [#uses=1] + %2091 = load %struct.CallInfo** %ci81, align 4 ; [#uses=1] + %2092 = getelementptr inbounds %struct.CallInfo* %2091, i32 0, i32 1 ; [#uses=1] + %2093 = load %struct.lua_TValue** %2092, align 4 ; [#uses=1] + %2094 = ptrtoint %struct.lua_TValue* %2090 to i32 ; [#uses=1] + %2095 = ptrtoint %struct.lua_TValue* %2093 to i32 ; [#uses=1] + %2096 = sub i32 %2094, %2095 ; [#uses=1] + %2097 = sdiv exact i32 %2096, 12 ; [#uses=1] + %2098 = load %struct.LClosure** %cl, align 4 ; [#uses=1] + %2099 = getelementptr inbounds %struct.LClosure* %2098, i32 0, i32 7 ; [#uses=1] + %2100 = load %struct.Proto** %2099, align 4 ; [#uses=1] + %2101 = getelementptr inbounds %struct.Proto* %2100, i32 0, i32 20 ; [#uses=1] + %2102 = load i8* %2101, align 1 ; [#uses=1] + %2103 = zext i8 %2102 to i32 ; [#uses=1] + %2104 = sub nsw i32 %2097, %2103 ; [#uses=1] + %2105 = sub nsw i32 %2104, 1 ; [#uses=1] + store i32 %2105, i32* %n82, align 4 + %2106 = load i32* %b79, align 4 ; [#uses=1] + %2107 = icmp eq i32 %2106, -1 ; [#uses=1] + br i1 %2107, label %2108, label %2145 + +; <label>:2108 ; preds = %2080 + %2109 = load i32** %pc, align 4 ; [#uses=1] + %2110 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2111 = getelementptr inbounds %struct.lua_State* %2110, i32 0, i32 8 ; [#uses=1] + store i32* %2109, i32** %2111, align 4 + %2112 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2113 = getelementptr inbounds %struct.lua_State* %2112, i32 0, i32 9 ; [#uses=1] + %2114 = load %struct.lua_TValue** %2113, align 4 ; [#uses=1] + %2115 = bitcast %struct.lua_TValue* %2114 to i8* ; [#uses=1] + %2116 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2117 = getelementptr inbounds %struct.lua_State* %2116, i32 0, i32 4 ; [#uses=1] + %2118 = load %struct.lua_TValue** %2117, align 4 ; [#uses=1] + %2119 = bitcast %struct.lua_TValue* %2118 to i8* ; [#uses=1] + %2120 = ptrtoint i8* %2115 to i32 ; [#uses=1] + %2121 = ptrtoint i8* %2119 to i32 ; [#uses=1] + %2122 = sub i32 %2120, %2121 ; [#uses=1] + %2123 = load i32* %n82, align 4 ; [#uses=1] + %2124 = mul nsw i32 %2123, 12 ; [#uses=1] + %2125 = icmp sle i32 %2122, %2124 ; [#uses=1] + br i1 %2125, label %2126, label %2129 + +; <label>:2126 ; preds = %2108 + %2127 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2128 = load i32* %n82, align 4 ; [#uses=1] + call void @_Z14luaD_growstackP9lua_Statei(%struct.lua_State* %2127, i32 %2128) + br label %2130 + +; <label>:2129 ; preds = %2108 + br label %2130 + +; <label>:2130 ; preds = %2129, %2126 + %2131 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2132 = getelementptr inbounds %struct.lua_State* %2131, i32 0, i32 5 ; [#uses=1] + %2133 = load %struct.lua_TValue** %2132, align 4 ; [#uses=1] + store %struct.lua_TValue* %2133, %struct.lua_TValue** %base, align 4 + %2134 = load %struct.lua_TValue** %base, align 4 ; [#uses=1] + %2135 = load i32* %i, align 4 ; [#uses=1] + %2136 = lshr i32 %2135, 6 ; [#uses=1] + %2137 = and i32 %2136, 255 ; [#uses=1] + %2138 = getelementptr inbounds %struct.lua_TValue* %2134, i32 %2137 ; [#uses=1] + store %struct.lua_TValue* %2138, %struct.lua_TValue** %ra, align 4 + %2139 = load i32* %n82, align 4 ; [#uses=1] + store i32 %2139, i32* %b79, align 4 + %2140 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %2141 = load i32* %n82, align 4 ; [#uses=1] + %2142 = getelementptr inbounds %struct.lua_TValue* %2140, i32 %2141 ; [#uses=1] + %2143 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %2144 = getelementptr inbounds %struct.lua_State* %2143, i32 0, i32 4 ; [#uses=1] + store %struct.lua_TValue* %2142, %struct.lua_TValue** %2144, align 4 + br label %2145 + +; <label>:2145 ; preds = %2130, %2080 + store i32 0, i32* %j80, align 4 + br label %2146 + +; <label>:2146 ; preds = %2183, %2145 + %2147 = load i32* %j80, align 4 ; [#uses=1] + %2148 = load i32* %b79, align 4 ; [#uses=1] + %2149 = icmp slt i32 %2147, %2148 ; [#uses=1] + br i1 %2149, label %2150, label %2186 + +; <label>:2150 ; preds = %2146 + %2151 = load i32* %j80, align 4 ; [#uses=1] + %2152 = load i32* %n82, align 4 ; [#uses=1] + %2153 = icmp slt i32 %2151, %2152 ; [#uses=1] + br i1 %2153, label %2154, label %2177 + +; <label>:2154 ; preds = %2150 + %2155 = load %struct.CallInfo** %ci81, align 4 ; [#uses=1] + %2156 = getelementptr inbounds %struct.CallInfo* %2155, i32 0, i32 0 ; [#uses=1] + %2157 = load %struct.lua_TValue** %2156, align 4 ; [#uses=1] + %2158 = load i32* %n82, align 4 ; [#uses=1] + %2159 = sub i32 0, %2158 ; [#uses=1] + %2160 = getelementptr inbounds %struct.lua_TValue* %2157, i32 %2159 ; [#uses=1] + %2161 = load i32* %j80, align 4 ; [#uses=1] + %2162 = getelementptr inbounds %struct.lua_TValue* %2160, i32 %2161 ; [#uses=1] + store %struct.lua_TValue* %2162, %struct.lua_TValue** %o283, align 4 + %2163 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %2164 = load i32* %j80, align 4 ; [#uses=1] + %2165 = getelementptr inbounds %struct.lua_TValue* %2163, i32 %2164 ; [#uses=1] + store %struct.lua_TValue* %2165, %struct.lua_TValue** %o184, align 4 + %2166 = load %struct.lua_TValue** %o184, align 4 ; [#uses=1] + %2167 = getelementptr inbounds %struct.lua_TValue* %2166, i32 0, i32 0 ; [#uses=1] + %2168 = load %struct.lua_TValue** %o283, align 4 ; [#uses=1] + %2169 = getelementptr inbounds %struct.lua_TValue* %2168, i32 0, i32 0 ; [#uses=1] + %2170 = bitcast %union.anon* %2167 to i8* ; [#uses=1] + %2171 = bitcast %union.anon* %2169 to i8* ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %2170, i8* %2171, i32 8, i32 4, i1 false) + %2172 = load %struct.lua_TValue** %o283, align 4 ; [#uses=1] + %2173 = getelementptr inbounds %struct.lua_TValue* %2172, i32 0, i32 1 ; [#uses=1] + %2174 = load i32* %2173, align 4 ; [#uses=1] + %2175 = load %struct.lua_TValue** %o184, align 4 ; [#uses=1] + %2176 = getelementptr inbounds %struct.lua_TValue* %2175, i32 0, i32 1 ; [#uses=1] + store i32 %2174, i32* %2176, align 4 + br label %2182 + +; <label>:2177 ; preds = %2150 + %2178 = load %struct.lua_TValue** %ra, align 4 ; [#uses=1] + %2179 = load i32* %j80, align 4 ; [#uses=1] + %2180 = getelementptr inbounds %struct.lua_TValue* %2178, i32 %2179 ; [#uses=1] + %2181 = getelementptr inbounds %struct.lua_TValue* %2180, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %2181, align 4 + br label %2182 + +; <label>:2182 ; preds = %2177, %2154 + br label %2183 + +; <label>:2183 ; preds = %2182 + %2184 = load i32* %j80, align 4 ; [#uses=1] + %2185 = add nsw i32 %2184, 1 ; [#uses=1] + store i32 %2185, i32* %j80, align 4 + br label %2146 + +; <label>:2186 ; preds = %2146 + br label %28 + +; <label>:2187 ; preds = %1892, %68 + br label %28 + +; <label>:2188 ; preds = %1618, %1586, %1473, %59 + ret void +} + +; [#uses=1] +define internal void @_Z9traceexecP9lua_StatePKj(%struct.lua_State* %L, i32* %pc) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %2 = alloca i32*, align 4 ; [#uses=4] + %mask = alloca i8, align 1 ; [#uses=3] + %oldpc = alloca i32*, align 4 ; [#uses=3] + %p = alloca %struct.Proto*, align 4 ; [#uses=7] + %npc = alloca i32, align 4 ; [#uses=3] + %newline = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32* %pc, i32** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.lua_State* %3, i32 0, i32 17 ; [#uses=1] + %5 = load i8* %4, align 1 ; [#uses=1] + store i8 %5, i8* %mask, align 1 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.lua_State* %6, i32 0, i32 8 ; [#uses=1] + %8 = load i32** %7, align 4 ; [#uses=1] + store i32* %8, i32** %oldpc, align 4 + %9 = load i32** %2, align 4 ; [#uses=1] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.lua_State* %10, i32 0, i32 8 ; [#uses=1] + store i32* %9, i32** %11, align 4 + %12 = load i8* %mask, align 1 ; [#uses=1] + %13 = zext i8 %12 to i32 ; [#uses=1] + %14 = and i32 %13, 8 ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %28 + +; <label>:16 ; preds = %0 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.lua_State* %17, i32 0, i32 20 ; [#uses=1] + %19 = load i32* %18, align 4 ; [#uses=1] + %20 = icmp eq i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %28 + +; <label>:21 ; preds = %16 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.lua_State* %22, i32 0, i32 19 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_State* %25, i32 0, i32 20 ; [#uses=1] + store i32 %24, i32* %26, align 4 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %27, i32 3, i32 -1) + br label %28 + +; <label>:28 ; preds = %21, %16, %0 + %29 = load i8* %mask, align 1 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + %31 = and i32 %30, 4 ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %107 + +; <label>:33 ; preds = %28 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_State* %34, i32 0, i32 7 ; [#uses=1] + %36 = load %struct.CallInfo** %35, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.CallInfo* %36, i32 0, i32 1 ; [#uses=1] + %38 = load %struct.lua_TValue** %37, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %union.anon* %39, i32 0, i32 0 ; [#uses=1] + %41 = bitcast double* %40 to %union.GCObject** ; [#uses=1] + %42 = load %union.GCObject** %41, align 4 ; [#uses=1] + %43 = getelementptr inbounds %union.GCObject* %42, i32 0, i32 0 ; [#uses=1] + %44 = bitcast %struct.lua_State* %43 to %union.Closure* ; [#uses=1] + %45 = getelementptr inbounds %union.Closure* %44, i32 0, i32 0 ; [#uses=1] + %46 = bitcast %struct.CClosure* %45 to %struct.LClosure* ; [#uses=1] + %47 = getelementptr inbounds %struct.LClosure* %46, i32 0, i32 7 ; [#uses=1] + %48 = load %struct.Proto** %47, align 4 ; [#uses=1] + store %struct.Proto* %48, %struct.Proto** %p, align 4 + %49 = load i32** %2, align 4 ; [#uses=1] + %50 = load %struct.Proto** %p, align 4 ; [#uses=1] + %51 = getelementptr inbounds %struct.Proto* %50, i32 0, i32 4 ; [#uses=1] + %52 = load i32** %51, align 4 ; [#uses=1] + %53 = ptrtoint i32* %49 to i32 ; [#uses=1] + %54 = ptrtoint i32* %52 to i32 ; [#uses=1] + %55 = sub i32 %53, %54 ; [#uses=1] + %56 = sdiv exact i32 %55, 4 ; [#uses=1] + %57 = sub nsw i32 %56, 1 ; [#uses=1] + store i32 %57, i32* %npc, align 4 + %58 = load %struct.Proto** %p, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.Proto* %58, i32 0, i32 6 ; [#uses=1] + %60 = load i32** %59, align 4 ; [#uses=1] + %61 = icmp ne i32* %60, null ; [#uses=1] + br i1 %61, label %62, label %69 + +; <label>:62 ; preds = %33 + %63 = load i32* %npc, align 4 ; [#uses=1] + %64 = load %struct.Proto** %p, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.Proto* %64, i32 0, i32 6 ; [#uses=1] + %66 = load i32** %65, align 4 ; [#uses=1] + %67 = getelementptr inbounds i32* %66, i32 %63 ; [#uses=1] + %68 = load i32* %67 ; [#uses=1] + br label %70 + +; <label>:69 ; preds = %33 + br label %70 + +; <label>:70 ; preds = %69, %62 + %71 = phi i32 [ %68, %62 ], [ 0, %69 ] ; [#uses=1] + store i32 %71, i32* %newline, align 4 + %72 = load i32* %npc, align 4 ; [#uses=1] + %73 = icmp eq i32 %72, 0 ; [#uses=1] + br i1 %73, label %103, label %74 + +; <label>:74 ; preds = %70 + %75 = load i32** %2, align 4 ; [#uses=1] + %76 = load i32** %oldpc, align 4 ; [#uses=1] + %77 = icmp ule i32* %75, %76 ; [#uses=1] + br i1 %77, label %103, label %78 + +; <label>:78 ; preds = %74 + %79 = load i32* %newline, align 4 ; [#uses=1] + %80 = load %struct.Proto** %p, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.Proto* %80, i32 0, i32 6 ; [#uses=1] + %82 = load i32** %81, align 4 ; [#uses=1] + %83 = icmp ne i32* %82, null ; [#uses=1] + br i1 %83, label %84, label %99 + +; <label>:84 ; preds = %78 + %85 = load i32** %oldpc, align 4 ; [#uses=1] + %86 = load %struct.Proto** %p, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.Proto* %86, i32 0, i32 4 ; [#uses=1] + %88 = load i32** %87, align 4 ; [#uses=1] + %89 = ptrtoint i32* %85 to i32 ; [#uses=1] + %90 = ptrtoint i32* %88 to i32 ; [#uses=1] + %91 = sub i32 %89, %90 ; [#uses=1] + %92 = sdiv exact i32 %91, 4 ; [#uses=1] + %93 = sub nsw i32 %92, 1 ; [#uses=1] + %94 = load %struct.Proto** %p, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.Proto* %94, i32 0, i32 6 ; [#uses=1] + %96 = load i32** %95, align 4 ; [#uses=1] + %97 = getelementptr inbounds i32* %96, i32 %93 ; [#uses=1] + %98 = load i32* %97 ; [#uses=1] + br label %100 + +; <label>:99 ; preds = %78 + br label %100 + +; <label>:100 ; preds = %99, %84 + %101 = phi i32 [ %98, %84 ], [ 0, %99 ] ; [#uses=1] + %102 = icmp ne i32 %79, %101 ; [#uses=1] + br i1 %102, label %103, label %106 + +; <label>:103 ; preds = %100, %74, %70 + %104 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %105 = load i32* %newline, align 4 ; [#uses=1] + call void @_Z13luaD_callhookP9lua_Stateii(%struct.lua_State* %104, i32 2, i32 %105) + br label %106 + +; <label>:106 ; preds = %103, %100 + br label %107 + +; <label>:107 ; preds = %106, %28 + ret void +} + +; [#uses=7] +define internal void @_Z5ArithP9lua_StateP10lua_TValuePKS1_S4_3TMS(%struct.lua_State* %L, %struct.lua_TValue* %ra, %struct.lua_TValue* %rb, %struct.lua_TValue* %rc, i32 %op) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_TValue*, align 4 ; [#uses=9] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=4] + %5 = alloca i32, align 4 ; [#uses=3] + %tempb = alloca %struct.lua_TValue, align 4 ; [#uses=1] + %tempc = alloca %struct.lua_TValue, align 4 ; [#uses=1] + %b = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %c = alloca %struct.lua_TValue*, align 4 ; [#uses=2] + %nb = alloca double, align 8 ; [#uses=9] + %nc = alloca double, align 8 ; [#uses=8] + %i_o = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o1 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o2 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o3 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o4 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o5 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + %i_o6 = alloca %struct.lua_TValue*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_TValue* %ra, %struct.lua_TValue** %2, align 4 + store %struct.lua_TValue* %rb, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %rc, %struct.lua_TValue** %4, align 4 + store i32 %op, i32* %5, align 4 + %6 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %7 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %6, %struct.lua_TValue* %tempb) ; [#uses=2] + store %struct.lua_TValue* %7, %struct.lua_TValue** %b, align 4 + %8 = icmp ne %struct.lua_TValue* %7, null ; [#uses=1] + br i1 %8, label %9, label %99 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %11 = call %struct.lua_TValue* @_Z13luaV_tonumberPK10lua_TValuePS_(%struct.lua_TValue* %10, %struct.lua_TValue* %tempc) ; [#uses=2] + store %struct.lua_TValue* %11, %struct.lua_TValue** %c, align 4 + %12 = icmp ne %struct.lua_TValue* %11, null ; [#uses=1] + br i1 %12, label %13, label %99 + +; <label>:13 ; preds = %9 + %14 = load %struct.lua_TValue** %b, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_TValue* %14, i32 0, i32 0 ; [#uses=1] + %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] + %17 = load double* %16, align 4 ; [#uses=1] + store double %17, double* %nb, align 8 + %18 = load %struct.lua_TValue** %c, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 0 ; [#uses=1] + %20 = getelementptr inbounds %union.anon* %19, i32 0, i32 0 ; [#uses=1] + %21 = load double* %20, align 4 ; [#uses=1] + store double %21, double* %nc, align 8 + %22 = load i32* %5, align 4 ; [#uses=1] + switch i32 %22, label %97 [ + i32 5, label %23 + i32 6, label %33 + i32 7, label %43 + i32 8, label %53 + i32 9, label %63 + i32 10, label %78 + i32 11, label %88 + ] + +; <label>:23 ; preds = %13 + %24 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %24, %struct.lua_TValue** %i_o, align 4 + %25 = load double* %nb, align 8 ; [#uses=1] + %26 = load double* %nc, align 8 ; [#uses=1] + %27 = fadd double %25, %26 ; [#uses=1] + %28 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.lua_TValue* %28, i32 0, i32 0 ; [#uses=1] + %30 = getelementptr inbounds %union.anon* %29, i32 0, i32 0 ; [#uses=1] + store double %27, double* %30, align 4 + %31 = load %struct.lua_TValue** %i_o, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.lua_TValue* %31, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %32, align 4 + br label %98 + +; <label>:33 ; preds = %13 + %34 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %34, %struct.lua_TValue** %i_o1, align 4 + %35 = load double* %nb, align 8 ; [#uses=1] + %36 = load double* %nc, align 8 ; [#uses=1] + %37 = fsub double %35, %36 ; [#uses=1] + %38 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.lua_TValue* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds %union.anon* %39, i32 0, i32 0 ; [#uses=1] + store double %37, double* %40, align 4 + %41 = load %struct.lua_TValue** %i_o1, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.lua_TValue* %41, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %42, align 4 + br label %98 + +; <label>:43 ; preds = %13 + %44 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %44, %struct.lua_TValue** %i_o2, align 4 + %45 = load double* %nb, align 8 ; [#uses=1] + %46 = load double* %nc, align 8 ; [#uses=1] + %47 = fmul double %45, %46 ; [#uses=1] + %48 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.lua_TValue* %48, i32 0, i32 0 ; [#uses=1] + %50 = getelementptr inbounds %union.anon* %49, i32 0, i32 0 ; [#uses=1] + store double %47, double* %50, align 4 + %51 = load %struct.lua_TValue** %i_o2, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.lua_TValue* %51, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %52, align 4 + br label %98 + +; <label>:53 ; preds = %13 + %54 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %54, %struct.lua_TValue** %i_o3, align 4 + %55 = load double* %nb, align 8 ; [#uses=1] + %56 = load double* %nc, align 8 ; [#uses=1] + %57 = fdiv double %55, %56 ; [#uses=1] + %58 = load %struct.lua_TValue** %i_o3, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.lua_TValue* %58, i32 0, i32 0 ; [#uses=1] + %60 = getelementptr inbounds %union.anon* %59, i32 0, i32 0 ; [#uses=1] + store double %57, double* %60, align 4 + %61 = load %struct.lua_TValue** %i_o3, align 4 ; [#uses=1] + %62 = getelementptr inbounds %struct.lua_TValue* %61, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %62, align 4 + br label %98 + +; <label>:63 ; preds = %13 + %64 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %64, %struct.lua_TValue** %i_o4, align 4 + %65 = load double* %nb, align 8 ; [#uses=1] + %66 = load double* %nb, align 8 ; [#uses=1] + %67 = load double* %nc, align 8 ; [#uses=1] + %68 = fdiv double %66, %67 ; [#uses=1] + %69 = call double @floor(double %68) nounwind readnone ; [#uses=1] + %70 = load double* %nc, align 8 ; [#uses=1] + %71 = fmul double %69, %70 ; [#uses=1] + %72 = fsub double %65, %71 ; [#uses=1] + %73 = load %struct.lua_TValue** %i_o4, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_TValue* %73, i32 0, i32 0 ; [#uses=1] + %75 = getelementptr inbounds %union.anon* %74, i32 0, i32 0 ; [#uses=1] + store double %72, double* %75, align 4 + %76 = load %struct.lua_TValue** %i_o4, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_TValue* %76, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %77, align 4 + br label %98 + +; <label>:78 ; preds = %13 + %79 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %79, %struct.lua_TValue** %i_o5, align 4 + %80 = load double* %nb, align 8 ; [#uses=1] + %81 = load double* %nc, align 8 ; [#uses=1] + %82 = call double @llvm.pow.f64(double %80, double %81) ; [#uses=1] + %83 = load %struct.lua_TValue** %i_o5, align 4 ; [#uses=1] + %84 = getelementptr inbounds %struct.lua_TValue* %83, i32 0, i32 0 ; [#uses=1] + %85 = getelementptr inbounds %union.anon* %84, i32 0, i32 0 ; [#uses=1] + store double %82, double* %85, align 4 + %86 = load %struct.lua_TValue** %i_o5, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_TValue* %86, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %87, align 4 + br label %98 + +; <label>:88 ; preds = %13 + %89 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + store %struct.lua_TValue* %89, %struct.lua_TValue** %i_o6, align 4 + %90 = load double* %nb, align 8 ; [#uses=1] + %91 = fsub double -0.000000e+00, %90 ; [#uses=1] + %92 = load %struct.lua_TValue** %i_o6, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_TValue* %92, i32 0, i32 0 ; [#uses=1] + %94 = getelementptr inbounds %union.anon* %93, i32 0, i32 0 ; [#uses=1] + store double %91, double* %94, align 4 + %95 = load %struct.lua_TValue** %i_o6, align 4 ; [#uses=1] + %96 = getelementptr inbounds %struct.lua_TValue* %95, i32 0, i32 1 ; [#uses=1] + store i32 3, i32* %96, align 4 + br label %98 + +; <label>:97 ; preds = %13 + br label %98 + +; <label>:98 ; preds = %97, %88, %78, %63, %53, %43, %33, %23 + br label %112 + +; <label>:99 ; preds = %9, %0 + %100 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %101 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %102 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %103 = load %struct.lua_TValue** %2, align 4 ; [#uses=1] + %104 = load i32* %5, align 4 ; [#uses=1] + %105 = call i32 @_Z10call_binTMP9lua_StatePK10lua_TValueS3_PS1_3TMS(%struct.lua_State* %100, %struct.lua_TValue* %101, %struct.lua_TValue* %102, %struct.lua_TValue* %103, i32 %104) ; [#uses=1] + %106 = icmp ne i32 %105, 0 ; [#uses=1] + br i1 %106, label %111, label %107 + +; <label>:107 ; preds = %99 + %108 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %109 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %110 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + call void @_Z15luaG_aritherrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %108, %struct.lua_TValue* %109, %struct.lua_TValue* %110) + br label %111 + +; <label>:111 ; preds = %107, %99 + br label %112 + +; <label>:112 ; preds = %111, %98 + ret void +} + +; [#uses=1] +define internal i32 @_Z9lessequalP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %L, %struct.lua_TValue* %l, %struct.lua_TValue* %r) { + %1 = alloca i32, align 4 ; [#uses=7] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca %struct.lua_TValue*, align 4 ; [#uses=10] + %4 = alloca %struct.lua_TValue*, align 4 ; [#uses=8] + %res = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_TValue* %l, %struct.lua_TValue** %3, align 4 + store %struct.lua_TValue* %r, %struct.lua_TValue** %4, align 4 + %5 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.lua_TValue* %5, i32 0, i32 1 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.lua_TValue* %8, i32 0, i32 1 ; [#uses=1] + %10 = load i32* %9, align 4 ; [#uses=1] + %11 = icmp ne i32 %7, %10 ; [#uses=1] + br i1 %11, label %12, label %17 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %15 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %16 = call i32 @_Z15luaG_ordererrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %13, %struct.lua_TValue* %14, %struct.lua_TValue* %15) ; [#uses=1] + store i32 %16, i32* %1 + br label %84 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.lua_TValue* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, 3 ; [#uses=1] + br i1 %21, label %22, label %33 + +; <label>:22 ; preds = %17 + %23 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.lua_TValue* %23, i32 0, i32 0 ; [#uses=1] + %25 = getelementptr inbounds %union.anon* %24, i32 0, i32 0 ; [#uses=1] + %26 = load double* %25, align 4 ; [#uses=1] + %27 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %28 = getelementptr inbounds %struct.lua_TValue* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds %union.anon* %28, i32 0, i32 0 ; [#uses=1] + %30 = load double* %29, align 4 ; [#uses=1] + %31 = fcmp ole double %26, %30 ; [#uses=1] + %32 = zext i1 %31 to i32 ; [#uses=1] + store i32 %32, i32* %1 + br label %84 + +; <label>:33 ; preds = %17 + %34 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.lua_TValue* %34, i32 0, i32 1 ; [#uses=1] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 4 ; [#uses=1] + br i1 %37, label %38, label %56 + +; <label>:38 ; preds = %33 + %39 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.lua_TValue* %39, i32 0, i32 0 ; [#uses=1] + %41 = getelementptr inbounds %union.anon* %40, i32 0, i32 0 ; [#uses=1] + %42 = bitcast double* %41 to %union.GCObject** ; [#uses=1] + %43 = load %union.GCObject** %42, align 4 ; [#uses=1] + %44 = getelementptr inbounds %union.GCObject* %43, i32 0, i32 0 ; [#uses=1] + %45 = bitcast %struct.lua_State* %44 to %union.TString* ; [#uses=1] + %46 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.lua_TValue* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds %union.anon* %47, i32 0, i32 0 ; [#uses=1] + %49 = bitcast double* %48 to %union.GCObject** ; [#uses=1] + %50 = load %union.GCObject** %49, align 4 ; [#uses=1] + %51 = getelementptr inbounds %union.GCObject* %50, i32 0, i32 0 ; [#uses=1] + %52 = bitcast %struct.lua_State* %51 to %union.TString* ; [#uses=1] + %53 = call i32 @_Z8l_strcmpPK7TStringS1_(%union.TString* %45, %union.TString* %52) ; [#uses=1] + %54 = icmp sle i32 %53, 0 ; [#uses=1] + %55 = zext i1 %54 to i32 ; [#uses=1] + store i32 %55, i32* %1 + br label %84 + +; <label>:56 ; preds = %33 + %57 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %58 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %59 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %60 = call i32 @_Z12call_orderTMP9lua_StatePK10lua_TValueS3_3TMS(%struct.lua_State* %57, %struct.lua_TValue* %58, %struct.lua_TValue* %59, i32 14) ; [#uses=2] + store i32 %60, i32* %res, align 4 + %61 = icmp ne i32 %60, -1 ; [#uses=1] + br i1 %61, label %62, label %64 + +; <label>:62 ; preds = %56 + %63 = load i32* %res, align 4 ; [#uses=1] + store i32 %63, i32* %1 + br label %84 + +; <label>:64 ; preds = %56 + %65 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %66 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %67 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %68 = call i32 @_Z12call_orderTMP9lua_StatePK10lua_TValueS3_3TMS(%struct.lua_State* %65, %struct.lua_TValue* %66, %struct.lua_TValue* %67, i32 13) ; [#uses=2] + store i32 %68, i32* %res, align 4 + %69 = icmp ne i32 %68, -1 ; [#uses=1] + br i1 %69, label %70, label %75 + +; <label>:70 ; preds = %64 + %71 = load i32* %res, align 4 ; [#uses=1] + %72 = icmp ne i32 %71, 0 ; [#uses=1] + %73 = xor i1 %72, true ; [#uses=1] + %74 = zext i1 %73 to i32 ; [#uses=1] + store i32 %74, i32* %1 + br label %84 + +; <label>:75 ; preds = %64 + br label %76 + +; <label>:76 ; preds = %75 + br label %77 + +; <label>:77 ; preds = %76 + br label %78 + +; <label>:78 ; preds = %77 + br label %79 + +; <label>:79 ; preds = %78 + %80 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %81 = load %struct.lua_TValue** %3, align 4 ; [#uses=1] + %82 = load %struct.lua_TValue** %4, align 4 ; [#uses=1] + %83 = call i32 @_Z15luaG_ordererrorP9lua_StatePK10lua_TValueS3_(%struct.lua_State* %80, %struct.lua_TValue* %81, %struct.lua_TValue* %82) ; [#uses=1] + store i32 %83, i32* %1 + br label %84 + +; <label>:84 ; preds = %79, %70, %62, %38, %22, %12 + %85 = load i32* %1 ; [#uses=1] + ret i32 %85 +} + +; [#uses=1] +declare i32 @strcoll(i8*, i8*) nounwind readonly + +; [#uses=36] +define hidden i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %z) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.Zio*, align 4 ; [#uses=7] + %size = alloca i32, align 4 ; [#uses=3] + %L = alloca %struct.lua_State*, align 4 ; [#uses=2] + %buff = alloca i8*, align 4 ; [#uses=3] + store %struct.Zio* %z, %struct.Zio** %2, align 4 + %3 = load %struct.Zio** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Zio* %3, i32 0, i32 4 ; [#uses=1] + %5 = load %struct.lua_State** %4, align 4 ; [#uses=1] + store %struct.lua_State* %5, %struct.lua_State** %L, align 4 + %6 = load %struct.Zio** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Zio* %6, i32 0, i32 2 ; [#uses=1] + %8 = load i8* (%struct.lua_State*, i8*, i32*)** %7, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %10 = load %struct.Zio** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.Zio* %10, i32 0, i32 3 ; [#uses=1] + %12 = load i8** %11, align 4 ; [#uses=1] + %13 = call i8* %8(%struct.lua_State* %9, i8* %12, i32* %size) ; [#uses=1] + store i8* %13, i8** %buff, align 4 + %14 = load i8** %buff, align 4 ; [#uses=1] + %15 = icmp eq i8* %14, null ; [#uses=1] + br i1 %15, label %19, label %16 + +; <label>:16 ; preds = %0 + %17 = load i32* %size, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %20 + +; <label>:19 ; preds = %16, %0 + store i32 -1, i32* %1 + br label %34 + +; <label>:20 ; preds = %16 + %21 = load i32* %size, align 4 ; [#uses=1] + %22 = sub i32 %21, 1 ; [#uses=1] + %23 = load %struct.Zio** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Zio* %23, i32 0, i32 0 ; [#uses=1] + store i32 %22, i32* %24, align 4 + %25 = load i8** %buff, align 4 ; [#uses=1] + %26 = load %struct.Zio** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.Zio* %26, i32 0, i32 1 ; [#uses=1] + store i8* %25, i8** %27, align 4 + %28 = load %struct.Zio** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.Zio* %28, i32 0, i32 1 ; [#uses=2] + %30 = load i8** %29, align 4 ; [#uses=2] + %31 = getelementptr inbounds i8* %30, i32 1 ; [#uses=1] + store i8* %31, i8** %29, align 4 + %32 = load i8* %30 ; [#uses=1] + %33 = zext i8 %32 to i32 ; [#uses=1] + store i32 %33, i32* %1 + br label %34 + +; <label>:34 ; preds = %20, %19 + %35 = load i32* %1 ; [#uses=1] + ret i32 %35 +} + +; [#uses=2] +define hidden i32 @_Z14luaZ_lookaheadP3Zio(%struct.Zio* %z) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.Zio*, align 4 ; [#uses=6] + store %struct.Zio* %z, %struct.Zio** %2, align 4 + %3 = load %struct.Zio** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.Zio* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %22 + +; <label>:7 ; preds = %0 + %8 = load %struct.Zio** %2, align 4 ; [#uses=1] + %9 = call i32 @_Z9luaZ_fillP3Zio(%struct.Zio* %8) ; [#uses=1] + %10 = icmp eq i32 %9, -1 ; [#uses=1] + br i1 %10, label %11, label %12 + +; <label>:11 ; preds = %7 + store i32 -1, i32* %1 + br label %28 + +; <label>:12 ; preds = %7 + %13 = load %struct.Zio** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.Zio* %13, i32 0, i32 0 ; [#uses=2] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = add i32 %15, 1 ; [#uses=1] + store i32 %16, i32* %14, align 4 + %17 = load %struct.Zio** %2, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.Zio* %17, i32 0, i32 1 ; [#uses=2] + %19 = load i8** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8* %19, i32 -1 ; [#uses=1] + store i8* %20, i8** %18, align 4 + br label %21 + +; <label>:21 ; preds = %12 + br label %22 + +; <label>:22 ; preds = %21, %0 + %23 = load %struct.Zio** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Zio* %23, i32 0, i32 1 ; [#uses=1] + %25 = load i8** %24, align 4 ; [#uses=1] + %26 = load i8* %25 ; [#uses=1] + %27 = zext i8 %26 to i32 ; [#uses=1] + store i32 %27, i32* %1 + br label %28 + +; <label>:28 ; preds = %22, %11 + %29 = load i32* %1 ; [#uses=1] + ret i32 %29 +} + +; [#uses=1] +define hidden void @_Z9luaZ_initP9lua_StateP3ZioPFPKcS0_PvPjES5_(%struct.lua_State* %L, %struct.Zio* %z, i8* (%struct.lua_State*, i8*, i32*)* %reader, i8* %data) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.Zio*, align 4 ; [#uses=6] + %3 = alloca i8* (%struct.lua_State*, i8*, i32*)*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Zio* %z, %struct.Zio** %2, align 4 + store i8* (%struct.lua_State*, i8*, i32*)* %reader, i8* (%struct.lua_State*, i8*, i32*)** %3, align 4 + store i8* %data, i8** %4, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.Zio** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.Zio* %6, i32 0, i32 4 ; [#uses=1] + store %struct.lua_State* %5, %struct.lua_State** %7, align 4 + %8 = load i8* (%struct.lua_State*, i8*, i32*)** %3, align 4 ; [#uses=1] + %9 = load %struct.Zio** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.Zio* %9, i32 0, i32 2 ; [#uses=1] + store i8* (%struct.lua_State*, i8*, i32*)* %8, i8* (%struct.lua_State*, i8*, i32*)** %10, align 4 + %11 = load i8** %4, align 4 ; [#uses=1] + %12 = load %struct.Zio** %2, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.Zio* %12, i32 0, i32 3 ; [#uses=1] + store i8* %11, i8** %13, align 4 + %14 = load %struct.Zio** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.Zio* %14, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %15, align 4 + %16 = load %struct.Zio** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Zio* %16, i32 0, i32 1 ; [#uses=1] + store i8* null, i8** %17, align 4 + ret void +} + +; [#uses=1] +define hidden i32 @_Z9luaZ_readP3ZioPvj(%struct.Zio* %z, i8* %b, i32 %n) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.Zio*, align 4 ; [#uses=7] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i32, align 4 ; [#uses=7] + %m = alloca i32, align 4 ; [#uses=6] + store %struct.Zio* %z, %struct.Zio** %2, align 4 + store i8* %b, i8** %3, align 4 + store i32 %n, i32* %4, align 4 + br label %5 + +; <label>:5 ; preds = %26, %0 + %6 = load i32* %4, align 4 ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %49 + +; <label>:8 ; preds = %5 + %9 = load %struct.Zio** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z14luaZ_lookaheadP3Zio(%struct.Zio* %9) ; [#uses=1] + %11 = icmp eq i32 %10, -1 ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %8 + %13 = load i32* %4, align 4 ; [#uses=1] + store i32 %13, i32* %1 + br label %50 + +; <label>:14 ; preds = %8 + %15 = load i32* %4, align 4 ; [#uses=1] + %16 = load %struct.Zio** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.Zio* %16, i32 0, i32 0 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = icmp ule i32 %15, %18 ; [#uses=1] + br i1 %19, label %20, label %22 + +; <label>:20 ; preds = %14 + %21 = load i32* %4, align 4 ; [#uses=1] + br label %26 + +; <label>:22 ; preds = %14 + %23 = load %struct.Zio** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.Zio* %23, i32 0, i32 0 ; [#uses=1] + %25 = load i32* %24, align 4 ; [#uses=1] + br label %26 + +; <label>:26 ; preds = %22, %20 + %27 = phi i32 [ %21, %20 ], [ %25, %22 ] ; [#uses=1] + store i32 %27, i32* %m, align 4 + %28 = load i8** %3, align 4 ; [#uses=1] + %29 = load %struct.Zio** %2, align 4 ; [#uses=1] + %30 = getelementptr inbounds %struct.Zio* %29, i32 0, i32 1 ; [#uses=1] + %31 = load i8** %30, align 4 ; [#uses=1] + %32 = load i32* %m, align 4 ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %28, i8* %31, i32 %32, i32 1, i1 false) + %33 = load i32* %m, align 4 ; [#uses=1] + %34 = load %struct.Zio** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Zio* %34, i32 0, i32 0 ; [#uses=2] + %36 = load i32* %35, align 4 ; [#uses=1] + %37 = sub i32 %36, %33 ; [#uses=1] + store i32 %37, i32* %35, align 4 + %38 = load i32* %m, align 4 ; [#uses=1] + %39 = load %struct.Zio** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.Zio* %39, i32 0, i32 1 ; [#uses=2] + %41 = load i8** %40, align 4 ; [#uses=1] + %42 = getelementptr inbounds i8* %41, i32 %38 ; [#uses=1] + store i8* %42, i8** %40, align 4 + %43 = load i8** %3, align 4 ; [#uses=1] + %44 = load i32* %m, align 4 ; [#uses=1] + %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] + store i8* %45, i8** %3, align 4 + %46 = load i32* %m, align 4 ; [#uses=1] + %47 = load i32* %4, align 4 ; [#uses=1] + %48 = sub i32 %47, %46 ; [#uses=1] + store i32 %48, i32* %4, align 4 + br label %5 + +; <label>:49 ; preds = %5 + store i32 0, i32* %1 + br label %50 + +; <label>:50 ; preds = %49, %12 + %51 = load i32* %1 ; [#uses=1] + ret i32 %51 +} + +; [#uses=2] +define hidden i8* @_Z14luaZ_openspaceP9lua_StateP7Mbufferj(%struct.lua_State* %L, %struct.Mbuffer* %buff, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.Mbuffer*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.Mbuffer* %buff, %struct.Mbuffer** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.Mbuffer* %5, i32 0, i32 2 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + %8 = icmp ugt i32 %4, %7 ; [#uses=1] + br i1 %8, label %9, label %39 + +; <label>:9 ; preds = %0 + %10 = load i32* %3, align 4 ; [#uses=1] + %11 = icmp ult i32 %10, 32 ; [#uses=1] + br i1 %11, label %12, label %13 + +; <label>:12 ; preds = %9 + store i32 32, i32* %3, align 4 + br label %13 + +; <label>:13 ; preds = %12, %9 + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = add i32 %14, 1 ; [#uses=1] + %16 = icmp ule i32 %15, -3 ; [#uses=1] + br i1 %16, label %17, label %29 + +; <label>:17 ; preds = %13 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.Mbuffer* %19, i32 0, i32 0 ; [#uses=1] + %21 = load i8** %20, align 4 ; [#uses=1] + %22 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %23 = getelementptr inbounds %struct.Mbuffer* %22, i32 0, i32 2 ; [#uses=1] + %24 = load i32* %23, align 4 ; [#uses=1] + %25 = mul i32 %24, 1 ; [#uses=1] + %26 = load i32* %3, align 4 ; [#uses=1] + %27 = mul i32 %26, 1 ; [#uses=1] + %28 = call i8* @_Z13luaM_realloc_P9lua_StatePvjj(%struct.lua_State* %18, i8* %21, i32 %25, i32 %27) ; [#uses=1] + br label %32 + +; <label>:29 ; preds = %13 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = call i8* @_Z11luaM_toobigP9lua_State(%struct.lua_State* %30) ; [#uses=1] + br label %32 + +; <label>:32 ; preds = %29, %17 + %33 = phi i8* [ %28, %17 ], [ %31, %29 ] ; [#uses=1] + %34 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.Mbuffer* %34, i32 0, i32 0 ; [#uses=1] + store i8* %33, i8** %35, align 4 + %36 = load i32* %3, align 4 ; [#uses=1] + %37 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.Mbuffer* %37, i32 0, i32 2 ; [#uses=1] + store i32 %36, i32* %38, align 4 + br label %39 + +; <label>:39 ; preds = %32, %0 + %40 = load %struct.Mbuffer** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.Mbuffer* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i8** %41, align 4 ; [#uses=1] + ret i8* %42 +} + +; [#uses=24] +define i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %L, i32 %narg, i8* %extramsg) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %3 = alloca i32, align 4 ; [#uses=6] + %4 = alloca i8*, align 4 ; [#uses=4] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %narg, i32* %3, align 4 + store i8* %extramsg, i8** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %5, i32 0, %struct.lua_Debug* %ar) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %13, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = load i32* %3, align 4 ; [#uses=1] + %11 = load i8** %4, align 4 ; [#uses=1] + %12 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %9, i8* getelementptr inbounds ([22 x i8]* @.str242, i32 0, i32 0), i32 %10, i8* %11) ; [#uses=1] + store i32 %12, i32* %1 + br label %45 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %14, i8* getelementptr inbounds ([2 x i8]* @.str124358, i32 0, i32 0), %struct.lua_Debug* %ar) ; [#uses=0] + %16 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 2 ; [#uses=1] + %17 = load i8** %16, align 4 ; [#uses=1] + %18 = call i32 @strcmp(i8* %17, i8* getelementptr inbounds ([7 x i8]* @.str2244, i32 0, i32 0)) nounwind readonly ; [#uses=1] + %19 = icmp eq i32 %18, 0 ; [#uses=1] + br i1 %19, label %20, label %32 + +; <label>:20 ; preds = %13 + %21 = load i32* %3, align 4 ; [#uses=1] + %22 = add nsw i32 %21, -1 ; [#uses=1] + store i32 %22, i32* %3, align 4 + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = icmp eq i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %31 + +; <label>:25 ; preds = %20 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + %28 = load i8** %27, align 4 ; [#uses=1] + %29 = load i8** %4, align 4 ; [#uses=1] + %30 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %26, i8* getelementptr inbounds ([30 x i8]* @.str3245, i32 0, i32 0), i8* %28, i8* %29) ; [#uses=1] + store i32 %30, i32* %1 + br label %45 + +; <label>:31 ; preds = %20 + br label %32 + +; <label>:32 ; preds = %31, %13 + %33 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + %34 = load i8** %33, align 4 ; [#uses=1] + %35 = icmp eq i8* %34, null ; [#uses=1] + br i1 %35, label %36, label %38 + +; <label>:36 ; preds = %32 + %37 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + store i8* getelementptr inbounds ([2 x i8]* @.str4246, i32 0, i32 0), i8** %37, align 4 + br label %38 + +; <label>:38 ; preds = %36, %32 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = load i32* %3, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + %42 = load i8** %41, align 4 ; [#uses=1] + %43 = load i8** %4, align 4 ; [#uses=1] + %44 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %39, i8* getelementptr inbounds ([30 x i8]* @.str5247, i32 0, i32 0), i32 %40, i8* %42, i8* %43) ; [#uses=1] + store i32 %44, i32* %1 + br label %45 + +; <label>:45 ; preds = %38, %25, %8 + %46 = load i32* %1 ; [#uses=1] + ret i32 %46 +} + +; [#uses=53] +define i32 @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %L, i8* %fmt, ...) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=2] + %argp = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fmt, i8** %2, align 4 + %3 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_start(i8* %3) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaL_whereP9lua_Statei(%struct.lua_State* %4, i32 1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = load i8** %argp, align 4 ; [#uses=1] + %8 = call i8* @_Z16lua_pushvfstringP9lua_StatePKcPc(%struct.lua_State* %5, i8* %6, i8* %7) ; [#uses=0] + %9 = bitcast i8** %argp to i8* ; [#uses=1] + call void @llvm.va_end(i8* %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %10, i32 2) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z9lua_errorP9lua_State(%struct.lua_State* %11) ; [#uses=1] + ret i32 %12 +} + +; [#uses=2] +define i32 @_Z13luaL_typerrorP9lua_StateiPKc(%struct.lua_State* %L, i32 %narg, i8* %tname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %msg = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i8* %tname, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %2, align 4 ; [#uses=1] + %9 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %7, i32 %8) ; [#uses=1] + %10 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %6, i32 %9) ; [#uses=1] + %11 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %4, i8* getelementptr inbounds ([20 x i8]* @.str6248, i32 0, i32 0), i8* %5, i8* %10) ; [#uses=1] + store i8* %11, i8** %msg, align 4 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = load i8** %msg, align 4 ; [#uses=1] + %15 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %12, i32 %13, i8* %14) ; [#uses=1] + ret i32 %15 +} + +; [#uses=3] +define void @_Z10luaL_whereP9lua_Statei(%struct.lua_State* %L, i32 %level) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=2] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %level, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %3, i32 %4, %struct.lua_Debug* %ar) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %21 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %8, i8* getelementptr inbounds ([3 x i8]* @.str7249, i32 0, i32 0), %struct.lua_Debug* %ar) ; [#uses=0] + %10 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + %11 = load i32* %10, align 4 ; [#uses=1] + %12 = icmp sgt i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %20 + +; <label>:13 ; preds = %7 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 9 ; [#uses=1] + %16 = getelementptr inbounds [60 x i8]* %15, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + %18 = load i32* %17, align 4 ; [#uses=1] + %19 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %14, i8* getelementptr inbounds ([8 x i8]* @.str8250, i32 0, i32 0), i8* %16, i32 %18) ; [#uses=0] + br label %23 + +; <label>:20 ; preds = %7 + br label %21 + +; <label>:21 ; preds = %20, %0 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %22, i8* getelementptr inbounds ([1 x i8]* @.str9251, i32 0, i32 0), i32 0) + br label %23 + +; <label>:23 ; preds = %21, %13 + ret void +} + +; [#uses=4] +define i32 @_Z16luaL_checkoptionP9lua_StateiPKcPKS2_(%struct.lua_State* %L, i32 %narg, i8* %def, i8** %lst) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=4] + %4 = alloca i8*, align 4 ; [#uses=3] + %5 = alloca i8**, align 4 ; [#uses=3] + %name = alloca i8*, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %narg, i32* %3, align 4 + store i8* %def, i8** %4, align 4 + store i8** %lst, i8*** %5, align 4 + %6 = load i8** %4, align 4 ; [#uses=1] + %7 = icmp ne i8* %6, null ; [#uses=1] + br i1 %7, label %8, label %13 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = load i32* %3, align 4 ; [#uses=1] + %11 = load i8** %4, align 4 ; [#uses=1] + %12 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %9, i32 %10, i8* %11, i32* null) ; [#uses=1] + br label %17 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %14, i32 %15, i32* null) ; [#uses=1] + br label %17 + +; <label>:17 ; preds = %13, %8 + %18 = phi i8* [ %12, %8 ], [ %16, %13 ] ; [#uses=1] + store i8* %18, i8** %name, align 4 + store i32 0, i32* %i, align 4 + br label %19 + +; <label>:19 ; preds = %36, %17 + %20 = load i32* %i, align 4 ; [#uses=1] + %21 = load i8*** %5, align 4 ; [#uses=1] + %22 = getelementptr inbounds i8** %21, i32 %20 ; [#uses=1] + %23 = load i8** %22 ; [#uses=1] + %24 = icmp ne i8* %23, null ; [#uses=1] + br i1 %24, label %25, label %39 + +; <label>:25 ; preds = %19 + %26 = load i32* %i, align 4 ; [#uses=1] + %27 = load i8*** %5, align 4 ; [#uses=1] + %28 = getelementptr inbounds i8** %27, i32 %26 ; [#uses=1] + %29 = load i8** %28 ; [#uses=1] + %30 = load i8** %name, align 4 ; [#uses=1] + %31 = call i32 @strcmp(i8* %29, i8* %30) nounwind readonly ; [#uses=1] + %32 = icmp eq i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %35 + +; <label>:33 ; preds = %25 + %34 = load i32* %i, align 4 ; [#uses=1] + store i32 %34, i32* %1 + br label %46 + +; <label>:35 ; preds = %25 + br label %36 + +; <label>:36 ; preds = %35 + %37 = load i32* %i, align 4 ; [#uses=1] + %38 = add nsw i32 %37, 1 ; [#uses=1] + store i32 %38, i32* %i, align 4 + br label %19 + +; <label>:39 ; preds = %19 + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = load i32* %3, align 4 ; [#uses=1] + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %43 = load i8** %name, align 4 ; [#uses=1] + %44 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %42, i8* getelementptr inbounds ([20 x i8]* @.str10252, i32 0, i32 0), i8* %43) ; [#uses=1] + %45 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %40, i32 %41, i8* %44) ; [#uses=1] + store i32 %45, i32* %1 + br label %46 + +; <label>:46 ; preds = %39, %33 + %47 = load i32* %1 ; [#uses=1] + ret i32 %47 +} + +; [#uses=13] +define i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %L, i32 %narg, i8* %def, i32* %len) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i8*, align 4 ; [#uses=4] + %5 = alloca i32*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %narg, i32* %3, align 4 + store i8* %def, i8** %4, align 4 + store i32* %len, i32** %5, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 %7) ; [#uses=1] + %9 = icmp sle i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %25 + +; <label>:10 ; preds = %0 + %11 = load i32** %5, align 4 ; [#uses=1] + %12 = icmp ne i32* %11, null ; [#uses=1] + br i1 %12, label %13, label %23 + +; <label>:13 ; preds = %10 + %14 = load i8** %4, align 4 ; [#uses=1] + %15 = icmp ne i8* %14, null ; [#uses=1] + br i1 %15, label %16, label %19 + +; <label>:16 ; preds = %13 + %17 = load i8** %4, align 4 ; [#uses=1] + %18 = call i32 @strlen(i8* %17) ; [#uses=1] + br label %20 + +; <label>:19 ; preds = %13 + br label %20 + +; <label>:20 ; preds = %19, %16 + %21 = phi i32 [ %18, %16 ], [ 0, %19 ] ; [#uses=1] + %22 = load i32** %5, align 4 ; [#uses=1] + store i32 %21, i32* %22 + br label %23 + +; <label>:23 ; preds = %20, %10 + %24 = load i8** %4, align 4 ; [#uses=1] + store i8* %24, i8** %1 + br label %30 + +; <label>:25 ; preds = %0 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load i32* %3, align 4 ; [#uses=1] + %28 = load i32** %5, align 4 ; [#uses=1] + %29 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %26, i32 %27, i32* %28) ; [#uses=1] + store i8* %29, i8** %1 + br label %30 + +; <label>:30 ; preds = %25, %23 + %31 = load i8** %1 ; [#uses=1] + ret i8* %31 +} + +; [#uses=37] +define i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %L, i32 %narg, i32* %len) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32*, align 4 ; [#uses=2] + %s = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i32* %len, i32** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load i32** %3, align 4 ; [#uses=1] + %7 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %4, i32 %5, i32* %6) ; [#uses=1] + store i8* %7, i8** %s, align 4 + %8 = load i8** %s, align 4 ; [#uses=1] + %9 = icmp ne i8* %8, null ; [#uses=1] + br i1 %9, label %13, label %10 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %2, align 4 ; [#uses=1] + call void @_Z9tag_errorP9lua_Stateii(%struct.lua_State* %11, i32 %12, i32 4) + br label %13 + +; <label>:13 ; preds = %10, %0 + %14 = load i8** %s, align 4 ; [#uses=1] + ret i8* %14 +} + +; [#uses=2] +define i32 @_Z17luaL_newmetatableP9lua_StatePKc(%struct.lua_State* %L, i8* %tname) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %3 = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %tname, i8** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load i8** %3, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %4, i32 -10000, i8* %5) + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 -1) ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %10, label %9 + +; <label>:9 ; preds = %0 + store i32 0, i32* %1 + br label %16 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %11, i32 -2) + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %12, i32 0, i32 0) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %13, i32 -1) + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = load i8** %3, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %14, i32 -10000, i8* %15) + store i32 1, i32* %1 + br label %16 + +; <label>:16 ; preds = %10, %9 + %17 = load i32* %1 ; [#uses=1] + ret i32 %17 +} + +; [#uses=6] +define i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %L, i32 %ud, i8* %tname) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=4] + %4 = alloca i8*, align 4 ; [#uses=3] + %p = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %ud, i32* %3, align 4 + store i8* %tname, i8** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %5, i32 %6) ; [#uses=1] + store i8* %7, i8** %p, align 4 + %8 = load i8** %p, align 4 ; [#uses=1] + %9 = icmp ne i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %26 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = load i32* %3, align 4 ; [#uses=1] + %13 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %11, i32 %12) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %25 + +; <label>:15 ; preds = %10 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load i8** %4, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %16, i32 -10000, i8* %17) + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = call i32 @_Z12lua_rawequalP9lua_Stateii(%struct.lua_State* %18, i32 -1, i32 -2) ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %24 + +; <label>:21 ; preds = %15 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %22, i32 -3) + %23 = load i8** %p, align 4 ; [#uses=1] + store i8* %23, i8** %1 + br label %31 + +; <label>:24 ; preds = %15 + br label %25 + +; <label>:25 ; preds = %24, %10 + br label %26 + +; <label>:26 ; preds = %25, %0 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %3, align 4 ; [#uses=1] + %29 = load i8** %4, align 4 ; [#uses=1] + %30 = call i32 @_Z13luaL_typerrorP9lua_StateiPKc(%struct.lua_State* %27, i32 %28, i8* %29) ; [#uses=0] + store i8* null, i8** %1 + br label %31 + +; <label>:31 ; preds = %26, %21 + %32 = load i8** %1 ; [#uses=1] + ret i8* %32 +} + +; [#uses=6] +define void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %L, i32 %space, i8* %mes) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %space, i32* %2, align 4 + store i8* %mes, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call i32 @_Z14lua_checkstackP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %12, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i8** %3, align 4 ; [#uses=1] + %11 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %9, i8* getelementptr inbounds ([20 x i8]* @.str11253, i32 0, i32 0), i8* %10) ; [#uses=0] + br label %12 + +; <label>:12 ; preds = %8, %0 + ret void +} + +; [#uses=28] +define void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %L, i32 %narg, i32 %t) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i32 %t, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = icmp ne i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %13 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = load i32* %3, align 4 ; [#uses=1] + call void @_Z9tag_errorP9lua_Stateii(%struct.lua_State* %10, i32 %11, i32 %12) + br label %13 + +; <label>:13 ; preds = %9, %0 + ret void +} + +; [#uses=4] +define internal void @_Z9tag_errorP9lua_Stateii(%struct.lua_State* %L, i32 %narg, i32 %tag) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i32 %tag, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %6, i32 %7) ; [#uses=1] + %9 = call i32 @_Z13luaL_typerrorP9lua_StateiPKc(%struct.lua_State* %4, i32 %5, i8* %8) ; [#uses=0] + ret void +} + +; [#uses=16] +define void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %L, i32 %narg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + %6 = icmp eq i32 %5, -1 ; [#uses=1] + br i1 %6, label %7, label %11 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i32* %2, align 4 ; [#uses=1] + %10 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %8, i32 %9, i8* getelementptr inbounds ([15 x i8]* @.str12254, i32 0, i32 0)) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %7, %0 + ret void +} + +; [#uses=38] +define double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %L, i32 %narg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=4] + %d = alloca double, align 8 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store double %5, double* %d, align 8 + %6 = load double* %d, align 8 ; [#uses=1] + %7 = fcmp oeq double %6, 0.000000e+00 ; [#uses=1] + br i1 %7, label %8, label %16 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %9, i32 %10) ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br i1 %12, label %16, label %13 + +; <label>:13 ; preds = %8 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %2, align 4 ; [#uses=1] + call void @_Z9tag_errorP9lua_Stateii(%struct.lua_State* %14, i32 %15, i32 3) + br label %16 + +; <label>:16 ; preds = %13, %8, %0 + %17 = load double* %d, align 8 ; [#uses=1] + ret double %17 +} + +; [#uses=1] +define double @_Z14luaL_optnumberP9lua_Stateid(%struct.lua_State* %L, i32 %narg, double %def) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca double, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store double %def, double* %3, align 8 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + %7 = icmp sle i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load double* %3, align 8 ; [#uses=1] + br label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %11, i32 %12) ; [#uses=1] + br label %14 + +; <label>:14 ; preds = %10, %8 + %15 = phi double [ %9, %8 ], [ %13, %10 ] ; [#uses=1] + ret double %15 +} + +; [#uses=20] +define i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %L, i32 %narg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=4] + %d = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + %5 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %3, i32 %4) ; [#uses=1] + store i32 %5, i32* %d, align 4 + %6 = load i32* %d, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %16 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %9, i32 %10) ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br i1 %12, label %16, label %13 + +; <label>:13 ; preds = %8 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %2, align 4 ; [#uses=1] + call void @_Z9tag_errorP9lua_Stateii(%struct.lua_State* %14, i32 %15, i32 3) + br label %16 + +; <label>:16 ; preds = %13, %8, %0 + %17 = load i32* %d, align 4 ; [#uses=1] + ret i32 %17 +} + +; [#uses=16] +define i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %L, i32 %narg, i32 %def) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %narg, i32* %2, align 4 + store i32 %def, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 %5) ; [#uses=1] + %7 = icmp sle i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load i32* %3, align 4 ; [#uses=1] + br label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %2, align 4 ; [#uses=1] + %13 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %11, i32 %12) ; [#uses=1] + br label %14 + +; <label>:14 ; preds = %10, %8 + %15 = phi i32 [ %9, %8 ], [ %13, %10 ] ; [#uses=1] + ret i32 %15 +} + +; [#uses=3] +define i32 @_Z17luaL_getmetafieldP9lua_StateiPKc(%struct.lua_State* %L, i32 %obj, i8* %event) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %obj, i32* %3, align 4 + store i8* %event, i8** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %5, i32 %6) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %10, label %9 + +; <label>:9 ; preds = %0 + store i32 0, i32* %1 + br label %21 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = load i8** %4, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %11, i8* %12) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %13, i32 -2) + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %14, i32 -1) ; [#uses=1] + %16 = icmp eq i32 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %10 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %18, i32 -3) + store i32 0, i32* %1 + br label %21 + +; <label>:19 ; preds = %10 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %20, i32 -2) + store i32 1, i32* %1 + br label %21 + +; <label>:21 ; preds = %19, %17, %9 + %22 = load i32* %1 ; [#uses=1] + ret i32 %22 +} + +; [#uses=1] +define i32 @_Z13luaL_callmetaP9lua_StateiPKc(%struct.lua_State* %L, i32 %obj, i8* %event) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=8] + %4 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %obj, i32* %3, align 4 + store i8* %event, i8** %4, align 4 + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = icmp sgt i32 %5, 0 ; [#uses=1] + br i1 %6, label %10, label %7 + +; <label>:7 ; preds = %0 + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = icmp sle i32 %8, -10000 ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %7, %0 + %11 = load i32* %3, align 4 ; [#uses=1] + br label %18 + +; <label>:12 ; preds = %7 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %13) ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = add nsw i32 %14, %15 ; [#uses=1] + %17 = add nsw i32 %16, 1 ; [#uses=1] + br label %18 + +; <label>:18 ; preds = %12, %10 + %19 = phi i32 [ %11, %10 ], [ %17, %12 ] ; [#uses=1] + store i32 %19, i32* %3, align 4 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = load i32* %3, align 4 ; [#uses=1] + %22 = load i8** %4, align 4 ; [#uses=1] + %23 = call i32 @_Z17luaL_getmetafieldP9lua_StateiPKc(%struct.lua_State* %20, i32 %21, i8* %22) ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %24, label %26, label %25 + +; <label>:25 ; preds = %18 + store i32 0, i32* %1 + br label %30 + +; <label>:26 ; preds = %18 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %3, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %27, i32 %28) + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %29, i32 1, i32 1) + store i32 1, i32* %1 + br label %30 + +; <label>:30 ; preds = %26, %25 + %31 = load i32* %1 ; [#uses=1] + ret i32 %31 +} + +; [#uses=11] +define void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %L, i8* %libname, %struct.luaL_Reg* %l) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca %struct.luaL_Reg*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %libname, i8** %2, align 4 + store %struct.luaL_Reg* %l, %struct.luaL_Reg** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + call void @_Z12luaL_openlibP9lua_StatePKcPK8luaL_Regi(%struct.lua_State* %4, i8* %5, %struct.luaL_Reg* %6, i32 0) + ret void +} + +; [#uses=1] +define void @_Z12luaL_openlibP9lua_StatePKcPK8luaL_Regi(%struct.lua_State* %L, i8* %libname, %struct.luaL_Reg* %l, i32 %nup) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=15] + %2 = alloca i8*, align 4 ; [#uses=6] + %3 = alloca %struct.luaL_Reg*, align 4 ; [#uses=7] + %4 = alloca i32, align 4 ; [#uses=7] + %size = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %libname, i8** %2, align 4 + store %struct.luaL_Reg* %l, %struct.luaL_Reg** %3, align 4 + store i32 %nup, i32* %4, align 4 + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = icmp ne i8* %5, null ; [#uses=1] + br i1 %6, label %7, label %38 + +; <label>:7 ; preds = %0 + %8 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + %9 = call i32 @_Z7libsizePK8luaL_Reg(%struct.luaL_Reg* %8) ; [#uses=1] + store i32 %9, i32* %size, align 4 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i8* @_Z14luaL_findtableP9lua_StateiPKci(%struct.lua_State* %10, i32 -10000, i8* getelementptr inbounds ([8 x i8]* @.str13255, i32 0, i32 0), i32 1) ; [#uses=0] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %12, i32 -1, i8* %13) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %14, i32 -1) ; [#uses=1] + %16 = icmp eq i32 %15, 5 ; [#uses=1] + br i1 %16, label %32, label %17 + +; <label>:17 ; preds = %7 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %18, i32 -2) + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load i8** %2, align 4 ; [#uses=1] + %21 = load i32* %size, align 4 ; [#uses=1] + %22 = call i8* @_Z14luaL_findtableP9lua_StateiPKci(%struct.lua_State* %19, i32 -10002, i8* %20, i32 %21) ; [#uses=1] + %23 = icmp ne i8* %22, null ; [#uses=1] + br i1 %23, label %24, label %28 + +; <label>:24 ; preds = %17 + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %26 = load i8** %2, align 4 ; [#uses=1] + %27 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %25, i8* getelementptr inbounds ([30 x i8]* @.str14256, i32 0, i32 0), i8* %26) ; [#uses=0] + br label %28 + +; <label>:28 ; preds = %24, %17 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %29, i32 -1) + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %30, i32 -3, i8* %31) + br label %32 + +; <label>:32 ; preds = %28, %7 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %33, i32 -2) + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = load i32* %4, align 4 ; [#uses=1] + %36 = add nsw i32 %35, 1 ; [#uses=1] + %37 = sub nsw i32 0, %36 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %34, i32 %37) + br label %38 + +; <label>:38 ; preds = %32, %0 + br label %39 + +; <label>:39 ; preds = %69, %38 + %40 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.luaL_Reg* %40, i32 0, i32 0 ; [#uses=1] + %42 = load i8** %41, align 4 ; [#uses=1] + %43 = icmp ne i8* %42, null ; [#uses=1] + br i1 %43, label %44, label %72 + +; <label>:44 ; preds = %39 + store i32 0, i32* %i, align 4 + br label %45 + +; <label>:45 ; preds = %53, %44 + %46 = load i32* %i, align 4 ; [#uses=1] + %47 = load i32* %4, align 4 ; [#uses=1] + %48 = icmp slt i32 %46, %47 ; [#uses=1] + br i1 %48, label %49, label %56 + +; <label>:49 ; preds = %45 + %50 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %51 = load i32* %4, align 4 ; [#uses=1] + %52 = sub nsw i32 0, %51 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %50, i32 %52) + br label %53 + +; <label>:53 ; preds = %49 + %54 = load i32* %i, align 4 ; [#uses=1] + %55 = add nsw i32 %54, 1 ; [#uses=1] + store i32 %55, i32* %i, align 4 + br label %45 + +; <label>:56 ; preds = %45 + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.luaL_Reg* %58, i32 0, i32 1 ; [#uses=1] + %60 = load i32 (%struct.lua_State*)** %59, align 4 ; [#uses=1] + %61 = load i32* %4, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %57, i32 (%struct.lua_State*)* %60, i32 %61) + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = load i32* %4, align 4 ; [#uses=1] + %64 = add nsw i32 %63, 2 ; [#uses=1] + %65 = sub nsw i32 0, %64 ; [#uses=1] + %66 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + %67 = getelementptr inbounds %struct.luaL_Reg* %66, i32 0, i32 0 ; [#uses=1] + %68 = load i8** %67, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %62, i32 %65, i8* %68) + br label %69 + +; <label>:69 ; preds = %56 + %70 = load %struct.luaL_Reg** %3, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.luaL_Reg* %70, i32 1 ; [#uses=1] + store %struct.luaL_Reg* %71, %struct.luaL_Reg** %3, align 4 + br label %39 + +; <label>:72 ; preds = %39 + %73 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %74 = load i32* %4, align 4 ; [#uses=1] + %75 = sub nsw i32 0, %74 ; [#uses=1] + %76 = sub nsw i32 %75, 1 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %73, i32 %76) + ret void +} + +; [#uses=1] +define internal i32 @_Z7libsizePK8luaL_Reg(%struct.luaL_Reg* %l) nounwind { + %1 = alloca %struct.luaL_Reg*, align 4 ; [#uses=4] + %size = alloca i32, align 4 ; [#uses=4] + store %struct.luaL_Reg* %l, %struct.luaL_Reg** %1, align 4 + store i32 0, i32* %size, align 4 + br label %2 + +; <label>:2 ; preds = %10, %0 + %3 = load %struct.luaL_Reg** %1, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.luaL_Reg* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = icmp ne i8* %5, null ; [#uses=1] + br i1 %6, label %7, label %13 + +; <label>:7 ; preds = %2 + %8 = load i32* %size, align 4 ; [#uses=1] + %9 = add nsw i32 %8, 1 ; [#uses=1] + store i32 %9, i32* %size, align 4 + br label %10 + +; <label>:10 ; preds = %7 + %11 = load %struct.luaL_Reg** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Reg* %11, i32 1 ; [#uses=1] + store %struct.luaL_Reg* %12, %struct.luaL_Reg** %1, align 4 + br label %2 + +; <label>:13 ; preds = %2 + %14 = load i32* %size, align 4 ; [#uses=1] + ret i32 %14 +} + +; [#uses=4] +define i8* @_Z14luaL_findtableP9lua_StateiPKci(%struct.lua_State* %L, i32 %idx, i8* %fname, i32 %szhint) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=10] + %5 = alloca i32, align 4 ; [#uses=2] + %e = alloca i8*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %idx, i32* %3, align 4 + store i8* %fname, i8** %4, align 4 + store i32 %szhint, i32* %5, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %6, i32 %7) + br label %8 + +; <label>:8 ; preds = %60, %0 + %9 = load i8** %4, align 4 ; [#uses=1] + %10 = call i8* @strchr(i8* %9, i32 46) ; [#uses=1] + store i8* %10, i8** %e, align 4 + %11 = load i8** %e, align 4 ; [#uses=1] + %12 = icmp eq i8* %11, null ; [#uses=1] + br i1 %12, label %13, label %18 + +; <label>:13 ; preds = %8 + %14 = load i8** %4, align 4 ; [#uses=1] + %15 = load i8** %4, align 4 ; [#uses=1] + %16 = call i32 @strlen(i8* %15) ; [#uses=1] + %17 = getelementptr inbounds i8* %14, i32 %16 ; [#uses=1] + store i8* %17, i8** %e, align 4 + br label %18 + +; <label>:18 ; preds = %13, %8 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i8** %4, align 4 ; [#uses=1] + %21 = load i8** %e, align 4 ; [#uses=1] + %22 = load i8** %4, align 4 ; [#uses=1] + %23 = ptrtoint i8* %21 to i32 ; [#uses=1] + %24 = ptrtoint i8* %22 to i32 ; [#uses=1] + %25 = sub i32 %23, %24 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %19, i8* %20, i32 %25) + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %26, i32 -2) + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %27, i32 -1) ; [#uses=1] + %29 = icmp eq i32 %28, 0 ; [#uses=1] + br i1 %29, label %30, label %48 + +; <label>:30 ; preds = %18 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %31, i32 -2) + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = load i8** %e, align 4 ; [#uses=1] + %34 = load i8* %33 ; [#uses=1] + %35 = sext i8 %34 to i32 ; [#uses=1] + %36 = icmp eq i32 %35, 46 ; [#uses=1] + %37 = load i32* %5, align 4 ; [#uses=1] + %38 = select i1 %36, i32 1, i32 %37 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %32, i32 0, i32 %38) + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = load i8** %4, align 4 ; [#uses=1] + %41 = load i8** %e, align 4 ; [#uses=1] + %42 = load i8** %4, align 4 ; [#uses=1] + %43 = ptrtoint i8* %41 to i32 ; [#uses=1] + %44 = ptrtoint i8* %42 to i32 ; [#uses=1] + %45 = sub i32 %43, %44 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %39, i8* %40, i32 %45) + %46 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %46, i32 -2) + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_settableP9lua_Statei(%struct.lua_State* %47, i32 -4) + br label %56 + +; <label>:48 ; preds = %18 + %49 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %50 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %49, i32 -1) ; [#uses=1] + %51 = icmp eq i32 %50, 5 ; [#uses=1] + br i1 %51, label %55, label %52 + +; <label>:52 ; preds = %48 + %53 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %53, i32 -3) + %54 = load i8** %4, align 4 ; [#uses=1] + store i8* %54, i8** %1 + br label %66 + +; <label>:55 ; preds = %48 + br label %56 + +; <label>:56 ; preds = %55, %30 + %57 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %57, i32 -2) + %58 = load i8** %e, align 4 ; [#uses=1] + %59 = getelementptr inbounds i8* %58, i32 1 ; [#uses=1] + store i8* %59, i8** %4, align 4 + br label %60 + +; <label>:60 ; preds = %56 + %61 = load i8** %e, align 4 ; [#uses=1] + %62 = load i8* %61 ; [#uses=1] + %63 = sext i8 %62 to i32 ; [#uses=1] + %64 = icmp eq i32 %63, 46 ; [#uses=1] + br i1 %64, label %8, label %65 + +; <label>:65 ; preds = %60 + store i8* null, i8** %1 + br label %66 + +; <label>:66 ; preds = %65, %52 + %67 = load i8** %1 ; [#uses=1] + ret i8* %67 +} + +; [#uses=5] +define i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %L, i8* %s, i8* %p, i8* %r) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=6] + %3 = alloca i8*, align 4 ; [#uses=3] + %4 = alloca i8*, align 4 ; [#uses=2] + %wild = alloca i8*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=2] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %s, i8** %2, align 4 + store i8* %p, i8** %3, align 4 + store i8* %r, i8** %4, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = call i32 @strlen(i8* %5) ; [#uses=1] + store i32 %6, i32* %l, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %7, %struct.luaL_Buffer* %b) + br label %8 + +; <label>:8 ; preds = %13, %0 + %9 = load i8** %2, align 4 ; [#uses=1] + %10 = load i8** %3, align 4 ; [#uses=1] + %11 = call i8* @strstr(i8* %9, i8* %10) ; [#uses=2] + store i8* %11, i8** %wild, align 4 + %12 = icmp ne i8* %11, null ; [#uses=1] + br i1 %12, label %13, label %24 + +; <label>:13 ; preds = %8 + %14 = load i8** %2, align 4 ; [#uses=1] + %15 = load i8** %wild, align 4 ; [#uses=1] + %16 = load i8** %2, align 4 ; [#uses=1] + %17 = ptrtoint i8* %15 to i32 ; [#uses=1] + %18 = ptrtoint i8* %16 to i32 ; [#uses=1] + %19 = sub i32 %17, %18 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %14, i32 %19) + %20 = load i8** %4, align 4 ; [#uses=1] + call void @_Z14luaL_addstringP11luaL_BufferPKc(%struct.luaL_Buffer* %b, i8* %20) + %21 = load i8** %wild, align 4 ; [#uses=1] + %22 = load i32* %l, align 4 ; [#uses=1] + %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] + store i8* %23, i8** %2, align 4 + br label %8 + +; <label>:24 ; preds = %8 + %25 = load i8** %2, align 4 ; [#uses=1] + call void @_Z14luaL_addstringP11luaL_BufferPKc(%struct.luaL_Buffer* %b, i8* %25) + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %26, i32 -1, i32* null) ; [#uses=1] + ret i8* %27 +} + +; [#uses=13] +define void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %L, %struct.luaL_Buffer* %B) nounwind { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.luaL_Buffer* %4, i32 0, i32 2 ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %5, align 4 + %6 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.luaL_Buffer* %6, i32 0, i32 3 ; [#uses=1] + %8 = getelementptr inbounds [8192 x i8]* %7, i32 0, i32 0 ; [#uses=1] + %9 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.luaL_Buffer* %9, i32 0, i32 0 ; [#uses=1] + store i8* %8, i8** %10, align 4 + %11 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Buffer* %11, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %12, align 4 + ret void +} + +; [#uses=11] +define void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %B, i8* %s, i32 %l) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + store i8* %s, i8** %2, align 4 + store i32 %l, i32* %3, align 4 + br label %4 + +; <label>:4 ; preds = %21, %0 + %5 = load i32* %3, align 4 ; [#uses=2] + %6 = add i32 %5, -1 ; [#uses=1] + store i32 %6, i32* %3, align 4 + %7 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %7, label %8, label %30 + +; <label>:8 ; preds = %4 + %9 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.luaL_Buffer* %9, i32 0, i32 0 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.luaL_Buffer* %12, i32 0, i32 3 ; [#uses=1] + %14 = getelementptr inbounds [8192 x i8]* %13, i32 0, i32 0 ; [#uses=1] + %15 = getelementptr inbounds i8* %14, i32 8192 ; [#uses=1] + %16 = icmp ult i8* %11, %15 ; [#uses=1] + br i1 %16, label %21, label %17 + +; <label>:17 ; preds = %8 + %18 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %19 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %18) ; [#uses=1] + %20 = icmp ne i8* %19, null ; [#uses=1] + br label %21 + +; <label>:21 ; preds = %17, %8 + %22 = phi i1 [ true, %8 ], [ %20, %17 ] ; [#uses=0] + %23 = load i8** %2, align 4 ; [#uses=2] + %24 = getelementptr inbounds i8* %23, i32 1 ; [#uses=1] + store i8* %24, i8** %2, align 4 + %25 = load i8* %23 ; [#uses=1] + %26 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.luaL_Buffer* %26, i32 0, i32 0 ; [#uses=2] + %28 = load i8** %27, align 4 ; [#uses=2] + %29 = getelementptr inbounds i8* %28, i32 1 ; [#uses=1] + store i8* %29, i8** %27, align 4 + store i8 %25, i8* %28 + br label %4 + +; <label>:30 ; preds = %4 + ret void +} + +; [#uses=2] +define void @_Z14luaL_addstringP11luaL_BufferPKc(%struct.luaL_Buffer* %B, i8* %s) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=3] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + store i8* %s, i8** %2, align 4 + %3 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = call i32 @strlen(i8* %5) ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %3, i8* %4, i32 %6) + ret void +} + +; [#uses=14] +define void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %B) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=5] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + %2 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z11emptybufferP11luaL_Buffer(%struct.luaL_Buffer* %2) ; [#uses=0] + %4 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.luaL_Buffer* %4, i32 0, i32 2 ; [#uses=1] + %6 = load %struct.lua_State** %5, align 4 ; [#uses=1] + %7 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.luaL_Buffer* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %6, i32 %9) + %10 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.luaL_Buffer* %10, i32 0, i32 1 ; [#uses=1] + store i32 1, i32* %11, align 4 + ret void +} + +; [#uses=18] +define i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %B) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=4] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + %2 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z11emptybufferP11luaL_Buffer(%struct.luaL_Buffer* %2) ; [#uses=1] + %4 = icmp ne i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %0 + %6 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + call void @_Z11adjuststackP11luaL_Buffer(%struct.luaL_Buffer* %6) + br label %7 + +; <label>:7 ; preds = %5, %0 + %8 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.luaL_Buffer* %8, i32 0, i32 3 ; [#uses=1] + %10 = getelementptr inbounds [8192 x i8]* %9, i32 0, i32 0 ; [#uses=1] + ret i8* %10 +} + +; [#uses=3] +define internal i32 @_Z11emptybufferP11luaL_Buffer(%struct.luaL_Buffer* %B) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=8] + %l = alloca i32, align 4 ; [#uses=3] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %2, align 4 + %3 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.luaL_Buffer* %3, i32 0, i32 0 ; [#uses=1] + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.luaL_Buffer* %6, i32 0, i32 3 ; [#uses=1] + %8 = getelementptr inbounds [8192 x i8]* %7, i32 0, i32 0 ; [#uses=1] + %9 = ptrtoint i8* %5 to i32 ; [#uses=1] + %10 = ptrtoint i8* %8 to i32 ; [#uses=1] + %11 = sub i32 %9, %10 ; [#uses=1] + store i32 %11, i32* %l, align 4 + %12 = load i32* %l, align 4 ; [#uses=1] + %13 = icmp eq i32 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %0 + store i32 0, i32* %1 + br label %32 + +; <label>:15 ; preds = %0 + %16 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.luaL_Buffer* %16, i32 0, i32 2 ; [#uses=1] + %18 = load %struct.lua_State** %17, align 4 ; [#uses=1] + %19 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.luaL_Buffer* %19, i32 0, i32 3 ; [#uses=1] + %21 = getelementptr inbounds [8192 x i8]* %20, i32 0, i32 0 ; [#uses=1] + %22 = load i32* %l, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %18, i8* %21, i32 %22) + %23 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.luaL_Buffer* %23, i32 0, i32 3 ; [#uses=1] + %25 = getelementptr inbounds [8192 x i8]* %24, i32 0, i32 0 ; [#uses=1] + %26 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.luaL_Buffer* %26, i32 0, i32 0 ; [#uses=1] + store i8* %25, i8** %27, align 4 + %28 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.luaL_Buffer* %28, i32 0, i32 1 ; [#uses=2] + %30 = load i32* %29, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + store i32 %31, i32* %29, align 4 + store i32 1, i32* %1 + br label %32 + +; <label>:32 ; preds = %15, %14 + %33 = load i32* %1 ; [#uses=1] + ret i32 %33 +} + +; [#uses=2] +define internal void @_Z11adjuststackP11luaL_Buffer(%struct.luaL_Buffer* %B) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=7] + %L = alloca %struct.lua_State*, align 4 ; [#uses=4] + %toget = alloca i32, align 4 ; [#uses=8] + %toplen = alloca i32, align 4 ; [#uses=4] + %l = alloca i32, align 4 ; [#uses=3] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + %2 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.luaL_Buffer* %2, i32 0, i32 1 ; [#uses=1] + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sgt i32 %4, 1 ; [#uses=1] + br i1 %5, label %6, label %54 + +; <label>:6 ; preds = %0 + %7 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.luaL_Buffer* %7, i32 0, i32 2 ; [#uses=1] + %9 = load %struct.lua_State** %8, align 4 ; [#uses=1] + store %struct.lua_State* %9, %struct.lua_State** %L, align 4 + store i32 1, i32* %toget, align 4 + %10 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %11 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %10, i32 -1) ; [#uses=1] + store i32 %11, i32* %toplen, align 4 + br label %12 + +; <label>:12 ; preds = %37, %6 + %13 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %14 = load i32* %toget, align 4 ; [#uses=1] + %15 = add nsw i32 %14, 1 ; [#uses=1] + %16 = sub nsw i32 0, %15 ; [#uses=1] + %17 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %13, i32 %16) ; [#uses=1] + store i32 %17, i32* %l, align 4 + %18 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.luaL_Buffer* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = load i32* %toget, align 4 ; [#uses=1] + %22 = sub nsw i32 %20, %21 ; [#uses=1] + %23 = add nsw i32 %22, 1 ; [#uses=1] + %24 = icmp sge i32 %23, 10 ; [#uses=1] + br i1 %24, label %29, label %25 + +; <label>:25 ; preds = %12 + %26 = load i32* %toplen, align 4 ; [#uses=1] + %27 = load i32* %l, align 4 ; [#uses=1] + %28 = icmp ugt i32 %26, %27 ; [#uses=1] + br i1 %28, label %29, label %35 + +; <label>:29 ; preds = %25, %12 + %30 = load i32* %l, align 4 ; [#uses=1] + %31 = load i32* %toplen, align 4 ; [#uses=1] + %32 = add i32 %31, %30 ; [#uses=1] + store i32 %32, i32* %toplen, align 4 + %33 = load i32* %toget, align 4 ; [#uses=1] + %34 = add nsw i32 %33, 1 ; [#uses=1] + store i32 %34, i32* %toget, align 4 + br label %36 + +; <label>:35 ; preds = %25 + br label %43 + +; <label>:36 ; preds = %29 + br label %37 + +; <label>:37 ; preds = %36 + %38 = load i32* %toget, align 4 ; [#uses=1] + %39 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.luaL_Buffer* %39, i32 0, i32 1 ; [#uses=1] + %41 = load i32* %40, align 4 ; [#uses=1] + %42 = icmp slt i32 %38, %41 ; [#uses=1] + br i1 %42, label %12, label %43 + +; <label>:43 ; preds = %37, %35 + %44 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %45 = load i32* %toget, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %44, i32 %45) + %46 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %47 = getelementptr inbounds %struct.luaL_Buffer* %46, i32 0, i32 1 ; [#uses=1] + %48 = load i32* %47, align 4 ; [#uses=1] + %49 = load i32* %toget, align 4 ; [#uses=1] + %50 = sub nsw i32 %48, %49 ; [#uses=1] + %51 = add nsw i32 %50, 1 ; [#uses=1] + %52 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.luaL_Buffer* %52, i32 0, i32 1 ; [#uses=1] + store i32 %51, i32* %53, align 4 + br label %54 + +; <label>:54 ; preds = %43, %0 + ret void +} + +; [#uses=4] +define void @_Z13luaL_addvalueP11luaL_Buffer(%struct.luaL_Buffer* %B) { + %1 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=9] + %L = alloca %struct.lua_State*, align 4 ; [#uses=4] + %vl = alloca i32, align 4 ; [#uses=4] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.luaL_Buffer* %B, %struct.luaL_Buffer** %1, align 4 + %2 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %3 = getelementptr inbounds %struct.luaL_Buffer* %2, i32 0, i32 2 ; [#uses=1] + %4 = load %struct.lua_State** %3, align 4 ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L, align 4 + %5 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %6 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %5, i32 -1, i32* %vl) ; [#uses=1] + store i8* %6, i8** %s, align 4 + %7 = load i32* %vl, align 4 ; [#uses=1] + %8 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.luaL_Buffer* %8, i32 0, i32 0 ; [#uses=1] + %10 = load i8** %9, align 4 ; [#uses=1] + %11 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Buffer* %11, i32 0, i32 3 ; [#uses=1] + %13 = getelementptr inbounds [8192 x i8]* %12, i32 0, i32 0 ; [#uses=1] + %14 = ptrtoint i8* %10 to i32 ; [#uses=1] + %15 = ptrtoint i8* %13 to i32 ; [#uses=1] + %16 = sub i32 %14, %15 ; [#uses=1] + %17 = sub nsw i32 8192, %16 ; [#uses=1] + %18 = icmp ule i32 %7, %17 ; [#uses=1] + br i1 %18, label %19, label %31 + +; <label>:19 ; preds = %0 + %20 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.luaL_Buffer* %20, i32 0, i32 0 ; [#uses=1] + %22 = load i8** %21, align 4 ; [#uses=1] + %23 = load i8** %s, align 4 ; [#uses=1] + %24 = load i32* %vl, align 4 ; [#uses=1] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* %22, i8* %23, i32 %24, i32 1, i1 false) + %25 = load i32* %vl, align 4 ; [#uses=1] + %26 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.luaL_Buffer* %26, i32 0, i32 0 ; [#uses=2] + %28 = load i8** %27, align 4 ; [#uses=1] + %29 = getelementptr inbounds i8* %28, i32 %25 ; [#uses=1] + store i8* %29, i8** %27, align 4 + %30 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %30, i32 -2) + br label %43 + +; <label>:31 ; preds = %0 + %32 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %33 = call i32 @_Z11emptybufferP11luaL_Buffer(%struct.luaL_Buffer* %32) ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %37 + +; <label>:35 ; preds = %31 + %36 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %36, i32 -2) + br label %37 + +; <label>:37 ; preds = %35, %31 + %38 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.luaL_Buffer* %38, i32 0, i32 1 ; [#uses=2] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = add nsw i32 %40, 1 ; [#uses=1] + store i32 %41, i32* %39, align 4 + %42 = load %struct.luaL_Buffer** %1, align 4 ; [#uses=1] + call void @_Z11adjuststackP11luaL_Buffer(%struct.luaL_Buffer* %42) + br label %43 + +; <label>:43 ; preds = %37, %19 + ret void +} + +; [#uses=0] +define i32 @_Z8luaL_refP9lua_Statei(%struct.lua_State* %L, i32 %t) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %3 = alloca i32, align 4 ; [#uses=11] + %ref = alloca i32, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %t, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sgt i32 %4, 0 ; [#uses=1] + br i1 %5, label %9, label %6 + +; <label>:6 ; preds = %0 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = icmp sle i32 %7, -10000 ; [#uses=1] + br i1 %8, label %9, label %11 + +; <label>:9 ; preds = %6, %0 + %10 = load i32* %3, align 4 ; [#uses=1] + br label %17 + +; <label>:11 ; preds = %6 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %12) ; [#uses=1] + %14 = load i32* %3, align 4 ; [#uses=1] + %15 = add nsw i32 %13, %14 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + br label %17 + +; <label>:17 ; preds = %11, %9 + %18 = phi i32 [ %10, %9 ], [ %16, %11 ] ; [#uses=1] + store i32 %18, i32* %3, align 4 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %19, i32 -1) ; [#uses=1] + %21 = icmp eq i32 %20, 0 ; [#uses=1] + br i1 %21, label %22, label %24 + +; <label>:22 ; preds = %17 + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %23, i32 -2) + store i32 -1, i32* %1 + br label %49 + +; <label>:24 ; preds = %17 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %25, i32 %26, i32 0) + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %27, i32 -1) ; [#uses=1] + store i32 %28, i32* %ref, align 4 + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %29, i32 -2) + %30 = load i32* %ref, align 4 ; [#uses=1] + %31 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %31, label %32, label %38 + +; <label>:32 ; preds = %24 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = load i32* %3, align 4 ; [#uses=1] + %35 = load i32* %ref, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %33, i32 %34, i32 %35) + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %37 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %36, i32 %37, i32 0) + br label %44 + +; <label>:38 ; preds = %24 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = load i32* %3, align 4 ; [#uses=1] + %41 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %39, i32 %40) ; [#uses=1] + store i32 %41, i32* %ref, align 4 + %42 = load i32* %ref, align 4 ; [#uses=1] + %43 = add nsw i32 %42, 1 ; [#uses=1] + store i32 %43, i32* %ref, align 4 + br label %44 + +; <label>:44 ; preds = %38, %32 + %45 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %46 = load i32* %3, align 4 ; [#uses=1] + %47 = load i32* %ref, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %45, i32 %46, i32 %47) + %48 = load i32* %ref, align 4 ; [#uses=1] + store i32 %48, i32* %1 + br label %49 + +; <label>:49 ; preds = %44, %22 + %50 = load i32* %1 ; [#uses=1] + ret i32 %50 +} + +; [#uses=0] +define void @_Z10luaL_unrefP9lua_Stateii(%struct.lua_State* %L, i32 %t, i32 %ref) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=9] + %3 = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %t, i32* %2, align 4 + store i32 %ref, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp sge i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %31 + +; <label>:6 ; preds = %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = icmp sgt i32 %7, 0 ; [#uses=1] + br i1 %8, label %12, label %9 + +; <label>:9 ; preds = %6 + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = icmp sle i32 %10, -10000 ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %9, %6 + %13 = load i32* %2, align 4 ; [#uses=1] + br label %20 + +; <label>:14 ; preds = %9 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %15) ; [#uses=1] + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = add nsw i32 %16, %17 ; [#uses=1] + %19 = add nsw i32 %18, 1 ; [#uses=1] + br label %20 + +; <label>:20 ; preds = %14, %12 + %21 = phi i32 [ %13, %12 ], [ %19, %14 ] ; [#uses=1] + store i32 %21, i32* %2, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %22, i32 %23, i32 0) + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load i32* %2, align 4 ; [#uses=1] + %26 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %24, i32 %25, i32 %26) + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %27, i32 %28) + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %29, i32 %30, i32 0) + br label %31 + +; <label>:31 ; preds = %20, %0 + ret void +} + +; [#uses=5] +define i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %L, i8* %filename) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %3 = alloca i8*, align 4 ; [#uses=7] + %lf = alloca %struct.LoadF, align 4 ; [#uses=17] + %status = alloca i32, align 4 ; [#uses=2] + %readstatus = alloca i32, align 4 ; [#uses=2] + %c = alloca i32, align 4 ; [#uses=10] + %fnameindex = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %filename, i8** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %4) ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + store i32 %6, i32* %fnameindex, align 4 + %7 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %7, align 4 + %8 = load i8** %3, align 4 ; [#uses=1] + %9 = icmp eq i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %11, i8* getelementptr inbounds ([7 x i8]* @.str15257, i32 0, i32 0), i32 6) + %12 = load %struct._IO_FILE** @stdin, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + store %struct._IO_FILE* %12, %struct._IO_FILE** %13, align 4 + br label %29 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i8** %3, align 4 ; [#uses=1] + %17 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %15, i8* getelementptr inbounds ([4 x i8]* @.str16258, i32 0, i32 0), i8* %16) ; [#uses=0] + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = call %struct._IO_FILE* @fopen(i8* %18, i8* getelementptr inbounds ([2 x i8]* @.str17259, i32 0, i32 0)) ; [#uses=1] + %20 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + store %struct._IO_FILE* %19, %struct._IO_FILE** %20, align 4 + %21 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %22 = load %struct._IO_FILE** %21, align 4 ; [#uses=1] + %23 = icmp eq %struct._IO_FILE* %22, null ; [#uses=1] + br i1 %23, label %24, label %28 + +; <label>:24 ; preds = %14 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = load i32* %fnameindex, align 4 ; [#uses=1] + %27 = call i32 @_Z7errfileP9lua_StatePKci(%struct.lua_State* %25, i8* getelementptr inbounds ([5 x i8]* @.str18260, i32 0, i32 0), i32 %26) ; [#uses=1] + store i32 %27, i32* %1 + br label %125 + +; <label>:28 ; preds = %14 + br label %29 + +; <label>:29 ; preds = %28, %10 + %30 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %31 = load %struct._IO_FILE** %30, align 4 ; [#uses=1] + %32 = call i32 @_IO_getc(%struct._IO_FILE* %31) ; [#uses=1] + store i32 %32, i32* %c, align 4 + %33 = load i32* %c, align 4 ; [#uses=1] + %34 = icmp eq i32 %33, 35 ; [#uses=1] + br i1 %34, label %35, label %56 + +; <label>:35 ; preds = %29 + %36 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 0 ; [#uses=1] + store i32 1, i32* %36, align 4 + br label %37 + +; <label>:37 ; preds = %47, %35 + %38 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %39 = load %struct._IO_FILE** %38, align 4 ; [#uses=1] + %40 = call i32 @_IO_getc(%struct._IO_FILE* %39) ; [#uses=2] + store i32 %40, i32* %c, align 4 + %41 = icmp ne i32 %40, -1 ; [#uses=1] + br i1 %41, label %42, label %45 + +; <label>:42 ; preds = %37 + %43 = load i32* %c, align 4 ; [#uses=1] + %44 = icmp ne i32 %43, 10 ; [#uses=1] + br label %45 + +; <label>:45 ; preds = %42, %37 + %46 = phi i1 [ false, %37 ], [ %44, %42 ] ; [#uses=1] + br i1 %46, label %47, label %48 + +; <label>:47 ; preds = %45 + br label %37 + +; <label>:48 ; preds = %45 + %49 = load i32* %c, align 4 ; [#uses=1] + %50 = icmp eq i32 %49, 10 ; [#uses=1] + br i1 %50, label %51, label %55 + +; <label>:51 ; preds = %48 + %52 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %53 = load %struct._IO_FILE** %52, align 4 ; [#uses=1] + %54 = call i32 @_IO_getc(%struct._IO_FILE* %53) ; [#uses=1] + store i32 %54, i32* %c, align 4 + br label %55 + +; <label>:55 ; preds = %51, %48 + br label %56 + +; <label>:56 ; preds = %55, %29 + %57 = load i32* %c, align 4 ; [#uses=1] + %58 = load i8* getelementptr inbounds ([5 x i8]* @.str19261, i32 0, i32 0) ; [#uses=1] + %59 = sext i8 %58 to i32 ; [#uses=1] + %60 = icmp eq i32 %57, %59 ; [#uses=1] + br i1 %60, label %61, label %93 + +; <label>:61 ; preds = %56 + %62 = load i8** %3, align 4 ; [#uses=1] + %63 = icmp ne i8* %62, null ; [#uses=1] + br i1 %63, label %64, label %93 + +; <label>:64 ; preds = %61 + %65 = load i8** %3, align 4 ; [#uses=1] + %66 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %67 = load %struct._IO_FILE** %66, align 4 ; [#uses=1] + %68 = call %struct._IO_FILE* @freopen(i8* %65, i8* getelementptr inbounds ([3 x i8]* @.str20262, i32 0, i32 0), %struct._IO_FILE* %67) ; [#uses=1] + %69 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + store %struct._IO_FILE* %68, %struct._IO_FILE** %69, align 4 + %70 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %71 = load %struct._IO_FILE** %70, align 4 ; [#uses=1] + %72 = icmp eq %struct._IO_FILE* %71, null ; [#uses=1] + br i1 %72, label %73, label %77 + +; <label>:73 ; preds = %64 + %74 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %75 = load i32* %fnameindex, align 4 ; [#uses=1] + %76 = call i32 @_Z7errfileP9lua_StatePKci(%struct.lua_State* %74, i8* getelementptr inbounds ([7 x i8]* @.str21263, i32 0, i32 0), i32 %75) ; [#uses=1] + store i32 %76, i32* %1 + br label %125 + +; <label>:77 ; preds = %64 + br label %78 + +; <label>:78 ; preds = %90, %77 + %79 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %80 = load %struct._IO_FILE** %79, align 4 ; [#uses=1] + %81 = call i32 @_IO_getc(%struct._IO_FILE* %80) ; [#uses=2] + store i32 %81, i32* %c, align 4 + %82 = icmp ne i32 %81, -1 ; [#uses=1] + br i1 %82, label %83, label %88 + +; <label>:83 ; preds = %78 + %84 = load i32* %c, align 4 ; [#uses=1] + %85 = load i8* getelementptr inbounds ([5 x i8]* @.str19261, i32 0, i32 0) ; [#uses=1] + %86 = sext i8 %85 to i32 ; [#uses=1] + %87 = icmp ne i32 %84, %86 ; [#uses=1] + br label %88 + +; <label>:88 ; preds = %83, %78 + %89 = phi i1 [ false, %78 ], [ %87, %83 ] ; [#uses=1] + br i1 %89, label %90, label %91 + +; <label>:90 ; preds = %88 + br label %78 + +; <label>:91 ; preds = %88 + %92 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %92, align 4 + br label %93 + +; <label>:93 ; preds = %91, %61, %56 + %94 = load i32* %c, align 4 ; [#uses=1] + %95 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %96 = load %struct._IO_FILE** %95, align 4 ; [#uses=1] + %97 = call i32 @ungetc(i32 %94, %struct._IO_FILE* %96) ; [#uses=0] + %98 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %99 = bitcast %struct.LoadF* %lf to i8* ; [#uses=1] + %100 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %101 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %100, i32 -1, i32* null) ; [#uses=1] + %102 = call i32 @_Z8lua_loadP9lua_StatePFPKcS0_PvPjES3_S2_(%struct.lua_State* %98, i8* (%struct.lua_State*, i8*, i32*)* @_Z4getFP9lua_StatePvPj, i8* %99, i8* %101) ; [#uses=1] + store i32 %102, i32* %status, align 4 + %103 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %104 = load %struct._IO_FILE** %103, align 4 ; [#uses=1] + %105 = call i32 @ferror(%struct._IO_FILE* %104) nounwind ; [#uses=1] + store i32 %105, i32* %readstatus, align 4 + %106 = load i8** %3, align 4 ; [#uses=1] + %107 = icmp ne i8* %106, null ; [#uses=1] + br i1 %107, label %108, label %112 + +; <label>:108 ; preds = %93 + %109 = getelementptr inbounds %struct.LoadF* %lf, i32 0, i32 1 ; [#uses=1] + %110 = load %struct._IO_FILE** %109, align 4 ; [#uses=1] + %111 = call i32 @fclose(%struct._IO_FILE* %110) ; [#uses=0] + br label %112 + +; <label>:112 ; preds = %108, %93 + %113 = load i32* %readstatus, align 4 ; [#uses=1] + %114 = icmp ne i32 %113, 0 ; [#uses=1] + br i1 %114, label %115, label %121 + +; <label>:115 ; preds = %112 + %116 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %117 = load i32* %fnameindex, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %116, i32 %117) + %118 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %119 = load i32* %fnameindex, align 4 ; [#uses=1] + %120 = call i32 @_Z7errfileP9lua_StatePKci(%struct.lua_State* %118, i8* getelementptr inbounds ([5 x i8]* @.str22264, i32 0, i32 0), i32 %119) ; [#uses=1] + store i32 %120, i32* %1 + br label %125 + +; <label>:121 ; preds = %112 + %122 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %123 = load i32* %fnameindex, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %122, i32 %123) + %124 = load i32* %status, align 4 ; [#uses=1] + store i32 %124, i32* %1 + br label %125 + +; <label>:125 ; preds = %121, %115, %73, %24 + %126 = load i32* %1 ; [#uses=1] + ret i32 %126 +} + +; [#uses=5] +declare %struct._IO_FILE* @fopen(i8*, i8*) + +; [#uses=3] +define internal i32 @_Z7errfileP9lua_StatePKci(%struct.lua_State* %L, i8* %what, i32 %fnameindex) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %serr = alloca i8*, align 4 ; [#uses=2] + %filename = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %what, i8** %2, align 4 + store i32 %fnameindex, i32* %3, align 4 + %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] + %5 = load i32* %4 ; [#uses=1] + %6 = call i8* @strerror(i32 %5) ; [#uses=1] + store i8* %6, i8** %serr, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %7, i32 %8, i32* null) ; [#uses=1] + %10 = getelementptr inbounds i8* %9, i32 1 ; [#uses=1] + store i8* %10, i8** %filename, align 4 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i8** %2, align 4 ; [#uses=1] + %13 = load i8** %filename, align 4 ; [#uses=1] + %14 = load i8** %serr, align 4 ; [#uses=1] + %15 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %11, i8* getelementptr inbounds ([17 x i8]* @.str25267, i32 0, i32 0), i8* %12, i8* %13, i8* %14) ; [#uses=0] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i32* %3, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %16, i32 %17) + ret i32 6 +} + +; [#uses=5] +declare i32 @_IO_getc(%struct._IO_FILE*) + +; [#uses=1] +declare %struct._IO_FILE* @freopen(i8*, i8*, %struct._IO_FILE*) + +; [#uses=2] +declare i32 @ungetc(i32, %struct._IO_FILE*) + +; [#uses=1] +define internal i8* @_Z4getFP9lua_StatePvPj(%struct.lua_State* %L, i8* %ud, i32* %size) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=1] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i32*, align 4 ; [#uses=4] + %lf = alloca %struct.LoadF*, align 4 ; [#uses=7] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %ud, i8** %3, align 4 + store i32* %size, i32** %4, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = bitcast i8* %5 to %struct.LoadF* ; [#uses=1] + store %struct.LoadF* %6, %struct.LoadF** %lf, align 4 + %7 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LoadF* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %15 + +; <label>:11 ; preds = %0 + %12 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %13 = getelementptr inbounds %struct.LoadF* %12, i32 0, i32 0 ; [#uses=1] + store i32 0, i32* %13, align 4 + %14 = load i32** %4, align 4 ; [#uses=1] + store i32 1, i32* %14 + store i8* getelementptr inbounds ([2 x i8]* @.str24266, i32 0, i32 0), i8** %1 + br label %41 + +; <label>:15 ; preds = %0 + %16 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.LoadF* %16, i32 0, i32 1 ; [#uses=1] + %18 = load %struct._IO_FILE** %17, align 4 ; [#uses=1] + %19 = call i32 @feof(%struct._IO_FILE* %18) nounwind ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %22 + +; <label>:21 ; preds = %15 + store i8* null, i8** %1 + br label %41 + +; <label>:22 ; preds = %15 + %23 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.LoadF* %23, i32 0, i32 2 ; [#uses=1] + %25 = getelementptr inbounds [8192 x i8]* %24, i32 0, i32 0 ; [#uses=1] + %26 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.LoadF* %26, i32 0, i32 1 ; [#uses=1] + %28 = load %struct._IO_FILE** %27, align 4 ; [#uses=1] + %29 = call i32 @fread(i8* %25, i32 1, i32 8192, %struct._IO_FILE* %28) ; [#uses=1] + %30 = load i32** %4, align 4 ; [#uses=1] + store i32 %29, i32* %30 + %31 = load i32** %4, align 4 ; [#uses=1] + %32 = load i32* %31 ; [#uses=1] + %33 = icmp ugt i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %38 + +; <label>:34 ; preds = %22 + %35 = load %struct.LoadF** %lf, align 4 ; [#uses=1] + %36 = getelementptr inbounds %struct.LoadF* %35, i32 0, i32 2 ; [#uses=1] + %37 = getelementptr inbounds [8192 x i8]* %36, i32 0, i32 0 ; [#uses=1] + br label %39 + +; <label>:38 ; preds = %22 + br label %39 + +; <label>:39 ; preds = %38, %34 + %40 = phi i8* [ %37, %34 ], [ null, %38 ] ; [#uses=1] + store i8* %40, i8** %1 + br label %41 + +; <label>:41 ; preds = %39, %21, %11 + %42 = load i8** %1 ; [#uses=1] + ret i8* %42 +} + +; [#uses=3] +declare i32 @ferror(%struct._IO_FILE*) nounwind + +; [#uses=3] +declare i32 @fclose(%struct._IO_FILE*) + +; [#uses=5] +define i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %L, i8* %buff, i32 %size, i8* %name) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + %ls = alloca %struct.LoadS, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %buff, i8** %2, align 4 + store i32 %size, i32* %3, align 4 + store i8* %name, i8** %4, align 4 + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.LoadS* %ls, i32 0, i32 0 ; [#uses=1] + store i8* %5, i8** %6, align 4 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LoadS* %ls, i32 0, i32 1 ; [#uses=1] + store i32 %7, i32* %8, align 4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = bitcast %struct.LoadS* %ls to i8* ; [#uses=1] + %11 = load i8** %4, align 4 ; [#uses=1] + %12 = call i32 @_Z8lua_loadP9lua_StatePFPKcS0_PvPjES3_S2_(%struct.lua_State* %9, i8* (%struct.lua_State*, i8*, i32*)* @_Z4getSP9lua_StatePvPj, i8* %10, i8* %11) ; [#uses=1] + ret i32 %12 +} + +; [#uses=1] +define internal i8* @_Z4getSP9lua_StatePvPj(%struct.lua_State* %L, i8* %ud, i32* %size) nounwind { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=1] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i32*, align 4 ; [#uses=2] + %ls = alloca %struct.LoadS*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %ud, i8** %3, align 4 + store i32* %size, i32** %4, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = bitcast i8* %5 to %struct.LoadS* ; [#uses=1] + store %struct.LoadS* %6, %struct.LoadS** %ls, align 4 + %7 = load %struct.LoadS** %ls, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.LoadS* %7, i32 0, i32 1 ; [#uses=1] + %9 = load i32* %8, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %12 + +; <label>:11 ; preds = %0 + store i8* null, i8** %1 + br label %22 + +; <label>:12 ; preds = %0 + %13 = load %struct.LoadS** %ls, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.LoadS* %13, i32 0, i32 1 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + %16 = load i32** %4, align 4 ; [#uses=1] + store i32 %15, i32* %16 + %17 = load %struct.LoadS** %ls, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.LoadS* %17, i32 0, i32 1 ; [#uses=1] + store i32 0, i32* %18, align 4 + %19 = load %struct.LoadS** %ls, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.LoadS* %19, i32 0, i32 0 ; [#uses=1] + %21 = load i8** %20, align 4 ; [#uses=1] + store i8* %21, i8** %1 + br label %22 + +; <label>:22 ; preds = %12, %11 + %23 = load i8** %1 ; [#uses=1] + ret i8* %23 +} + +; [#uses=0] +define i32 @_Z15luaL_loadstringP9lua_StatePKc(%struct.lua_State* %L, i8* %s) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %s, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = load i8** %2, align 4 ; [#uses=1] + %6 = call i32 @strlen(i8* %5) ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %3, i8* %4, i32 %6, i8* %7) ; [#uses=1] + ret i32 %8 +} + +; [#uses=1] +define %struct.lua_State* @_Z13luaL_newstatev() { + %L = alloca %struct.lua_State*, align 4 ; [#uses=4] + %1 = call %struct.lua_State* @_Z12lua_newstatePFPvS_S_jjES_(i8* (i8*, i8*, i32, i32)* @_Z7l_allocPvS_jj, i8* null) ; [#uses=1] + store %struct.lua_State* %1, %struct.lua_State** %L, align 4 + %2 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %3 = icmp ne %struct.lua_State* %2, null ; [#uses=1] + br i1 %3, label %4, label %7 + +; <label>:4 ; preds = %0 + %5 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %6 = call i32 (%struct.lua_State*)* (%struct.lua_State*, i32 (%struct.lua_State*)*)* @_Z11lua_atpanicP9lua_StatePFiS0_E(%struct.lua_State* %5, i32 (%struct.lua_State*)* @_Z5panicP9lua_State) ; [#uses=0] + br label %7 + +; <label>:7 ; preds = %4, %0 + %8 = load %struct.lua_State** %L, align 4 ; [#uses=1] + ret %struct.lua_State* %8 +} + +; [#uses=1] +define internal i8* @_Z7l_allocPvS_jj(i8* %ud, i8* %ptr, i32 %osize, i32 %nsize) nounwind { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=1] + %3 = alloca i8*, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=1] + %5 = alloca i32, align 4 ; [#uses=3] + store i8* %ud, i8** %2, align 4 + store i8* %ptr, i8** %3, align 4 + store i32 %osize, i32* %4, align 4 + store i32 %nsize, i32* %5, align 4 + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load i8** %3, align 4 ; [#uses=1] + call void @free(i8* %9) nounwind + store i8* null, i8** %1 + br label %14 + +; <label>:10 ; preds = %0 + %11 = load i8** %3, align 4 ; [#uses=1] + %12 = load i32* %5, align 4 ; [#uses=1] + %13 = call i8* @realloc(i8* %11, i32 %12) ; [#uses=1] + store i8* %13, i8** %1 + br label %14 + +; <label>:14 ; preds = %10, %8 + %15 = load i8** %1 ; [#uses=1] + ret i8* %15 +} + +; [#uses=1] +define internal i32 @_Z5panicP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %3, i32 -1, i32* null) ; [#uses=1] + %5 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %2, i8* getelementptr inbounds ([50 x i8]* @.str23265, i32 0, i32 0), i8* %4) ; [#uses=0] + ret i32 0 +} + +; [#uses=1] +declare void @free(i8*) nounwind + +; [#uses=1] +declare i8* @realloc(i8*, i32) nounwind + +; [#uses=1] +declare i32 @feof(%struct._IO_FILE*) nounwind + +; [#uses=2] +declare i32 @fread(i8*, i32, i32, %struct._IO_FILE*) + +; [#uses=6] +declare i8* @strerror(i32) nounwind + +; [#uses=5] +declare i32* @__errno_location() nounwind readnone + +; [#uses=1] +define internal i32 @_Z11luaB_assertP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 1) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %12, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %9, i32 2, i8* getelementptr inbounds ([18 x i8]* @.str78, i32 0, i32 0), i32* null) ; [#uses=1] + %11 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %8, i8* getelementptr inbounds ([3 x i8]* @.str77317, i32 0, i32 0), i8* %10) ; [#uses=1] + store i32 %11, i32* %1 + br label %15 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %13) ; [#uses=1] + store i32 %14, i32* %1 + br label %15 + +; <label>:15 ; preds = %12, %7 + %16 = load i32* %1 ; [#uses=1] + ret i32 %16 +} + +; [#uses=1] +define internal i32 @_Z19luaB_collectgarbageP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %o = alloca i32, align 4 ; [#uses=3] + %ex = alloca i32, align 4 ; [#uses=2] + %res = alloca i32, align 4 ; [#uses=4] + %b = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z16luaL_checkoptionP9lua_StateiPKcPKS2_(%struct.lua_State* %3, i32 1, i8* getelementptr inbounds ([8 x i8]* @.str72316, i32 0, i32 0), i8** getelementptr inbounds ([8 x i8*]* @_ZZ19luaB_collectgarbageP9lua_StateE4opts, i32 0, i32 0)) ; [#uses=1] + store i32 %4, i32* %o, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %5, i32 2, i32 0) ; [#uses=1] + store i32 %6, i32* %ex, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = load i32* %o, align 4 ; [#uses=1] + %9 = getelementptr inbounds [7 x i32]* @_ZZ19luaB_collectgarbageP9lua_StateE7optsnum, i32 0, i32 %8 ; [#uses=1] + %10 = load i32* %9 ; [#uses=1] + %11 = load i32* %ex, align 4 ; [#uses=1] + %12 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %7, i32 %10, i32 %11) ; [#uses=1] + store i32 %12, i32* %res, align 4 + %13 = load i32* %o, align 4 ; [#uses=1] + %14 = getelementptr inbounds [7 x i32]* @_ZZ19luaB_collectgarbageP9lua_StateE7optsnum, i32 0, i32 %13 ; [#uses=1] + %15 = load i32* %14 ; [#uses=1] + switch i32 %15, label %29 [ + i32 3, label %16 + i32 5, label %26 + ] + +; <label>:16 ; preds = %0 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %17, i32 4, i32 0) ; [#uses=1] + store i32 %18, i32* %b, align 4 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i32* %res, align 4 ; [#uses=1] + %21 = sitofp i32 %20 to double ; [#uses=1] + %22 = load i32* %b, align 4 ; [#uses=1] + %23 = sitofp i32 %22 to double ; [#uses=1] + %24 = fdiv double %23, 1.024000e+03 ; [#uses=1] + %25 = fadd double %21, %24 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %19, double %25) + store i32 1, i32* %1 + br label %33 + +; <label>:26 ; preds = %0 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %res, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %27, i32 %28) + store i32 1, i32* %1 + br label %33 + +; <label>:29 ; preds = %0 + %30 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %31 = load i32* %res, align 4 ; [#uses=1] + %32 = sitofp i32 %31 to double ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %30, double %32) + store i32 1, i32* %1 + br label %33 + +; <label>:33 ; preds = %29, %26, %16 + %34 = load i32* %1 ; [#uses=1] + ret i32 %34 +} + +; [#uses=1] +define internal i32 @_Z11luaB_dofileP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %fname = alloca i8*, align 4 ; [#uses=2] + %n = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 1, i8* null, i32* null) ; [#uses=1] + store i8* %3, i8** %fname, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %4) ; [#uses=1] + store i32 %5, i32* %n, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %fname, align 4 ; [#uses=1] + %8 = call i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %6, i8* %7) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z9lua_errorP9lua_State(%struct.lua_State* %11) ; [#uses=0] + br label %13 + +; <label>:13 ; preds = %10, %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %14, i32 0, i32 -1) + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %15) ; [#uses=1] + %17 = load i32* %n, align 4 ; [#uses=1] + %18 = sub nsw i32 %16, %17 ; [#uses=1] + ret i32 %18 +} + +; [#uses=1] +define internal i32 @_Z10luaB_errorP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %level = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %2, i32 2, i32 1) ; [#uses=1] + store i32 %3, i32* %level, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %4, i32 1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %5, i32 1) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %16 + +; <label>:8 ; preds = %0 + %9 = load i32* %level, align 4 ; [#uses=1] + %10 = icmp sgt i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %16 + +; <label>:11 ; preds = %8 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %level, align 4 ; [#uses=1] + call void @_Z10luaL_whereP9lua_Statei(%struct.lua_State* %12, i32 %13) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %14, i32 1) + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %15, i32 2) + br label %16 + +; <label>:16 ; preds = %11, %8, %0 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = call i32 @_Z9lua_errorP9lua_State(%struct.lua_State* %17) ; [#uses=1] + ret i32 %18 +} + +; [#uses=1] +define internal i32 @_Z11luaB_gcinfoP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z6lua_gcP9lua_Stateii(%struct.lua_State* %3, i32 3, i32 0) ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %2, i32 %4) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z12luaB_getfenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7getfuncP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %3, i32 -1) ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %8 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %7, i32 -10002) + br label %10 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_getfenvP9lua_Statei(%struct.lua_State* %9, i32 -1) + br label %10 + +; <label>:10 ; preds = %8, %6 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z17luaB_getmetatableP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 1) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %9, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %8) + store i32 1, i32* %1 + br label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call i32 @_Z17luaL_getmetafieldP9lua_StateiPKc(%struct.lua_State* %10, i32 1, i8* getelementptr inbounds ([12 x i8]* @.str56, i32 0, i32 0)) ; [#uses=0] + store i32 1, i32* %1 + br label %12 + +; <label>:12 ; preds = %9, %7 + %13 = load i32* %1 ; [#uses=1] + ret i32 %13 +} + +; [#uses=1] +define internal i32 @_Z13luaB_loadfileP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %fname = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 1, i8* null, i32* null) ; [#uses=1] + store i8* %3, i8** %fname, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load i8** %fname, align 4 ; [#uses=1] + %7 = call i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %5, i8* %6) ; [#uses=1] + %8 = call i32 @_Z8load_auxP9lua_Statei(%struct.lua_State* %4, i32 %7) ; [#uses=1] + ret i32 %8 +} + +; [#uses=1] +define internal i32 @_Z9luaB_loadP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %status = alloca i32, align 4 ; [#uses=2] + %cname = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 2, i8* getelementptr inbounds ([8 x i8]* @.str67, i32 0, i32 0), i32* null) ; [#uses=1] + store i8* %3, i8** %cname, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 6) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %5, i32 3) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %cname, align 4 ; [#uses=1] + %8 = call i32 @_Z8lua_loadP9lua_StatePFPKcS0_PvPjES3_S2_(%struct.lua_State* %6, i8* (%struct.lua_State*, i8*, i32*)* @_Z14generic_readerP9lua_StatePvPj, i8* null, i8* %7) ; [#uses=1] + store i32 %8, i32* %status, align 4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %status, align 4 ; [#uses=1] + %11 = call i32 @_Z8load_auxP9lua_Statei(%struct.lua_State* %9, i32 %10) ; [#uses=1] + ret i32 %11 +} + +; [#uses=1] +define internal i32 @_Z15luaB_loadstringP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %l = alloca i32, align 4 ; [#uses=2] + %s = alloca i8*, align 4 ; [#uses=3] + %chunkname = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %s, align 4 ; [#uses=1] + %6 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %4, i32 2, i8* %5, i32* null) ; [#uses=1] + store i8* %6, i8** %chunkname, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i8** %s, align 4 ; [#uses=1] + %10 = load i32* %l, align 4 ; [#uses=1] + %11 = load i8** %chunkname, align 4 ; [#uses=1] + %12 = call i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %8, i8* %9, i32 %10, i8* %11) ; [#uses=1] + %13 = call i32 @_Z8load_auxP9lua_Statei(%struct.lua_State* %7, i32 %12) ; [#uses=1] + ret i32 %13 +} + +; [#uses=2] +define internal i32 @_Z9luaB_nextP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %4, i32 2) + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_nextP9lua_Statei(%struct.lua_State* %5, i32 1) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + store i32 2, i32* %1 + br label %11 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %10) + store i32 1, i32* %1 + br label %11 + +; <label>:11 ; preds = %9, %8 + %12 = load i32* %1 ; [#uses=1] + ret i32 %12 +} + +; [#uses=1] +define internal i32 @_Z10luaB_pcallP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %4) ; [#uses=1] + %6 = sub nsw i32 %5, 1 ; [#uses=1] + %7 = call i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %3, i32 %6, i32 -1, i32 0) ; [#uses=1] + store i32 %7, i32* %status, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i32* %status, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + %11 = zext i1 %10 to i32 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %8, i32 %11) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %12, i32 1) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %13) ; [#uses=1] + ret i32 %14 +} + +; [#uses=1] +define internal i32 @_Z10luaB_printP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %n = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=6] + %s = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %3) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %5, i32 -10002, i8* getelementptr inbounds ([9 x i8]* @.str20288, i32 0, i32 0)) + store i32 1, i32* %i, align 4 + br label %6 + +; <label>:6 ; preds = %33, %0 + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = load i32* %n, align 4 ; [#uses=1] + %9 = icmp sle i32 %7, %8 ; [#uses=1] + br i1 %9, label %10, label %36 + +; <label>:10 ; preds = %6 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %11, i32 -1) + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load i32* %i, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %12, i32 %13) + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %14, i32 1, i32 1) + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %15, i32 -1, i32* null) ; [#uses=1] + store i8* %16, i8** %s, align 4 + %17 = load i8** %s, align 4 ; [#uses=1] + %18 = icmp eq i8* %17, null ; [#uses=1] + br i1 %18, label %19, label %22 + +; <label>:19 ; preds = %10 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %20, i8* getelementptr inbounds ([43 x i8]* @.str64, i32 0, i32 0)) ; [#uses=1] + store i32 %21, i32* %1 + br label %39 + +; <label>:22 ; preds = %10 + %23 = load i32* %i, align 4 ; [#uses=1] + %24 = icmp sgt i32 %23, 1 ; [#uses=1] + br i1 %24, label %25, label %28 + +; <label>:25 ; preds = %22 + %26 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %27 = call i32 @fputs(i8* getelementptr inbounds ([2 x i8]* @.str65, i32 0, i32 0), %struct._IO_FILE* %26) ; [#uses=0] + br label %28 + +; <label>:28 ; preds = %25, %22 + %29 = load i8** %s, align 4 ; [#uses=1] + %30 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %31 = call i32 @fputs(i8* %29, %struct._IO_FILE* %30) ; [#uses=0] + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %32, i32 -2) + br label %33 + +; <label>:33 ; preds = %28 + %34 = load i32* %i, align 4 ; [#uses=1] + %35 = add nsw i32 %34, 1 ; [#uses=1] + store i32 %35, i32* %i, align 4 + br label %6 + +; <label>:36 ; preds = %6 + %37 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + %38 = call i32 @fputs(i8* getelementptr inbounds ([2 x i8]* @.str66, i32 0, i32 0), %struct._IO_FILE* %37) ; [#uses=0] + store i32 0, i32* %1 + br label %39 + +; <label>:39 ; preds = %36, %19 + %40 = load i32* %1 ; [#uses=1] + ret i32 %40 +} + +; [#uses=1] +define internal i32 @_Z13luaB_rawequalP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 2) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z12lua_rawequalP9lua_Stateii(%struct.lua_State* %5, i32 1, i32 2) ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %4, i32 %6) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11luaB_rawgetP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 2) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %4, i32 2) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %5, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11luaB_rawsetP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 2) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %4, i32 3) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %5, i32 3) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawsetP9lua_Statei(%struct.lua_State* %6, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11luaB_selectP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %n = alloca i32, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %3) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %5, i32 1) ; [#uses=1] + %7 = icmp eq i32 %6, 4 ; [#uses=1] + br i1 %7, label %8, label %18 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %9, i32 1, i32* null) ; [#uses=1] + %11 = load i8* %10 ; [#uses=1] + %12 = sext i8 %11 to i32 ; [#uses=1] + %13 = icmp eq i32 %12, 35 ; [#uses=1] + br i1 %13, label %14, label %18 + +; <label>:14 ; preds = %8 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i32* %n, align 4 ; [#uses=1] + %17 = sub nsw i32 %16, 1 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %15, i32 %17) + store i32 1, i32* %1 + br label %46 + +; <label>:18 ; preds = %8, %0 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %19, i32 1) ; [#uses=1] + store i32 %20, i32* %i, align 4 + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = icmp slt i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %27 + +; <label>:23 ; preds = %18 + %24 = load i32* %n, align 4 ; [#uses=1] + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = add nsw i32 %24, %25 ; [#uses=1] + store i32 %26, i32* %i, align 4 + br label %34 + +; <label>:27 ; preds = %18 + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = load i32* %n, align 4 ; [#uses=1] + %30 = icmp sgt i32 %28, %29 ; [#uses=1] + br i1 %30, label %31, label %33 + +; <label>:31 ; preds = %27 + %32 = load i32* %n, align 4 ; [#uses=1] + store i32 %32, i32* %i, align 4 + br label %33 + +; <label>:33 ; preds = %31, %27 + br label %34 + +; <label>:34 ; preds = %33, %23 + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = icmp sle i32 1, %35 ; [#uses=1] + br i1 %36, label %41, label %37 + +; <label>:37 ; preds = %34 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %38, i32 1, i8* getelementptr inbounds ([19 x i8]* @.str63, i32 0, i32 0)) ; [#uses=1] + %40 = icmp ne i32 %39, 0 ; [#uses=1] + br label %41 + +; <label>:41 ; preds = %37, %34 + %42 = phi i1 [ true, %34 ], [ %40, %37 ] ; [#uses=0] + %43 = load i32* %n, align 4 ; [#uses=1] + %44 = load i32* %i, align 4 ; [#uses=1] + %45 = sub nsw i32 %43, %44 ; [#uses=1] + store i32 %45, i32* %1 + br label %46 + +; <label>:46 ; preds = %41, %14 + %47 = load i32* %1 ; [#uses=1] + ret i32 %47 +} + +; [#uses=1] +define internal i32 @_Z12luaB_setfenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=12] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 2, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z7getfuncP9lua_Statei(%struct.lua_State* %4, i32 0) + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %5, i32 2) + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %6, i32 1) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %19 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %10, i32 1) ; [#uses=1] + %12 = fcmp oeq double %11, 0.000000e+00 ; [#uses=1] + br i1 %12, label %13, label %19 + +; <label>:13 ; preds = %9 + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = call i32 @_Z14lua_pushthreadP9lua_State(%struct.lua_State* %14) ; [#uses=0] + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %16, i32 -2) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %17, i32 -2) ; [#uses=0] + store i32 0, i32* %1 + br label %32 + +; <label>:19 ; preds = %9, %0 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = call i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %20, i32 -2) ; [#uses=1] + %22 = icmp ne i32 %21, 0 ; [#uses=1] + br i1 %22, label %27, label %23 + +; <label>:23 ; preds = %19 + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %24, i32 -2) ; [#uses=1] + %26 = icmp eq i32 %25, 0 ; [#uses=1] + br i1 %26, label %27, label %30 + +; <label>:27 ; preds = %23, %19 + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %29 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %28, i8* getelementptr inbounds ([52 x i8]* @.str58, i32 0, i32 0)) ; [#uses=0] + br label %30 + +; <label>:30 ; preds = %27, %23 + br label %31 + +; <label>:31 ; preds = %30 + store i32 1, i32* %1 + br label %32 + +; <label>:32 ; preds = %31, %13 + %33 = load i32* %1 ; [#uses=1] + ret i32 %33 +} + +; [#uses=1] +define internal i32 @_Z17luaB_setmetatableP9lua_State(%struct.lua_State* %L) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %t = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %2, i32 2) ; [#uses=1] + store i32 %3, i32* %t, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 5) + %5 = load i32* %t, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %14, label %7 + +; <label>:7 ; preds = %0 + %8 = load i32* %t, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 5 ; [#uses=1] + br i1 %9, label %14, label %10 + +; <label>:10 ; preds = %7 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %11, i32 2, i8* getelementptr inbounds ([22 x i8]* @.str55, i32 0, i32 0)) ; [#uses=1] + %13 = icmp ne i32 %12, 0 ; [#uses=1] + br label %14 + +; <label>:14 ; preds = %10, %7, %0 + %15 = phi i1 [ true, %7 ], [ true, %0 ], [ %13, %10 ] ; [#uses=0] + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call i32 @_Z17luaL_getmetafieldP9lua_StateiPKc(%struct.lua_State* %16, i32 1, i8* getelementptr inbounds ([12 x i8]* @.str56, i32 0, i32 0)) ; [#uses=1] + %18 = icmp ne i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %22 + +; <label>:19 ; preds = %14 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %20, i8* getelementptr inbounds ([36 x i8]* @.str57, i32 0, i32 0)) ; [#uses=0] + br label %22 + +; <label>:22 ; preds = %19, %14 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %23, i32 2) + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %24, i32 1) ; [#uses=0] + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z13luaB_tonumberP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %base = alloca i32, align 4 ; [#uses=5] + %s1 = alloca i8*, align 4 ; [#uses=3] + %s2 = alloca i8*, align 4 ; [#uses=6] + %n = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %3, i32 2, i32 10) ; [#uses=1] + store i32 %4, i32* %base, align 4 + %5 = load i32* %base, align 4 ; [#uses=1] + %6 = icmp eq i32 %5, 10 ; [#uses=1] + br i1 %6, label %7, label %17 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %8, i32 1) + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %9, i32 1) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %16 + +; <label>:12 ; preds = %7 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = call double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %14, i32 1) ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %13, double %15) + store i32 1, i32* %1 + br label %60 + +; <label>:16 ; preds = %7 + br label %58 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %18, i32 1, i32* null) ; [#uses=1] + store i8* %19, i8** %s1, align 4 + %20 = load i32* %base, align 4 ; [#uses=1] + %21 = icmp sle i32 2, %20 ; [#uses=1] + br i1 %21, label %22, label %25 + +; <label>:22 ; preds = %17 + %23 = load i32* %base, align 4 ; [#uses=1] + %24 = icmp sle i32 %23, 36 ; [#uses=1] + br i1 %24, label %29, label %25 + +; <label>:25 ; preds = %22, %17 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %26, i32 2, i8* getelementptr inbounds ([18 x i8]* @.str54, i32 0, i32 0)) ; [#uses=1] + %28 = icmp ne i32 %27, 0 ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %25, %22 + %30 = phi i1 [ true, %22 ], [ %28, %25 ] ; [#uses=0] + %31 = load i8** %s1, align 4 ; [#uses=1] + %32 = load i32* %base, align 4 ; [#uses=1] + %33 = call i32 @strtoul(i8* %31, i8** %s2, i32 %32) nounwind ; [#uses=1] + store i32 %33, i32* %n, align 4 + %34 = load i8** %s1, align 4 ; [#uses=1] + %35 = load i8** %s2, align 4 ; [#uses=1] + %36 = icmp ne i8* %34, %35 ; [#uses=1] + br i1 %36, label %37, label %57 + +; <label>:37 ; preds = %29 + br label %38 + +; <label>:38 ; preds = %44, %37 + %39 = load i8** %s2, align 4 ; [#uses=1] + %40 = load i8* %39 ; [#uses=1] + %41 = zext i8 %40 to i32 ; [#uses=1] + %42 = call i32 @isspace(i32 %41) nounwind ; [#uses=1] + %43 = icmp ne i32 %42, 0 ; [#uses=1] + br i1 %43, label %44, label %47 + +; <label>:44 ; preds = %38 + %45 = load i8** %s2, align 4 ; [#uses=1] + %46 = getelementptr inbounds i8* %45, i32 1 ; [#uses=1] + store i8* %46, i8** %s2, align 4 + br label %38 + +; <label>:47 ; preds = %38 + %48 = load i8** %s2, align 4 ; [#uses=1] + %49 = load i8* %48 ; [#uses=1] + %50 = sext i8 %49 to i32 ; [#uses=1] + %51 = icmp eq i32 %50, 0 ; [#uses=1] + br i1 %51, label %52, label %56 + +; <label>:52 ; preds = %47 + %53 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %54 = load i32* %n, align 4 ; [#uses=1] + %55 = uitofp i32 %54 to double ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %53, double %55) + store i32 1, i32* %1 + br label %60 + +; <label>:56 ; preds = %47 + br label %57 + +; <label>:57 ; preds = %56, %29 + br label %58 + +; <label>:58 ; preds = %57, %16 + %59 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %59) + store i32 1, i32* %1 + br label %60 + +; <label>:60 ; preds = %58, %52, %12 + %61 = load i32* %1 ; [#uses=1] + ret i32 %61 +} + +; [#uses=1] +define internal i32 @_Z13luaB_tostringP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %3, i32 1) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z13luaL_callmetaP9lua_StateiPKc(%struct.lua_State* %4, i32 1, i8* getelementptr inbounds ([11 x i8]* @.str49, i32 0, i32 0)) ; [#uses=1] + %6 = icmp ne i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + store i32 1, i32* %1 + br label %38 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %9, i32 1) ; [#uses=1] + switch i32 %10, label %28 [ + i32 3, label %11 + i32 4, label %15 + i32 1, label %17 + i32 0, label %26 + ] + +; <label>:11 ; preds = %8 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %13, i32 1, i32* null) ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %12, i8* %14) + br label %37 + +; <label>:15 ; preds = %8 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %16, i32 1) + br label %37 + +; <label>:17 ; preds = %8 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %19, i32 1) ; [#uses=1] + %21 = icmp ne i32 %20, 0 ; [#uses=1] + br i1 %21, label %22, label %23 + +; <label>:22 ; preds = %17 + br label %24 + +; <label>:23 ; preds = %17 + br label %24 + +; <label>:24 ; preds = %23, %22 + %25 = phi i8* [ getelementptr inbounds ([5 x i8]* @.str50, i32 0, i32 0), %22 ], [ getelementptr inbounds ([6 x i8]* @.str51, i32 0, i32 0), %23 ] ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %18, i8* %25) + br label %37 + +; <label>:26 ; preds = %8 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %27, i8* getelementptr inbounds ([4 x i8]* @.str52, i32 0, i32 0), i32 3) + br label %37 + +; <label>:28 ; preds = %8 + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %32 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %31, i32 1) ; [#uses=1] + %33 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %30, i32 %32) ; [#uses=1] + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %35 = call i8* @_Z13lua_topointerP9lua_Statei(%struct.lua_State* %34, i32 1) ; [#uses=1] + %36 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %29, i8* getelementptr inbounds ([7 x i8]* @.str53, i32 0, i32 0), i8* %33, i8* %35) ; [#uses=0] + br label %37 + +; <label>:37 ; preds = %28, %26, %24, %15, %11 + store i32 1, i32* %1 + br label %38 + +; <label>:38 ; preds = %37, %7 + %39 = load i32* %1 ; [#uses=1] + ret i32 %39 +} + +; [#uses=1] +define internal i32 @_Z9luaB_typeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %5, i32 1) ; [#uses=1] + %7 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %4, i32 %6) ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %3, i8* %7) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11luaB_unpackP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %i = alloca i32, align 4 ; [#uses=7] + %e = alloca i32, align 4 ; [#uses=4] + %n = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %4, i32 2, i32 1) ; [#uses=1] + store i32 %5, i32* %i, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 3) ; [#uses=1] + %8 = icmp sle i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %10, i32 1) ; [#uses=1] + br label %15 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %13, i32 3) ; [#uses=1] + br label %15 + +; <label>:15 ; preds = %12, %9 + %16 = phi i32 [ %11, %9 ], [ %14, %12 ] ; [#uses=1] + store i32 %16, i32* %e, align 4 + %17 = load i32* %i, align 4 ; [#uses=1] + %18 = load i32* %e, align 4 ; [#uses=1] + %19 = icmp sgt i32 %17, %18 ; [#uses=1] + br i1 %19, label %20, label %21 + +; <label>:20 ; preds = %15 + store i32 0, i32* %1 + br label %49 + +; <label>:21 ; preds = %15 + %22 = load i32* %e, align 4 ; [#uses=1] + %23 = load i32* %i, align 4 ; [#uses=1] + %24 = sub nsw i32 %22, %23 ; [#uses=1] + %25 = add nsw i32 %24, 1 ; [#uses=1] + store i32 %25, i32* %n, align 4 + %26 = load i32* %n, align 4 ; [#uses=1] + %27 = icmp sle i32 %26, 0 ; [#uses=1] + br i1 %27, label %33, label %28 + +; <label>:28 ; preds = %21 + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load i32* %n, align 4 ; [#uses=1] + %31 = call i32 @_Z14lua_checkstackP9lua_Statei(%struct.lua_State* %29, i32 %30) ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %36, label %33 + +; <label>:33 ; preds = %28, %21 + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %35 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %34, i8* getelementptr inbounds ([27 x i8]* @.str48, i32 0, i32 0)) ; [#uses=1] + store i32 %35, i32* %1 + br label %49 + +; <label>:36 ; preds = %28 + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %38 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %37, i32 1, i32 %38) + br label %39 + +; <label>:39 ; preds = %44, %36 + %40 = load i32* %i, align 4 ; [#uses=2] + %41 = add nsw i32 %40, 1 ; [#uses=1] + store i32 %41, i32* %i, align 4 + %42 = load i32* %e, align 4 ; [#uses=1] + %43 = icmp slt i32 %40, %42 ; [#uses=1] + br i1 %43, label %44, label %47 + +; <label>:44 ; preds = %39 + %45 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %46 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %45, i32 1, i32 %46) + br label %39 + +; <label>:47 ; preds = %39 + %48 = load i32* %n, align 4 ; [#uses=1] + store i32 %48, i32* %1 + br label %49 + +; <label>:49 ; preds = %47, %33, %20 + %50 = load i32* %1 ; [#uses=1] + ret i32 %50 +} + +; [#uses=1] +define internal i32 @_Z11luaB_xpcallP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %status = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 2) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %3, i32 2) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %4, i32 1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %5, i32 0, i32 -1, i32 1) ; [#uses=1] + store i32 %6, i32* %status, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %status, align 4 ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + %10 = zext i1 %9 to i32 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %7, i32 %10) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %11, i32 1) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %12) ; [#uses=1] + ret i32 %13 +} + +; [#uses=2] +define internal i32 @_Z13luaB_cocreateP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %NL = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct.lua_State* @_Z13lua_newthreadP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %NL, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp eq i32 %5, 6 ; [#uses=1] + br i1 %6, label %7, label %11 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %8, i32 1) ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %15 + +; <label>:11 ; preds = %7, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %12, i32 1, i8* getelementptr inbounds ([22 x i8]* @.str47315, i32 0, i32 0)) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br label %15 + +; <label>:15 ; preds = %11, %7 + %16 = phi i1 [ true, %7 ], [ %14, %11 ] ; [#uses=0] + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %17, i32 1) + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %NL, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %18, %struct.lua_State* %19, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z13luaB_coresumeP9lua_State(%struct.lua_State* %L) { +; <label>:0 + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %co = alloca %struct.lua_State*, align 4 ; [#uses=3] + %r = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct.lua_State* @_Z12lua_tothreadP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %co, align 4 + %5 = load %struct.lua_State** %co, align 4 ; [#uses=1] + %6 = icmp ne %struct.lua_State* %5, null ; [#uses=1] + br i1 %6, label %11, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %8, i32 1, i8* getelementptr inbounds ([19 x i8]* @.str46314, i32 0, i32 0)) ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br label %11 + +; <label>:11 ; preds = %7, %0 + %12 = phi i1 [ true, %0 ], [ %10, %7 ] ; [#uses=0] + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %co, align 4 ; [#uses=1] + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %15) ; [#uses=1] + %17 = sub nsw i32 %16, 1 ; [#uses=1] + %18 = call i32 @_Z9auxresumeP9lua_StateS0_i(%struct.lua_State* %13, %struct.lua_State* %14, i32 %17) ; [#uses=1] + store i32 %18, i32* %r, align 4 + %19 = load i32* %r, align 4 ; [#uses=1] + %20 = icmp slt i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %24 + +; <label>:21 ; preds = %11 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %22, i32 0) + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %23, i32 -2) + store i32 2, i32* %1 + br label %32 + +; <label>:24 ; preds = %11 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %25, i32 1) + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load i32* %r, align 4 ; [#uses=1] + %28 = add nsw i32 %27, 1 ; [#uses=1] + %29 = sub nsw i32 0, %28 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %26, i32 %29) + %30 = load i32* %r, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + store i32 %31, i32* %1 + br label %32 + +; <label>:32 ; preds = %24, %21 + %33 = load i32* %1 ; [#uses=1] + ret i32 %33 +} + +; [#uses=1] +define internal i32 @_Z14luaB_corunningP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z14lua_pushthreadP9lua_State(%struct.lua_State* %2) ; [#uses=1] + %4 = icmp ne i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %6) + br label %7 + +; <label>:7 ; preds = %5, %0 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z13luaB_costatusP9lua_State(%struct.lua_State* %L) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %co = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct.lua_State* @_Z12lua_tothreadP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %co, align 4 + %4 = load %struct.lua_State** %co, align 4 ; [#uses=1] + %5 = icmp ne %struct.lua_State* %4, null ; [#uses=1] + br i1 %5, label %10, label %6 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %7, i32 1, i8* getelementptr inbounds ([19 x i8]* @.str46314, i32 0, i32 0)) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br label %10 + +; <label>:10 ; preds = %6, %0 + %11 = phi i1 [ true, %0 ], [ %9, %6 ] ; [#uses=0] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.lua_State** %co, align 4 ; [#uses=1] + %15 = call i32 @_Z8costatusP9lua_StateS0_(%struct.lua_State* %13, %struct.lua_State* %14) ; [#uses=1] + %16 = getelementptr inbounds [4 x i8*]* @_ZL9statnames, i32 0, i32 %15 ; [#uses=1] + %17 = load i8** %16 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %12, i8* %17) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11luaB_cowrapP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z13luaB_cocreateP9lua_State(%struct.lua_State* %2) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %4, i32 (%struct.lua_State*)* @_Z12luaB_auxwrapP9lua_State, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10luaB_yieldP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %3) ; [#uses=1] + %5 = call i32 @_Z9lua_yieldP9lua_Statei(%struct.lua_State* %2, i32 %4) ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define i32 @_Z12luaopen_baseP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9base_openP9lua_State(%struct.lua_State* %2) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %3, i8* getelementptr inbounds ([10 x i8]* @.str30298, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([7 x %struct.luaL_Reg]* @_ZL8co_funcs, i32 0, i32 0)) + ret i32 2 +} + +; [#uses=1] +define internal void @_Z9base_openP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=15] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %2, i32 -10002) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -10002, i8* getelementptr inbounds ([3 x i8]* @.str31299, i32 0, i32 0)) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %4, i8* getelementptr inbounds ([3 x i8]* @.str31299, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([25 x %struct.luaL_Reg]* @_ZL10base_funcs, i32 0, i32 0)) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %5, i8* getelementptr inbounds ([8 x i8]* @.str32300, i32 0, i32 0), i32 7) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -10002, i8* getelementptr inbounds ([9 x i8]* @.str33301, i32 0, i32 0)) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7auxopenP9lua_StatePKcPFiS0_ES4_(%struct.lua_State* %7, i8* getelementptr inbounds ([7 x i8]* @.str34302, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z11luaB_ipairsP9lua_State, i32 (%struct.lua_State*)* @_Z9ipairsauxP9lua_State) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7auxopenP9lua_StatePKcPFiS0_ES4_(%struct.lua_State* %8, i8* getelementptr inbounds ([6 x i8]* @.str35303, i32 0, i32 0), i32 (%struct.lua_State*)* @_Z10luaB_pairsP9lua_State, i32 (%struct.lua_State*)* @_Z9luaB_nextP9lua_State) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %9, i32 0, i32 1) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %10, i32 -1) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %11, i32 -2) ; [#uses=0] + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %13, i8* getelementptr inbounds ([3 x i8]* @.str36304, i32 0, i32 0), i32 2) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %14, i32 -2, i8* getelementptr inbounds ([7 x i8]* @.str37305, i32 0, i32 0)) + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %15, i32 (%struct.lua_State*)* @_Z13luaB_newproxyP9lua_State, i32 1) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %16, i32 -10002, i8* getelementptr inbounds ([9 x i8]* @.str38306, i32 0, i32 0)) + ret void +} + +; [#uses=2] +define internal void @_Z7auxopenP9lua_StatePKcPFiS0_ES4_(%struct.lua_State* %L, i8* %name, i32 (%struct.lua_State*)* %f, i32 (%struct.lua_State*)* %u) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + %4 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %name, i8** %2, align 4 + store i32 (%struct.lua_State*)* %f, i32 (%struct.lua_State*)** %3, align 4 + store i32 (%struct.lua_State*)* %u, i32 (%struct.lua_State*)** %4, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load i32 (%struct.lua_State*)** %4, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %5, i32 (%struct.lua_State*)* %6, i32 0) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32 (%struct.lua_State*)** %3, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %7, i32 (%struct.lua_State*)* %8, i32 1) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %9, i32 -2, i8* %10) + ret void +} + +; [#uses=1] +define internal i32 @_Z11luaB_ipairsP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %3, i32 -10003) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %4, i32 1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %5, i32 0) + ret i32 3 +} + +; [#uses=1] +define internal i32 @_Z9ipairsauxP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %2, i32 2) ; [#uses=1] + store i32 %3, i32* %i, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 5) + %5 = load i32* %i, align 4 ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + store i32 %6, i32* %i, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %i, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %7, i32 %8) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %9, i32 1, i32 %10) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %11, i32 -1) ; [#uses=1] + %13 = icmp eq i32 %12, 0 ; [#uses=1] + %14 = select i1 %13, i32 0, i32 2 ; [#uses=1] + ret i32 %14 +} + +; [#uses=1] +define internal i32 @_Z10luaB_pairsP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %3, i32 -10003) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %4, i32 1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %5) + ret i32 3 +} + +; [#uses=1] +define internal i32 @_Z13luaB_newproxyP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=16] + %validproxy = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %3, i32 1) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i8* @_Z15lua_newuserdataP9lua_Statej(%struct.lua_State* %4, i32 0) ; [#uses=0] + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %6, i32 1) ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %10 + +; <label>:9 ; preds = %0 + store i32 1, i32* %1 + br label %43 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %11, i32 1) ; [#uses=1] + %13 = icmp eq i32 %12, 1 ; [#uses=1] + br i1 %13, label %14, label %19 + +; <label>:14 ; preds = %10 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %15, i32 0, i32 0) + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %16, i32 -1) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %17, i32 1) + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_rawsetP9lua_Statei(%struct.lua_State* %18, i32 -10003) + br label %39 + +; <label>:19 ; preds = %10 + store i32 0, i32* %validproxy, align 4 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %20, i32 1) ; [#uses=1] + %22 = icmp ne i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %28 + +; <label>:23 ; preds = %19 + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %24, i32 -10003) + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %25, i32 -1) ; [#uses=1] + store i32 %26, i32* %validproxy, align 4 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %27, i32 -2) + br label %28 + +; <label>:28 ; preds = %23, %19 + %29 = load i32* %validproxy, align 4 ; [#uses=1] + %30 = icmp ne i32 %29, 0 ; [#uses=1] + br i1 %30, label %35, label %31 + +; <label>:31 ; preds = %28 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %32, i32 1, i8* getelementptr inbounds ([26 x i8]* @.str39307, i32 0, i32 0)) ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br label %35 + +; <label>:35 ; preds = %31, %28 + %36 = phi i1 [ true, %28 ], [ %34, %31 ] ; [#uses=0] + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %38 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %37, i32 1) ; [#uses=0] + br label %39 + +; <label>:39 ; preds = %35, %14 + br label %40 + +; <label>:40 ; preds = %39 + %41 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %42 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %41, i32 2) ; [#uses=0] + store i32 1, i32* %1 + br label %43 + +; <label>:43 ; preds = %40, %9 + %44 = load i32* %1 ; [#uses=1] + ret i32 %44 +} + +; [#uses=1] +define internal i32 @_Z12luaB_auxwrapP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %co = alloca %struct.lua_State*, align 4 ; [#uses=2] + %r = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct.lua_State* @_Z12lua_tothreadP9lua_Statei(%struct.lua_State* %2, i32 -10003) ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %co, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %co, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %6) ; [#uses=1] + %8 = call i32 @_Z9auxresumeP9lua_StateS0_i(%struct.lua_State* %4, %struct.lua_State* %5, i32 %7) ; [#uses=1] + store i32 %8, i32* %r, align 4 + %9 = load i32* %r, align 4 ; [#uses=1] + %10 = icmp slt i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %22 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %12, i32 -1) ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %19 + +; <label>:15 ; preds = %11 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10luaL_whereP9lua_Statei(%struct.lua_State* %16, i32 1) + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %17, i32 -2) + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %18, i32 2) + br label %19 + +; <label>:19 ; preds = %15, %11 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = call i32 @_Z9lua_errorP9lua_State(%struct.lua_State* %20) ; [#uses=0] + br label %22 + +; <label>:22 ; preds = %19, %0 + %23 = load i32* %r, align 4 ; [#uses=1] + ret i32 %23 +} + +; [#uses=2] +define internal i32 @_Z9auxresumeP9lua_StateS0_i(%struct.lua_State* %L, %struct.lua_State* %co, i32 %narg) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %3 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %4 = alloca i32, align 4 ; [#uses=4] + %status = alloca i32, align 4 ; [#uses=6] + %nres = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_State* %co, %struct.lua_State** %3, align 4 + store i32 %narg, i32* %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %7 = call i32 @_Z8costatusP9lua_StateS0_(%struct.lua_State* %5, %struct.lua_State* %6) ; [#uses=1] + store i32 %7, i32* %status, align 4 + %8 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %9 = load i32* %4, align 4 ; [#uses=1] + %10 = call i32 @_Z14lua_checkstackP9lua_Statei(%struct.lua_State* %8, i32 %9) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %15, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([29 x i8]* @.str40308, i32 0, i32 0)) ; [#uses=0] + br label %15 + +; <label>:15 ; preds = %12, %0 + %16 = load i32* %status, align 4 ; [#uses=1] + %17 = icmp ne i32 %16, 1 ; [#uses=1] + br i1 %17, label %18, label %24 + +; <label>:18 ; preds = %15 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i32* %status, align 4 ; [#uses=1] + %21 = getelementptr inbounds [4 x i8*]* @_ZL9statnames, i32 0, i32 %20 ; [#uses=1] + %22 = load i8** %21 ; [#uses=1] + %23 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %19, i8* getelementptr inbounds ([27 x i8]* @.str41309, i32 0, i32 0), i8* %22) ; [#uses=0] + store i32 -1, i32* %1 + br label %57 + +; <label>:24 ; preds = %15 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %27 = load i32* %4, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %25, %struct.lua_State* %26, i32 %27) + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %29 = load %struct.lua_State** %3, align 4 ; [#uses=1] + call void @_Z12lua_setlevelP9lua_StateS0_(%struct.lua_State* %28, %struct.lua_State* %29) + %30 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %31 = load i32* %4, align 4 ; [#uses=1] + %32 = call i32 @_Z10lua_resumeP9lua_Statei(%struct.lua_State* %30, i32 %31) ; [#uses=1] + store i32 %32, i32* %status, align 4 + %33 = load i32* %status, align 4 ; [#uses=1] + %34 = icmp eq i32 %33, 0 ; [#uses=1] + br i1 %34, label %38, label %35 + +; <label>:35 ; preds = %24 + %36 = load i32* %status, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, 1 ; [#uses=1] + br i1 %37, label %38, label %54 + +; <label>:38 ; preds = %35, %24 + %39 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %40 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %39) ; [#uses=1] + store i32 %40, i32* %nres, align 4 + %41 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %42 = load i32* %nres, align 4 ; [#uses=1] + %43 = add nsw i32 %42, 1 ; [#uses=1] + %44 = call i32 @_Z14lua_checkstackP9lua_Statei(%struct.lua_State* %41, i32 %43) ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %49, label %46 + +; <label>:46 ; preds = %38 + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %47, i8* getelementptr inbounds ([27 x i8]* @.str42310, i32 0, i32 0)) ; [#uses=0] + br label %49 + +; <label>:49 ; preds = %46, %38 + %50 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %51 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %52 = load i32* %nres, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %50, %struct.lua_State* %51, i32 %52) + %53 = load i32* %nres, align 4 ; [#uses=1] + store i32 %53, i32* %1 + br label %57 + +; <label>:54 ; preds = %35 + %55 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %56 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %55, %struct.lua_State* %56, i32 1) + store i32 -1, i32* %1 + br label %57 + +; <label>:57 ; preds = %54, %49, %18 + %58 = load i32* %1 ; [#uses=1] + ret i32 %58 +} + +; [#uses=2] +define internal i32 @_Z8costatusP9lua_StateS0_(%struct.lua_State* %L, %struct.lua_State* %co) { + %1 = alloca i32, align 4 ; [#uses=7] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct.lua_State* %co, %struct.lua_State** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %6 = icmp eq %struct.lua_State* %4, %5 ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + store i32 0, i32* %1 + br label %24 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %10 = call i32 @_Z10lua_statusP9lua_State(%struct.lua_State* %9) ; [#uses=1] + switch i32 %10, label %23 [ + i32 1, label %11 + i32 0, label %12 + ] + +; <label>:11 ; preds = %8 + store i32 1, i32* %1 + br label %24 + +; <label>:12 ; preds = %8 + %13 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %14 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %13, i32 0, %struct.lua_Debug* %ar) ; [#uses=1] + %15 = icmp sgt i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %17 + +; <label>:16 ; preds = %12 + store i32 2, i32* %1 + br label %24 + +; <label>:17 ; preds = %12 + %18 = load %struct.lua_State** %3, align 4 ; [#uses=1] + %19 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %18) ; [#uses=1] + %20 = icmp eq i32 %19, 0 ; [#uses=1] + br i1 %20, label %21, label %22 + +; <label>:21 ; preds = %17 + store i32 3, i32* %1 + br label %24 + +; <label>:22 ; preds = %17 + store i32 1, i32* %1 + br label %24 + +; <label>:23 ; preds = %8 + store i32 3, i32* %1 + br label %24 + +; <label>:24 ; preds = %23, %22, %21, %16, %11, %7 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=2] +define internal void @_Z7getfuncP9lua_Statei(%struct.lua_State* %L, i32 %opt) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca i32, align 4 ; [#uses=2] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=2] + %level = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %opt, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = icmp eq i32 %4, 6 ; [#uses=1] + br i1 %5, label %6, label %8 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %7, i32 1) + br label %45 + +; <label>:8 ; preds = %0 + %9 = load i32* %2, align 4 ; [#uses=1] + %10 = icmp ne i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %14 + +; <label>:11 ; preds = %8 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %12, i32 1, i32 1) ; [#uses=1] + br label %17 + +; <label>:14 ; preds = %8 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %15, i32 1) ; [#uses=1] + br label %17 + +; <label>:17 ; preds = %14, %11 + %18 = phi i32 [ %13, %11 ], [ %16, %14 ] ; [#uses=1] + store i32 %18, i32* %level, align 4 + %19 = load i32* %level, align 4 ; [#uses=1] + %20 = icmp sge i32 %19, 0 ; [#uses=1] + br i1 %20, label %25, label %21 + +; <label>:21 ; preds = %17 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %22, i32 1, i8* getelementptr inbounds ([27 x i8]* @.str59, i32 0, i32 0)) ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br label %25 + +; <label>:25 ; preds = %21, %17 + %26 = phi i1 [ true, %17 ], [ %24, %21 ] ; [#uses=0] + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = load i32* %level, align 4 ; [#uses=1] + %29 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %27, i32 %28, %struct.lua_Debug* %ar) ; [#uses=1] + %30 = icmp eq i32 %29, 0 ; [#uses=1] + br i1 %30, label %31, label %34 + +; <label>:31 ; preds = %25 + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %32, i32 1, i8* getelementptr inbounds ([14 x i8]* @.str60, i32 0, i32 0)) ; [#uses=0] + br label %34 + +; <label>:34 ; preds = %31, %25 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %35, i8* getelementptr inbounds ([2 x i8]* @.str61, i32 0, i32 0), %struct.lua_Debug* %ar) ; [#uses=0] + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %37, i32 -1) ; [#uses=1] + %39 = icmp eq i32 %38, 0 ; [#uses=1] + br i1 %39, label %40, label %44 + +; <label>:40 ; preds = %34 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = load i32* %level, align 4 ; [#uses=1] + %43 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %41, i8* getelementptr inbounds ([50 x i8]* @.str62, i32 0, i32 0), i32 %42) ; [#uses=0] + br label %44 + +; <label>:44 ; preds = %40, %34 + br label %45 + +; <label>:45 ; preds = %44, %6 + ret void +} + +; [#uses=3] +define internal i32 @_Z8load_auxP9lua_Statei(%struct.lua_State* %L, i32 %status) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %status, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %7 + +; <label>:6 ; preds = %0 + store i32 1, i32* %1 + br label %10 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %8) + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %9, i32 -2) + store i32 2, i32* %1 + br label %10 + +; <label>:10 ; preds = %7, %6 + %11 = load i32* %1 ; [#uses=1] + ret i32 %11 +} + +; [#uses=1] +define internal i8* @_Z14generic_readerP9lua_StatePvPj(%struct.lua_State* %L, i8* %ud, i32* %size) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %3 = alloca i8*, align 4 ; [#uses=1] + %4 = alloca i32*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %ud, i8** %3, align 4 + store i32* %size, i32** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %5, i32 2, i8* getelementptr inbounds ([26 x i8]* @.str68, i32 0, i32 0)) + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %6, i32 1) + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %7, i32 0, i32 1) + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %8, i32 -1) ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %13 + +; <label>:11 ; preds = %0 + %12 = load i32** %4, align 4 ; [#uses=1] + store i32 0, i32* %12 + store i8* null, i8** %1 + br label %27 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %15 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %14, i32 -1) ; [#uses=1] + %16 = icmp ne i32 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %22 + +; <label>:17 ; preds = %13 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %18, i32 3) + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i32** %4, align 4 ; [#uses=1] + %21 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %19, i32 3, i32* %20) ; [#uses=1] + store i8* %21, i8** %1 + br label %27 + +; <label>:22 ; preds = %13 + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %24 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %23, i8* getelementptr inbounds ([37 x i8]* @.str69, i32 0, i32 0)) ; [#uses=0] + br label %25 + +; <label>:25 ; preds = %22 + br label %26 + +; <label>:26 ; preds = %25 + store i8* null, i8** %1 + br label %27 + +; <label>:27 ; preds = %26, %17, %11 + %28 = load i8** %1 ; [#uses=1] + ret i8* %28 +} + +; [#uses=1] +define internal i32 @_Z8db_debugP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %buffer = alloca [250 x i8], align 1 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + br label %2 + +; <label>:2 ; preds = %32, %0 + %3 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %4 = call i32 @fputs(i8* getelementptr inbounds ([12 x i8]* @.str50368, i32 0, i32 0), %struct._IO_FILE* %3) ; [#uses=0] + %5 = getelementptr inbounds [250 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] + %6 = load %struct._IO_FILE** @stdin, align 4 ; [#uses=1] + %7 = call i8* @fgets(i8* %5, i32 250, %struct._IO_FILE* %6) ; [#uses=1] + %8 = icmp eq i8* %7, null ; [#uses=1] + br i1 %8, label %13, label %9 + +; <label>:9 ; preds = %2 + %10 = getelementptr inbounds [250 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] + %11 = call i32 @strcmp(i8* %10, i8* getelementptr inbounds ([6 x i8]* @.str51369, i32 0, i32 0)) nounwind readonly ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %14 + +; <label>:13 ; preds = %9, %2 + ret i32 0 + +; <label>:14 ; preds = %9 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = getelementptr inbounds [250 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] + %17 = getelementptr inbounds [250 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] + %18 = call i32 @strlen(i8* %17) ; [#uses=1] + %19 = call i32 @_Z15luaL_loadbufferP9lua_StatePKcjS2_(%struct.lua_State* %15, i8* %16, i32 %18, i8* getelementptr inbounds ([17 x i8]* @.str52370, i32 0, i32 0)) ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br i1 %20, label %25, label %21 + +; <label>:21 ; preds = %14 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = call i32 @_Z9lua_pcallP9lua_Stateiii(%struct.lua_State* %22, i32 0, i32 0, i32 0) ; [#uses=1] + %24 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %24, label %25, label %32 + +; <label>:25 ; preds = %21, %14 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %26, i32 -1, i32* null) ; [#uses=1] + %28 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %29 = call i32 @fputs(i8* %27, %struct._IO_FILE* %28) ; [#uses=0] + %30 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + %31 = call i32 @fputs(i8* getelementptr inbounds ([2 x i8]* @.str15333, i32 0, i32 0), %struct._IO_FILE* %30) ; [#uses=0] + br label %32 + +; <label>:32 ; preds = %25, %21 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %33, i32 0) + br label %2 +} + +; [#uses=1] +define internal i32 @_Z10db_getfenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_getfenvP9lua_Statei(%struct.lua_State* %2, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10db_gethookP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %arg = alloca i32, align 4 ; [#uses=1] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %buff = alloca [5 x i8], align 1 ; [#uses=1] + %mask = alloca i32, align 4 ; [#uses=2] + %hook = alloca void (%struct.lua_State*, %struct.lua_Debug*)*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %2, i32* %arg) ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %L1, align 4 + %4 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %5 = call i32 @_Z15lua_gethookmaskP9lua_State(%struct.lua_State* %4) ; [#uses=1] + store i32 %5, i32* %mask, align 4 + %6 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %7 = call void (%struct.lua_State*, %struct.lua_Debug*)* (%struct.lua_State*)* @_Z11lua_gethookP9lua_State(%struct.lua_State* %6) ; [#uses=1] + store void (%struct.lua_State*, %struct.lua_Debug*)* %7, void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 + %8 = load void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 ; [#uses=1] + %9 = icmp ne void (%struct.lua_State*, %struct.lua_Debug*)* %8, null ; [#uses=1] + br i1 %9, label %10, label %15 + +; <label>:10 ; preds = %0 + %11 = load void (%struct.lua_State*, %struct.lua_Debug*)** %hook, align 4 ; [#uses=1] + %12 = icmp ne void (%struct.lua_State*, %struct.lua_Debug*)* %11, @_Z5hookfP9lua_StateP9lua_Debug ; [#uses=1] + br i1 %12, label %13, label %15 + +; <label>:13 ; preds = %10 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %14, i8* getelementptr inbounds ([14 x i8]* @.str49367, i32 0, i32 0), i32 13) + br label %22 + +; <label>:15 ; preds = %10, %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12gethooktableP9lua_State(%struct.lua_State* %16) + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %19 = bitcast %struct.lua_State* %18 to i8* ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %17, i8* %19) + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %20, i32 -2) + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %21, i32 -2) + br label %22 + +; <label>:22 ; preds = %15, %13 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load i32* %mask, align 4 ; [#uses=1] + %25 = getelementptr inbounds [5 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %26 = call i8* @_Z10unmakemaskiPc(i32 %24, i8* %25) ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %23, i8* %26) + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %29 = call i32 @_Z16lua_gethookcountP9lua_State(%struct.lua_State* %28) ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %27, i32 %29) + ret i32 3 +} + +; [#uses=1] +define internal i32 @_Z10db_getinfoP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=25] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=11] + %arg = alloca i32, align 4 ; [#uses=8] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %options = alloca i8*, align 4 ; [#uses=10] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %3, i32* %arg) ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L1, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %arg, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 2 ; [#uses=1] + %8 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %5, i32 %7, i8* getelementptr inbounds ([6 x i8]* @.str34352, i32 0, i32 0), i32* null) ; [#uses=1] + store i8* %8, i8** %options, align 4 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = load i32* %arg, align 4 ; [#uses=1] + %11 = add nsw i32 %10, 1 ; [#uses=1] + %12 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %9, i32 %11) ; [#uses=1] + %13 = icmp ne i32 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %25 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load i32* %arg, align 4 ; [#uses=1] + %18 = add nsw i32 %17, 1 ; [#uses=1] + %19 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %16, i32 %18) ; [#uses=1] + %20 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %15, i32 %19, %struct.lua_Debug* %ar) ; [#uses=1] + %21 = icmp ne i32 %20, 0 ; [#uses=1] + br i1 %21, label %24, label %22 + +; <label>:22 ; preds = %14 + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %23) + store i32 1, i32* %1 + br label %121 + +; <label>:24 ; preds = %14 + br label %48 + +; <label>:25 ; preds = %0 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load i32* %arg, align 4 ; [#uses=1] + %28 = add nsw i32 %27, 1 ; [#uses=1] + %29 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %26, i32 %28) ; [#uses=1] + %30 = icmp eq i32 %29, 6 ; [#uses=1] + br i1 %30, label %31, label %42 + +; <label>:31 ; preds = %25 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = load i8** %options, align 4 ; [#uses=1] + %34 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %32, i8* getelementptr inbounds ([4 x i8]* @.str35353, i32 0, i32 0), i8* %33) ; [#uses=0] + %35 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %36 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %35, i32 -1, i32* null) ; [#uses=1] + store i8* %36, i8** %options, align 4 + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %38 = load i32* %arg, align 4 ; [#uses=1] + %39 = add nsw i32 %38, 1 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %37, i32 %39) + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %40, %struct.lua_State* %41, i32 1) + br label %47 + +; <label>:42 ; preds = %25 + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %44 = load i32* %arg, align 4 ; [#uses=1] + %45 = add nsw i32 %44, 1 ; [#uses=1] + %46 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %43, i32 %45, i8* getelementptr inbounds ([27 x i8]* @.str36354, i32 0, i32 0)) ; [#uses=1] + store i32 %46, i32* %1 + br label %121 + +; <label>:47 ; preds = %31 + br label %48 + +; <label>:48 ; preds = %47, %24 + %49 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %50 = load i8** %options, align 4 ; [#uses=1] + %51 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %49, i8* %50, %struct.lua_Debug* %ar) ; [#uses=1] + %52 = icmp ne i32 %51, 0 ; [#uses=1] + br i1 %52, label %58, label %53 + +; <label>:53 ; preds = %48 + %54 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %55 = load i32* %arg, align 4 ; [#uses=1] + %56 = add nsw i32 %55, 2 ; [#uses=1] + %57 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %54, i32 %56, i8* getelementptr inbounds ([15 x i8]* @.str37355, i32 0, i32 0)) ; [#uses=1] + store i32 %57, i32* %1 + br label %121 + +; <label>:58 ; preds = %48 + %59 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %59, i32 0, i32 2) + %60 = load i8** %options, align 4 ; [#uses=1] + %61 = call i8* @strchr(i8* %60, i32 83) ; [#uses=1] + %62 = icmp ne i8* %61, null ; [#uses=1] + br i1 %62, label %63, label %79 + +; <label>:63 ; preds = %58 + %64 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 4 ; [#uses=1] + %66 = load i8** %65, align 4 ; [#uses=1] + call void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %64, i8* getelementptr inbounds ([7 x i8]* @.str38356, i32 0, i32 0), i8* %66) + %67 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 9 ; [#uses=1] + %69 = getelementptr inbounds [60 x i8]* %68, i32 0, i32 0 ; [#uses=1] + call void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %67, i8* getelementptr inbounds ([10 x i8]* @.str39357, i32 0, i32 0), i8* %69) + %70 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %71 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 7 ; [#uses=1] + %72 = load i32* %71, align 4 ; [#uses=1] + call void @_Z8settabsiP9lua_StatePKci(%struct.lua_State* %70, i8* getelementptr inbounds ([12 x i8]* @.str40358, i32 0, i32 0), i32 %72) + %73 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 8 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + call void @_Z8settabsiP9lua_StatePKci(%struct.lua_State* %73, i8* getelementptr inbounds ([16 x i8]* @.str41359, i32 0, i32 0), i32 %75) + %76 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %77 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 3 ; [#uses=1] + %78 = load i8** %77, align 4 ; [#uses=1] + call void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %76, i8* getelementptr inbounds ([5 x i8]* @.str42360, i32 0, i32 0), i8* %78) + br label %79 + +; <label>:79 ; preds = %63, %58 + %80 = load i8** %options, align 4 ; [#uses=1] + %81 = call i8* @strchr(i8* %80, i32 108) ; [#uses=1] + %82 = icmp ne i8* %81, null ; [#uses=1] + br i1 %82, label %83, label %87 + +; <label>:83 ; preds = %79 + %84 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %85 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + %86 = load i32* %85, align 4 ; [#uses=1] + call void @_Z8settabsiP9lua_StatePKci(%struct.lua_State* %84, i8* getelementptr inbounds ([12 x i8]* @.str43361, i32 0, i32 0), i32 %86) + br label %87 + +; <label>:87 ; preds = %83, %79 + %88 = load i8** %options, align 4 ; [#uses=1] + %89 = call i8* @strchr(i8* %88, i32 117) ; [#uses=1] + %90 = icmp ne i8* %89, null ; [#uses=1] + br i1 %90, label %91, label %95 + +; <label>:91 ; preds = %87 + %92 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %93 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 6 ; [#uses=1] + %94 = load i32* %93, align 4 ; [#uses=1] + call void @_Z8settabsiP9lua_StatePKci(%struct.lua_State* %92, i8* getelementptr inbounds ([5 x i8]* @.str44362, i32 0, i32 0), i32 %94) + br label %95 + +; <label>:95 ; preds = %91, %87 + %96 = load i8** %options, align 4 ; [#uses=1] + %97 = call i8* @strchr(i8* %96, i32 110) ; [#uses=1] + %98 = icmp ne i8* %97, null ; [#uses=1] + br i1 %98, label %99, label %106 + +; <label>:99 ; preds = %95 + %100 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %101 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + %102 = load i8** %101, align 4 ; [#uses=1] + call void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %100, i8* getelementptr inbounds ([5 x i8]* @.str45363, i32 0, i32 0), i8* %102) + %103 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %104 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 2 ; [#uses=1] + %105 = load i8** %104, align 4 ; [#uses=1] + call void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %103, i8* getelementptr inbounds ([9 x i8]* @.str46364, i32 0, i32 0), i8* %105) + br label %106 + +; <label>:106 ; preds = %99, %95 + %107 = load i8** %options, align 4 ; [#uses=1] + %108 = call i8* @strchr(i8* %107, i32 76) ; [#uses=1] + %109 = icmp ne i8* %108, null ; [#uses=1] + br i1 %109, label %110, label %113 + +; <label>:110 ; preds = %106 + %111 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %112 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + call void @_Z16treatstackoptionP9lua_StateS0_PKc(%struct.lua_State* %111, %struct.lua_State* %112, i8* getelementptr inbounds ([12 x i8]* @.str47365, i32 0, i32 0)) + br label %113 + +; <label>:113 ; preds = %110, %106 + %114 = load i8** %options, align 4 ; [#uses=1] + %115 = call i8* @strchr(i8* %114, i32 102) ; [#uses=1] + %116 = icmp ne i8* %115, null ; [#uses=1] + br i1 %116, label %117, label %120 + +; <label>:117 ; preds = %113 + %118 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %119 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + call void @_Z16treatstackoptionP9lua_StateS0_PKc(%struct.lua_State* %118, %struct.lua_State* %119, i8* getelementptr inbounds ([5 x i8]* @.str48366, i32 0, i32 0)) + br label %120 + +; <label>:120 ; preds = %117, %113 + store i32 1, i32* %1 + br label %121 + +; <label>:121 ; preds = %120, %53, %42, %22 + %122 = load i32* %1 ; [#uses=1] + ret i32 %122 +} + +; [#uses=1] +define internal i32 @_Z11db_getlocalP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %arg = alloca i32, align 4 ; [#uses=4] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=2] + %name = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %3, i32* %arg) ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L1, align 4 + %5 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load i32* %arg, align 4 ; [#uses=1] + %8 = add nsw i32 %7, 1 ; [#uses=1] + %9 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %6, i32 %8) ; [#uses=1] + %10 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %5, i32 %9, %struct.lua_Debug* %ar) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %17, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load i32* %arg, align 4 ; [#uses=1] + %15 = add nsw i32 %14, 1 ; [#uses=1] + %16 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %13, i32 %15, i8* getelementptr inbounds ([19 x i8]* @.str27345, i32 0, i32 0)) ; [#uses=1] + store i32 %16, i32* %1 + br label %34 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i32* %arg, align 4 ; [#uses=1] + %21 = add nsw i32 %20, 2 ; [#uses=1] + %22 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %19, i32 %21) ; [#uses=1] + %23 = call i8* @_Z12lua_getlocalP9lua_StatePK9lua_Debugi(%struct.lua_State* %18, %struct.lua_Debug* %ar, i32 %22) ; [#uses=1] + store i8* %23, i8** %name, align 4 + %24 = load i8** %name, align 4 ; [#uses=1] + %25 = icmp ne i8* %24, null ; [#uses=1] + br i1 %25, label %26, label %32 + +; <label>:26 ; preds = %17 + %27 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %27, %struct.lua_State* %28, i32 1) + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load i8** %name, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %29, i8* %30) + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %31, i32 -2) + store i32 2, i32* %1 + br label %34 + +; <label>:32 ; preds = %17 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %33) + store i32 1, i32* %1 + br label %34 + +; <label>:34 ; preds = %32, %26, %12 + %35 = load i32* %1 ; [#uses=1] + ret i32 %35 +} + +; [#uses=1] +define internal i32 @_Z14db_getregistryP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %2, i32 -10000) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z15db_getmetatableP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %8, label %6 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %7) + br label %8 + +; <label>:8 ; preds = %6, %0 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z13db_getupvalueP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z10auxupvalueP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z10db_setfenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 2, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %3, i32 2) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %10 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %8, i8* getelementptr inbounds ([52 x i8]* @.str33351, i32 0, i32 0)) ; [#uses=0] + br label %10 + +; <label>:10 ; preds = %7, %0 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10db_sethookP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %arg = alloca i32, align 4 ; [#uses=7] + %mask = alloca i32, align 4 ; [#uses=3] + %count = alloca i32, align 4 ; [#uses=4] + %func = alloca void (%struct.lua_State*, %struct.lua_Debug*)*, align 4 ; [#uses=3] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %smask = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %2, i32* %arg) ; [#uses=1] + store %struct.lua_State* %3, %struct.lua_State** %L1, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %arg, align 4 ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 %6) ; [#uses=1] + %8 = icmp sle i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %13 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i32* %arg, align 4 ; [#uses=1] + %12 = add nsw i32 %11, 1 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %10, i32 %12) + store void (%struct.lua_State*, %struct.lua_Debug*)* null, void (%struct.lua_State*, %struct.lua_Debug*)** %func, align 4 + store i32 0, i32* %mask, align 4 + store i32 0, i32* %count, align 4 + br label %28 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %arg, align 4 ; [#uses=1] + %16 = add nsw i32 %15, 2 ; [#uses=1] + %17 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %14, i32 %16, i32* null) ; [#uses=1] + store i8* %17, i8** %smask, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i32* %arg, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 1 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %18, i32 %20, i32 6) + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load i32* %arg, align 4 ; [#uses=1] + %23 = add nsw i32 %22, 3 ; [#uses=1] + %24 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %21, i32 %23, i32 0) ; [#uses=1] + store i32 %24, i32* %count, align 4 + store void (%struct.lua_State*, %struct.lua_Debug*)* @_Z5hookfP9lua_StateP9lua_Debug, void (%struct.lua_State*, %struct.lua_Debug*)** %func, align 4 + %25 = load i8** %smask, align 4 ; [#uses=1] + %26 = load i32* %count, align 4 ; [#uses=1] + %27 = call i32 @_Z8makemaskPKci(i8* %25, i32 %26) ; [#uses=1] + store i32 %27, i32* %mask, align 4 + br label %28 + +; <label>:28 ; preds = %13, %9 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12gethooktableP9lua_State(%struct.lua_State* %29) + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %32 = bitcast %struct.lua_State* %31 to i8* ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %30, i8* %32) + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = load i32* %arg, align 4 ; [#uses=1] + %35 = add nsw i32 %34, 1 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %33, i32 %35) + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawsetP9lua_Statei(%struct.lua_State* %36, i32 -3) + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %37, i32 -2) + %38 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %39 = load void (%struct.lua_State*, %struct.lua_Debug*)** %func, align 4 ; [#uses=1] + %40 = load i32* %mask, align 4 ; [#uses=1] + %41 = load i32* %count, align 4 ; [#uses=1] + %42 = call i32 @_Z11lua_sethookP9lua_StatePFvS0_P9lua_DebugEii(%struct.lua_State* %38, void (%struct.lua_State*, %struct.lua_Debug*)* %39, i32 %40, i32 %41) ; [#uses=0] + ret i32 0 +} + +; [#uses=1] +define internal i32 @_Z11db_setlocalP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %arg = alloca i32, align 4 ; [#uses=6] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %3, i32* %arg) ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L1, align 4 + %5 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load i32* %arg, align 4 ; [#uses=1] + %8 = add nsw i32 %7, 1 ; [#uses=1] + %9 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %6, i32 %8) ; [#uses=1] + %10 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %5, i32 %9, %struct.lua_Debug* %ar) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %17, label %12 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load i32* %arg, align 4 ; [#uses=1] + %15 = add nsw i32 %14, 1 ; [#uses=1] + %16 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %13, i32 %15, i8* getelementptr inbounds ([19 x i8]* @.str27345, i32 0, i32 0)) ; [#uses=1] + store i32 %16, i32* %1 + br label %33 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = load i32* %arg, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 3 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %18, i32 %20) + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = load i32* %arg, align 4 ; [#uses=1] + %23 = add nsw i32 %22, 3 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %21, i32 %23) + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %24, %struct.lua_State* %25, i32 1) + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %29 = load i32* %arg, align 4 ; [#uses=1] + %30 = add nsw i32 %29, 2 ; [#uses=1] + %31 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %28, i32 %30) ; [#uses=1] + %32 = call i8* @_Z12lua_setlocalP9lua_StatePK9lua_Debugi(%struct.lua_State* %27, %struct.lua_Debug* %ar, i32 %31) ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %26, i8* %32) + store i32 1, i32* %1 + br label %33 + +; <label>:33 ; preds = %17, %12 + %34 = load i32* %1 ; [#uses=1] + ret i32 %34 +} + +; [#uses=1] +define internal i32 @_Z15db_setmetatableP9lua_State(%struct.lua_State* %L) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %t = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %2, i32 2) ; [#uses=1] + store i32 %3, i32* %t, align 4 + %4 = load i32* %t, align 4 ; [#uses=1] + %5 = icmp eq i32 %4, 0 ; [#uses=1] + br i1 %5, label %13, label %6 + +; <label>:6 ; preds = %0 + %7 = load i32* %t, align 4 ; [#uses=1] + %8 = icmp eq i32 %7, 5 ; [#uses=1] + br i1 %8, label %13, label %9 + +; <label>:9 ; preds = %6 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %10, i32 2, i8* getelementptr inbounds ([22 x i8]* @.str26344, i32 0, i32 0)) ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br label %13 + +; <label>:13 ; preds = %9, %6, %0 + %14 = phi i1 [ true, %6 ], [ true, %0 ], [ %12, %9 ] ; [#uses=0] + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %15, i32 2) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %17, i32 1) ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %16, i32 %18) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z13db_setupvalueP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 3) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z10auxupvalueP9lua_Statei(%struct.lua_State* %3, i32 0) ; [#uses=1] + ret i32 %4 +} + +; [#uses=1] +define internal i32 @_Z10db_errorfbP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=23] + %level = alloca i32, align 4 ; [#uses=11] + %firstpart = alloca i32, align 4 ; [#uses=3] + %arg = alloca i32, align 4 ; [#uses=7] + %L1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 1, i32* %firstpart, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %3, i32* %arg) ; [#uses=1] + store %struct.lua_State* %4, %struct.lua_State** %L1, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i32* %arg, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 2 ; [#uses=1] + %8 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %5, i32 %7) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %16 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = load i32* %arg, align 4 ; [#uses=1] + %13 = add nsw i32 %12, 2 ; [#uses=1] + %14 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %11, i32 %13) ; [#uses=1] + store i32 %14, i32* %level, align 4 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %15, i32 -2) + br label %21 + +; <label>:16 ; preds = %0 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %19 = icmp eq %struct.lua_State* %17, %18 ; [#uses=1] + %20 = select i1 %19, i32 1, i32 0 ; [#uses=1] + store i32 %20, i32* %level, align 4 + br label %21 + +; <label>:21 ; preds = %16, %10 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %22) ; [#uses=1] + %24 = load i32* %arg, align 4 ; [#uses=1] + %25 = icmp eq i32 %23, %24 ; [#uses=1] + br i1 %25, label %26, label %28 + +; <label>:26 ; preds = %21 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %27, i8* getelementptr inbounds ([1 x i8]* @.str14332, i32 0, i32 0), i32 0) + br label %38 + +; <label>:28 ; preds = %21 + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load i32* %arg, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + %32 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %29, i32 %31) ; [#uses=1] + %33 = icmp ne i32 %32, 0 ; [#uses=1] + br i1 %33, label %35, label %34 + +; <label>:34 ; preds = %28 + store i32 1, i32* %1 + br label %145 + +; <label>:35 ; preds = %28 + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %36, i8* getelementptr inbounds ([2 x i8]* @.str15333, i32 0, i32 0), i32 1) + br label %37 + +; <label>:37 ; preds = %35 + br label %38 + +; <label>:38 ; preds = %37, %26 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %39, i8* getelementptr inbounds ([17 x i8]* @.str16334, i32 0, i32 0), i32 16) + br label %40 + +; <label>:40 ; preds = %133, %73, %38 + %41 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %42 = load i32* %level, align 4 ; [#uses=2] + %43 = add nsw i32 %42, 1 ; [#uses=1] + store i32 %43, i32* %level, align 4 + %44 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %41, i32 %42, %struct.lua_Debug* %ar) ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %46, label %139 + +; <label>:46 ; preds = %40 + %47 = load i32* %level, align 4 ; [#uses=1] + %48 = icmp sgt i32 %47, 12 ; [#uses=1] + br i1 %48, label %49, label %74 + +; <label>:49 ; preds = %46 + %50 = load i32* %firstpart, align 4 ; [#uses=1] + %51 = icmp ne i32 %50, 0 ; [#uses=1] + br i1 %51, label %52, label %74 + +; <label>:52 ; preds = %49 + %53 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %54 = load i32* %level, align 4 ; [#uses=1] + %55 = add nsw i32 %54, 10 ; [#uses=1] + %56 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %53, i32 %55, %struct.lua_Debug* %ar) ; [#uses=1] + %57 = icmp ne i32 %56, 0 ; [#uses=1] + br i1 %57, label %61, label %58 + +; <label>:58 ; preds = %52 + %59 = load i32* %level, align 4 ; [#uses=1] + %60 = add nsw i32 %59, -1 ; [#uses=1] + store i32 %60, i32* %level, align 4 + br label %73 + +; <label>:61 ; preds = %52 + %62 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %62, i8* getelementptr inbounds ([6 x i8]* @.str17335, i32 0, i32 0), i32 5) + br label %63 + +; <label>:63 ; preds = %69, %61 + %64 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %65 = load i32* %level, align 4 ; [#uses=1] + %66 = add nsw i32 %65, 10 ; [#uses=1] + %67 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %64, i32 %66, %struct.lua_Debug* %ar) ; [#uses=1] + %68 = icmp ne i32 %67, 0 ; [#uses=1] + br i1 %68, label %69, label %72 + +; <label>:69 ; preds = %63 + %70 = load i32* %level, align 4 ; [#uses=1] + %71 = add nsw i32 %70, 1 ; [#uses=1] + store i32 %71, i32* %level, align 4 + br label %63 + +; <label>:72 ; preds = %63 + br label %73 + +; <label>:73 ; preds = %72, %58 + store i32 0, i32* %firstpart, align 4 + br label %40 + +; <label>:74 ; preds = %49, %46 + %75 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %75, i8* getelementptr inbounds ([3 x i8]* @.str18336, i32 0, i32 0), i32 2) + %76 = load %struct.lua_State** %L1, align 4 ; [#uses=1] + %77 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %76, i8* getelementptr inbounds ([4 x i8]* @.str19337, i32 0, i32 0), %struct.lua_Debug* %ar) ; [#uses=0] + %78 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %79 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 9 ; [#uses=1] + %80 = getelementptr inbounds [60 x i8]* %79, i32 0, i32 0 ; [#uses=1] + %81 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %78, i8* getelementptr inbounds ([4 x i8]* @.str20338, i32 0, i32 0), i8* %80) ; [#uses=0] + %82 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + %83 = load i32* %82, align 4 ; [#uses=1] + %84 = icmp sgt i32 %83, 0 ; [#uses=1] + br i1 %84, label %85, label %90 + +; <label>:85 ; preds = %74 + %86 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %87 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 5 ; [#uses=1] + %88 = load i32* %87, align 4 ; [#uses=1] + %89 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %86, i8* getelementptr inbounds ([4 x i8]* @.str21339, i32 0, i32 0), i32 %88) ; [#uses=0] + br label %90 + +; <label>:90 ; preds = %85, %74 + %91 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 2 ; [#uses=1] + %92 = load i8** %91, align 4 ; [#uses=1] + %93 = load i8* %92 ; [#uses=1] + %94 = sext i8 %93 to i32 ; [#uses=1] + %95 = icmp ne i32 %94, 0 ; [#uses=1] + br i1 %95, label %96, label %101 + +; <label>:96 ; preds = %90 + %97 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 1 ; [#uses=1] + %99 = load i8** %98, align 4 ; [#uses=1] + %100 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %97, i8* getelementptr inbounds ([18 x i8]* @.str22340, i32 0, i32 0), i8* %99) ; [#uses=0] + br label %133 + +; <label>:101 ; preds = %90 + %102 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 3 ; [#uses=1] + %103 = load i8** %102, align 4 ; [#uses=1] + %104 = load i8* %103 ; [#uses=1] + %105 = sext i8 %104 to i32 ; [#uses=1] + %106 = icmp eq i32 %105, 109 ; [#uses=1] + br i1 %106, label %107, label %110 + +; <label>:107 ; preds = %101 + %108 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %109 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %108, i8* getelementptr inbounds ([15 x i8]* @.str23341, i32 0, i32 0)) ; [#uses=0] + br label %132 + +; <label>:110 ; preds = %101 + %111 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 3 ; [#uses=1] + %112 = load i8** %111, align 4 ; [#uses=1] + %113 = load i8* %112 ; [#uses=1] + %114 = sext i8 %113 to i32 ; [#uses=1] + %115 = icmp eq i32 %114, 67 ; [#uses=1] + br i1 %115, label %122, label %116 + +; <label>:116 ; preds = %110 + %117 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 3 ; [#uses=1] + %118 = load i8** %117, align 4 ; [#uses=1] + %119 = load i8* %118 ; [#uses=1] + %120 = sext i8 %119 to i32 ; [#uses=1] + %121 = icmp eq i32 %120, 116 ; [#uses=1] + br i1 %121, label %122, label %124 + +; <label>:122 ; preds = %116, %110 + %123 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %123, i8* getelementptr inbounds ([3 x i8]* @.str24342, i32 0, i32 0), i32 2) + br label %131 + +; <label>:124 ; preds = %116 + %125 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %126 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 9 ; [#uses=1] + %127 = getelementptr inbounds [60 x i8]* %126, i32 0, i32 0 ; [#uses=1] + %128 = getelementptr inbounds %struct.lua_Debug* %ar, i32 0, i32 7 ; [#uses=1] + %129 = load i32* %128, align 4 ; [#uses=1] + %130 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %125, i8* getelementptr inbounds ([21 x i8]* @.str25343, i32 0, i32 0), i8* %127, i32 %129) ; [#uses=0] + br label %131 + +; <label>:131 ; preds = %124, %122 + br label %132 + +; <label>:132 ; preds = %131, %107 + br label %133 + +; <label>:133 ; preds = %132, %96 + %134 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %135 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %136 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %135) ; [#uses=1] + %137 = load i32* %arg, align 4 ; [#uses=1] + %138 = sub nsw i32 %136, %137 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %134, i32 %138) + br label %40 + +; <label>:139 ; preds = %40 + %140 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %141 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %142 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %141) ; [#uses=1] + %143 = load i32* %arg, align 4 ; [#uses=1] + %144 = sub nsw i32 %142, %143 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %140, i32 %144) + store i32 1, i32* %1 + br label %145 + +; <label>:145 ; preds = %139, %34 + %146 = load i32* %1 ; [#uses=1] + ret i32 %146 +} + +; [#uses=1] +define i32 @_Z13luaopen_debugP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %2, i8* getelementptr inbounds ([6 x i8]* @.str318, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([15 x %struct.luaL_Reg]* @_ZL5dblib, i32 0, i32 0)) + ret i32 1 +} + +; [#uses=6] +define internal %struct.lua_State* @_Z9getthreadP9lua_StatePi(%struct.lua_State* %L, i32* %arg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %3 = alloca i32*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32* %arg, i32** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp eq i32 %5, 8 ; [#uses=1] + br i1 %6, label %7, label %11 + +; <label>:7 ; preds = %0 + %8 = load i32** %3, align 4 ; [#uses=1] + store i32 1, i32* %8 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call %struct.lua_State* @_Z12lua_tothreadP9lua_Statei(%struct.lua_State* %9, i32 1) ; [#uses=1] + store %struct.lua_State* %10, %struct.lua_State** %1 + br label %14 + +; <label>:11 ; preds = %0 + %12 = load i32** %3, align 4 ; [#uses=1] + store i32 0, i32* %12 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + store %struct.lua_State* %13, %struct.lua_State** %1 + br label %14 + +; <label>:14 ; preds = %11, %7 + %15 = load %struct.lua_State** %1 ; [#uses=1] + ret %struct.lua_State* %15 +} + +; [#uses=2] +define internal i32 @_Z10auxupvalueP9lua_Statei(%struct.lua_State* %L, i32 %get) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %3 = alloca i32, align 4 ; [#uses=4] + %name = alloca i8*, align 4 ; [#uses=3] + %n = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %get, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %4, i32 2) ; [#uses=1] + store i32 %5, i32* %n, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %6, i32 1, i32 6) + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %7, i32 1) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + store i32 0, i32* %1 + br label %36 + +; <label>:11 ; preds = %0 + %12 = load i32* %3, align 4 ; [#uses=1] + %13 = icmp ne i32 %12, 0 ; [#uses=1] + br i1 %13, label %14, label %18 + +; <label>:14 ; preds = %11 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i32* %n, align 4 ; [#uses=1] + %17 = call i8* @_Z14lua_getupvalueP9lua_Stateii(%struct.lua_State* %15, i32 1, i32 %16) ; [#uses=1] + br label %22 + +; <label>:18 ; preds = %11 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = load i32* %n, align 4 ; [#uses=1] + %21 = call i8* @_Z14lua_setupvalueP9lua_Stateii(%struct.lua_State* %19, i32 1, i32 %20) ; [#uses=1] + br label %22 + +; <label>:22 ; preds = %18, %14 + %23 = phi i8* [ %17, %14 ], [ %21, %18 ] ; [#uses=1] + store i8* %23, i8** %name, align 4 + %24 = load i8** %name, align 4 ; [#uses=1] + %25 = icmp eq i8* %24, null ; [#uses=1] + br i1 %25, label %26, label %27 + +; <label>:26 ; preds = %22 + store i32 0, i32* %1 + br label %36 + +; <label>:27 ; preds = %22 + %28 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %29 = load i8** %name, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %28, i8* %29) + %30 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %31 = load i32* %3, align 4 ; [#uses=1] + %32 = add nsw i32 %31, 1 ; [#uses=1] + %33 = sub nsw i32 0, %32 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %30, i32 %33) + %34 = load i32* %3, align 4 ; [#uses=1] + %35 = add nsw i32 %34, 1 ; [#uses=1] + store i32 %35, i32* %1 + br label %36 + +; <label>:36 ; preds = %27, %26, %10 + %37 = load i32* %1 ; [#uses=1] + ret i32 %37 +} + +; [#uses=2] +define internal void @_Z5hookfP9lua_StateP9lua_Debug(%struct.lua_State* %L, %struct.lua_Debug* %ar) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %2 = alloca %struct.lua_Debug*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_Debug* %ar, %struct.lua_Debug** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %3, i8* @_ZL8KEY_HOOK) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %4, i32 -10000) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = bitcast %struct.lua_State* %6 to i8* ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %5, i8* %7) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %8, i32 -2) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %9, i32 -1) ; [#uses=1] + %11 = icmp eq i32 %10, 6 ; [#uses=1] + br i1 %11, label %12, label %32 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load %struct.lua_Debug** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.lua_Debug* %14, i32 0, i32 0 ; [#uses=1] + %16 = load i32* %15, align 4 ; [#uses=1] + %17 = getelementptr inbounds [5 x i8*]* @_ZZ5hookfP9lua_StateP9lua_DebugE9hooknames, i32 0, i32 %16 ; [#uses=1] + %18 = load i8** %17 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %13, i8* %18) + %19 = load %struct.lua_Debug** %2, align 4 ; [#uses=1] + %20 = getelementptr inbounds %struct.lua_Debug* %19, i32 0, i32 5 ; [#uses=1] + %21 = load i32* %20, align 4 ; [#uses=1] + %22 = icmp sge i32 %21, 0 ; [#uses=1] + br i1 %22, label %23, label %28 + +; <label>:23 ; preds = %12 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load %struct.lua_Debug** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.lua_Debug* %25, i32 0, i32 5 ; [#uses=1] + %27 = load i32* %26, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %24, i32 %27) + br label %30 + +; <label>:28 ; preds = %12 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %29) + br label %30 + +; <label>:30 ; preds = %28, %23 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %31, i32 2, i32 0) + br label %32 + +; <label>:32 ; preds = %30, %0 + ret void +} + +; [#uses=1] +define internal i32 @_Z8makemaskPKci(i8* %smask, i32 %count) nounwind { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %mask = alloca i32, align 4 ; [#uses=10] + store i8* %smask, i8** %1, align 4 + store i32 %count, i32* %2, align 4 + store i32 0, i32* %mask, align 4 + %3 = load i8** %1, align 4 ; [#uses=1] + %4 = call i8* @strchr(i8* %3, i32 99) ; [#uses=1] + %5 = icmp ne i8* %4, null ; [#uses=1] + br i1 %5, label %6, label %9 + +; <label>:6 ; preds = %0 + %7 = load i32* %mask, align 4 ; [#uses=1] + %8 = or i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %mask, align 4 + br label %9 + +; <label>:9 ; preds = %6, %0 + %10 = load i8** %1, align 4 ; [#uses=1] + %11 = call i8* @strchr(i8* %10, i32 114) ; [#uses=1] + %12 = icmp ne i8* %11, null ; [#uses=1] + br i1 %12, label %13, label %16 + +; <label>:13 ; preds = %9 + %14 = load i32* %mask, align 4 ; [#uses=1] + %15 = or i32 %14, 2 ; [#uses=1] + store i32 %15, i32* %mask, align 4 + br label %16 + +; <label>:16 ; preds = %13, %9 + %17 = load i8** %1, align 4 ; [#uses=1] + %18 = call i8* @strchr(i8* %17, i32 108) ; [#uses=1] + %19 = icmp ne i8* %18, null ; [#uses=1] + br i1 %19, label %20, label %23 + +; <label>:20 ; preds = %16 + %21 = load i32* %mask, align 4 ; [#uses=1] + %22 = or i32 %21, 4 ; [#uses=1] + store i32 %22, i32* %mask, align 4 + br label %23 + +; <label>:23 ; preds = %20, %16 + %24 = load i32* %2, align 4 ; [#uses=1] + %25 = icmp sgt i32 %24, 0 ; [#uses=1] + br i1 %25, label %26, label %29 + +; <label>:26 ; preds = %23 + %27 = load i32* %mask, align 4 ; [#uses=1] + %28 = or i32 %27, 8 ; [#uses=1] + store i32 %28, i32* %mask, align 4 + br label %29 + +; <label>:29 ; preds = %26, %23 + %30 = load i32* %mask, align 4 ; [#uses=1] + ret i32 %30 +} + +; [#uses=2] +define internal void @_Z12gethooktableP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %2, i8* @_ZL8KEY_HOOK) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawgetP9lua_Statei(%struct.lua_State* %3, i32 -10000) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 -1) ; [#uses=1] + %6 = icmp eq i32 %5, 5 ; [#uses=1] + br i1 %6, label %13, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %8, i32 -2) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %9, i32 0, i32 1) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %10, i8* @_ZL8KEY_HOOK) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %11, i32 -2) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_rawsetP9lua_Statei(%struct.lua_State* %12, i32 -10000) + br label %13 + +; <label>:13 ; preds = %7, %0 + ret void +} + +; [#uses=5] +define internal void @_Z8settabssP9lua_StatePKcS2_(%struct.lua_State* %L, i8* %i, i8* %v) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %i, i8** %2, align 4 + store i8* %v, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %3, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %4, i8* %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -2, i8* %7) + ret void +} + +; [#uses=4] +define internal void @_Z8settabsiP9lua_StatePKci(%struct.lua_State* %L, i8* %i, i32 %v) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %i, i8** %2, align 4 + store i32 %v, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %4, i32 %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -2, i8* %7) + ret void +} + +; [#uses=2] +define internal void @_Z16treatstackoptionP9lua_StateS0_PKc(%struct.lua_State* %L, %struct.lua_State* %L1, i8* %fname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.lua_State* %L1, %struct.lua_State** %2, align 4 + store i8* %fname, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = icmp eq %struct.lua_State* %4, %5 ; [#uses=1] + br i1 %6, label %7, label %10 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %8, i32 -2) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %9, i32 -3) + br label %13 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9lua_xmoveP9lua_StateS0_i(%struct.lua_State* %11, %struct.lua_State* %12, i32 1) + br label %13 + +; <label>:13 ; preds = %10, %7 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i8** %3, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %14, i32 -2, i8* %15) + ret void +} + +; [#uses=1] +define internal i8* @_Z10unmakemaskiPc(i32 %mask, i8* %smask) nounwind { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=8] + store i32 %mask, i32* %1, align 4 + store i8* %smask, i8** %2, align 4 + store i32 0, i32* %i, align 4 + %3 = load i32* %1, align 4 ; [#uses=1] + %4 = and i32 %3, 1 ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %11 + +; <label>:6 ; preds = %0 + %7 = load i32* %i, align 4 ; [#uses=2] + %8 = add nsw i32 %7, 1 ; [#uses=1] + store i32 %8, i32* %i, align 4 + %9 = load i8** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds i8* %9, i32 %7 ; [#uses=1] + store i8 99, i8* %10 + br label %11 + +; <label>:11 ; preds = %6, %0 + %12 = load i32* %1, align 4 ; [#uses=1] + %13 = and i32 %12, 2 ; [#uses=1] + %14 = icmp ne i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %20 + +; <label>:15 ; preds = %11 + %16 = load i32* %i, align 4 ; [#uses=2] + %17 = add nsw i32 %16, 1 ; [#uses=1] + store i32 %17, i32* %i, align 4 + %18 = load i8** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds i8* %18, i32 %16 ; [#uses=1] + store i8 114, i8* %19 + br label %20 + +; <label>:20 ; preds = %15, %11 + %21 = load i32* %1, align 4 ; [#uses=1] + %22 = and i32 %21, 4 ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %29 + +; <label>:24 ; preds = %20 + %25 = load i32* %i, align 4 ; [#uses=2] + %26 = add nsw i32 %25, 1 ; [#uses=1] + store i32 %26, i32* %i, align 4 + %27 = load i8** %2, align 4 ; [#uses=1] + %28 = getelementptr inbounds i8* %27, i32 %25 ; [#uses=1] + store i8 108, i8* %28 + br label %29 + +; <label>:29 ; preds = %24, %20 + %30 = load i32* %i, align 4 ; [#uses=1] + %31 = load i8** %2, align 4 ; [#uses=1] + %32 = getelementptr inbounds i8* %31, i32 %30 ; [#uses=1] + store i8 0, i8* %32 + %33 = load i8** %2, align 4 ; [#uses=1] + ret i8* %33 +} + +; [#uses=1] +define internal i32 @_Z8io_closeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + %4 = icmp eq i32 %3, -1 ; [#uses=1] + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %6, i32 -10001, i32 2) + br label %7 + +; <label>:7 ; preds = %5, %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %8) ; [#uses=0] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z9aux_closeP9lua_State(%struct.lua_State* %10) ; [#uses=1] + ret i32 %11 +} + +; [#uses=1] +define internal i32 @_Z8io_flushP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z9getiofileP9lua_Statei(%struct.lua_State* %3, i32 2) ; [#uses=1] + %5 = call i32 @fflush(%struct._IO_FILE* %4) ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + %7 = zext i1 %6 to i32 ; [#uses=1] + %8 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %2, i32 %7, i8* null) ; [#uses=1] + ret i32 %8 +} + +; [#uses=1] +define internal i32 @_Z8io_inputP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8g_iofileP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([2 x i8]* @.str43414, i32 0, i32 0)) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z8io_linesP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %filename = alloca i8*, align 4 ; [#uses=3] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = icmp sle i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %10 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %7, i32 -10001, i32 1) + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = call i32 @_Z7f_linesP9lua_State(%struct.lua_State* %8) ; [#uses=1] + store i32 %9, i32* %1 + br label %28 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %11, i32 1, i32* null) ; [#uses=1] + store i8* %12, i8** %filename, align 4 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %13) ; [#uses=1] + store %struct._IO_FILE** %14, %struct._IO_FILE*** %pf, align 4 + %15 = load i8** %filename, align 4 ; [#uses=1] + %16 = call %struct._IO_FILE* @fopen(i8* %15, i8* getelementptr inbounds ([2 x i8]* @.str43414, i32 0, i32 0)) ; [#uses=1] + %17 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* %16, %struct._IO_FILE** %17 + %18 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + %19 = load %struct._IO_FILE** %18 ; [#uses=1] + %20 = icmp eq %struct._IO_FILE* %19, null ; [#uses=1] + br i1 %20, label %21, label %24 + +; <label>:21 ; preds = %10 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load i8** %filename, align 4 ; [#uses=1] + call void @_Z9fileerrorP9lua_StateiPKc(%struct.lua_State* %22, i32 1, i8* %23) + br label %24 + +; <label>:24 ; preds = %21, %10 + %25 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %26) ; [#uses=1] + call void @_Z9aux_linesP9lua_Stateii(%struct.lua_State* %25, i32 %27, i32 1) + store i32 1, i32* %1 + br label %28 + +; <label>:28 ; preds = %24, %6 + %29 = load i32* %1 ; [#uses=1] + ret i32 %29 +} + +; [#uses=1] +define internal i32 @_Z7io_openP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %filename = alloca i8*, align 4 ; [#uses=3] + %mode = alloca i8*, align 4 ; [#uses=2] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=1] + store i8* %3, i8** %filename, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %4, i32 2, i8* getelementptr inbounds ([2 x i8]* @.str43414, i32 0, i32 0), i32* null) ; [#uses=1] + store i8* %5, i8** %mode, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %6) ; [#uses=1] + store %struct._IO_FILE** %7, %struct._IO_FILE*** %pf, align 4 + %8 = load i8** %filename, align 4 ; [#uses=1] + %9 = load i8** %mode, align 4 ; [#uses=1] + %10 = call %struct._IO_FILE* @fopen(i8* %8, i8* %9) ; [#uses=1] + %11 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* %10, %struct._IO_FILE** %11 + %12 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + %13 = load %struct._IO_FILE** %12 ; [#uses=1] + %14 = icmp eq %struct._IO_FILE* %13, null ; [#uses=1] + br i1 %14, label %15, label %19 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i8** %filename, align 4 ; [#uses=1] + %18 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %16, i32 0, i8* %17) ; [#uses=1] + br label %20 + +; <label>:19 ; preds = %0 + br label %20 + +; <label>:20 ; preds = %19, %15 + %21 = phi i32 [ %18, %15 ], [ 1, %19 ] ; [#uses=1] + ret i32 %21 +} + +; [#uses=1] +define internal i32 @_Z9io_outputP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8g_iofileP9lua_StateiPKc(%struct.lua_State* %2, i32 2, i8* getelementptr inbounds ([2 x i8]* @.str45416, i32 0, i32 0)) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z8io_popenP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %filename = alloca i8*, align 4 ; [#uses=2] + %mode = alloca i8*, align 4 ; [#uses=1] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=1] + store i8* %3, i8** %filename, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %4, i32 2, i8* getelementptr inbounds ([2 x i8]* @.str43414, i32 0, i32 0), i32* null) ; [#uses=1] + store i8* %5, i8** %mode, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %6) ; [#uses=1] + store %struct._IO_FILE** %7, %struct._IO_FILE*** %pf, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %8, i8* getelementptr inbounds ([22 x i8]* @.str44415, i32 0, i32 0)) ; [#uses=0] + %10 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* null, %struct._IO_FILE** %10 + %11 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + %12 = load %struct._IO_FILE** %11 ; [#uses=1] + %13 = icmp eq %struct._IO_FILE* %12, null ; [#uses=1] + br i1 %13, label %14, label %18 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %16 = load i8** %filename, align 4 ; [#uses=1] + %17 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %15, i32 0, i8* %16) ; [#uses=1] + br label %19 + +; <label>:18 ; preds = %0 + br label %19 + +; <label>:19 ; preds = %18, %14 + %20 = phi i32 [ %17, %14 ], [ 1, %18 ] ; [#uses=1] + ret i32 %20 +} + +; [#uses=1] +define internal i32 @_Z7io_readP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z9getiofileP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call i32 @_Z6g_readP9lua_StateP8_IO_FILEi(%struct.lua_State* %2, %struct._IO_FILE* %4, i32 1) ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define internal i32 @_Z10io_tmpfileP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store %struct._IO_FILE** %3, %struct._IO_FILE*** %pf, align 4 + %4 = call %struct._IO_FILE* @tmpfile() ; [#uses=1] + %5 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* %4, %struct._IO_FILE** %5 + %6 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + %7 = load %struct._IO_FILE** %6 ; [#uses=1] + %8 = icmp eq %struct._IO_FILE* %7, null ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %10, i32 0, i8* null) ; [#uses=1] + br label %13 + +; <label>:12 ; preds = %0 + br label %13 + +; <label>:13 ; preds = %12, %9 + %14 = phi i32 [ %11, %9 ], [ 1, %12 ] ; [#uses=1] + ret i32 %14 +} + +; [#uses=1] +define internal i32 @_Z7io_typeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %ud = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_checkanyP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + store i8* %4, i8** %ud, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %5, i32 -10000, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) + %6 = load i8** %ud, align 4 ; [#uses=1] + %7 = icmp eq i8* %6, null ; [#uses=1] + br i1 %7, label %16, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %9, i32 1) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %16 + +; <label>:12 ; preds = %8 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z12lua_rawequalP9lua_Stateii(%struct.lua_State* %13, i32 -2, i32 -1) ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %18, label %16 + +; <label>:16 ; preds = %12, %8, %0 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %17) + br label %28 + +; <label>:18 ; preds = %12 + %19 = load i8** %ud, align 4 ; [#uses=1] + %20 = bitcast i8* %19 to %struct._IO_FILE** ; [#uses=1] + %21 = load %struct._IO_FILE** %20 ; [#uses=1] + %22 = icmp eq %struct._IO_FILE* %21, null ; [#uses=1] + br i1 %22, label %23, label %25 + +; <label>:23 ; preds = %18 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %24, i8* getelementptr inbounds ([12 x i8]* @.str41412, i32 0, i32 0), i32 11) + br label %27 + +; <label>:25 ; preds = %18 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %26, i8* getelementptr inbounds ([5 x i8]* @.str42413, i32 0, i32 0), i32 4) + br label %27 + +; <label>:27 ; preds = %25, %23 + br label %28 + +; <label>:28 ; preds = %27, %16 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8io_writeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z9getiofileP9lua_Statei(%struct.lua_State* %3, i32 2) ; [#uses=1] + %5 = call i32 @_Z7g_writeP9lua_StateP8_IO_FILEi(%struct.lua_State* %2, %struct._IO_FILE* %4, i32 1) ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define internal i32 @_Z7f_flushP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %3) ; [#uses=1] + %5 = call i32 @fflush(%struct._IO_FILE* %4) ; [#uses=1] + %6 = icmp eq i32 %5, 0 ; [#uses=1] + %7 = zext i1 %6 to i32 ; [#uses=1] + %8 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %2, i32 %7, i8* null) ; [#uses=1] + ret i32 %8 +} + +; [#uses=2] +define internal i32 @_Z7f_linesP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %2) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z9aux_linesP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 0) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z6f_readP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %3) ; [#uses=1] + %5 = call i32 @_Z6g_readP9lua_StateP8_IO_FILEi(%struct.lua_State* %2, %struct._IO_FILE* %4, i32 2) ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define internal i32 @_Z6f_seekP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + %op = alloca i32, align 4 ; [#uses=4] + %offset = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %3) ; [#uses=1] + store %struct._IO_FILE* %4, %struct._IO_FILE** %f, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z16luaL_checkoptionP9lua_StateiPKcPKS2_(%struct.lua_State* %5, i32 2, i8* getelementptr inbounds ([4 x i8]* @.str33404, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @_ZZ6f_seekP9lua_StateE9modenames, i32 0, i32 0)) ; [#uses=1] + store i32 %6, i32* %op, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %7, i32 3, i32 0) ; [#uses=1] + store i32 %8, i32* %offset, align 4 + %9 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %10 = load i32* %offset, align 4 ; [#uses=1] + %11 = load i32* %op, align 4 ; [#uses=1] + %12 = getelementptr inbounds [3 x i32]* @_ZZ6f_seekP9lua_StateE4mode, i32 0, i32 %11 ; [#uses=1] + %13 = load i32* %12 ; [#uses=1] + %14 = call i32 @fseek(%struct._IO_FILE* %9, i32 %10, i32 %13) ; [#uses=1] + store i32 %14, i32* %op, align 4 + %15 = load i32* %op, align 4 ; [#uses=1] + %16 = icmp ne i32 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %20 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %18, i32 0, i8* null) ; [#uses=1] + store i32 %19, i32* %1 + br label %24 + +; <label>:20 ; preds = %0 + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %23 = call i32 @ftell(%struct._IO_FILE* %22) ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %21, i32 %23) + store i32 1, i32* %1 + br label %24 + +; <label>:24 ; preds = %20, %17 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=1] +define internal i32 @_Z9f_setvbufP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + %op = alloca i32, align 4 ; [#uses=2] + %sz = alloca i32, align 4 ; [#uses=2] + %res = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store %struct._IO_FILE* %3, %struct._IO_FILE** %f, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z16luaL_checkoptionP9lua_StateiPKcPKS2_(%struct.lua_State* %4, i32 2, i8* null, i8** getelementptr inbounds ([4 x i8*]* @_ZZ9f_setvbufP9lua_StateE9modenames, i32 0, i32 0)) ; [#uses=1] + store i32 %5, i32* %op, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %6, i32 3, i32 8192) ; [#uses=1] + store i32 %7, i32* %sz, align 4 + %8 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %9 = load i32* %op, align 4 ; [#uses=1] + %10 = getelementptr inbounds [3 x i32]* @_ZZ9f_setvbufP9lua_StateE4mode, i32 0, i32 %9 ; [#uses=1] + %11 = load i32* %10 ; [#uses=1] + %12 = load i32* %sz, align 4 ; [#uses=1] + %13 = call i32 @setvbuf(%struct._IO_FILE* %8, i8* null, i32 %11, i32 %12) nounwind ; [#uses=1] + store i32 %13, i32* %res, align 4 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = load i32* %res, align 4 ; [#uses=1] + %16 = icmp eq i32 %15, 0 ; [#uses=1] + %17 = zext i1 %16 to i32 ; [#uses=1] + %18 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %14, i32 %17, i8* null) ; [#uses=1] + ret i32 %18 +} + +; [#uses=1] +define internal i32 @_Z7f_writeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %3) ; [#uses=1] + %5 = call i32 @_Z7g_writeP9lua_StateP8_IO_FILEi(%struct.lua_State* %2, %struct._IO_FILE* %4, i32 2) ; [#uses=1] + ret i32 %5 +} + +; [#uses=1] +define internal i32 @_Z5io_gcP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + %5 = load %struct._IO_FILE** %4 ; [#uses=1] + store %struct._IO_FILE* %5, %struct._IO_FILE** %f, align 4 + %6 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %7 = icmp ne %struct._IO_FILE* %6, null ; [#uses=1] + br i1 %7, label %8, label %11 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z9aux_closeP9lua_State(%struct.lua_State* %9) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %8, %0 + ret i32 0 +} + +; [#uses=1] +define internal i32 @_Z11io_tostringP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + %5 = load %struct._IO_FILE** %4 ; [#uses=1] + store %struct._IO_FILE* %5, %struct._IO_FILE** %f, align 4 + %6 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %7 = icmp eq %struct._IO_FILE* %6, null ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %9, i8* getelementptr inbounds ([14 x i8]* @.str25396, i32 0, i32 0), i32 13) + br label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %13 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %11, i8* getelementptr inbounds ([10 x i8]* @.str26397, i32 0, i32 0), %struct._IO_FILE* %12) ; [#uses=0] + br label %14 + +; <label>:14 ; preds = %10, %8 + ret i32 1 +} + +; [#uses=1] +define i32 @_Z10luaopen_ioP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=14] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10createmetaP9lua_State(%struct.lua_State* %2) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7newfenvP9lua_StatePFiS0_E(%struct.lua_State* %3, i32 (%struct.lua_State*)* @_Z9io_fcloseP9lua_State) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %4, i32 -10001) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %5, i8* getelementptr inbounds ([3 x i8]* @.str15386, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([12 x %struct.luaL_Reg]* @_ZL5iolib, i32 0, i32 0)) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7newfenvP9lua_StatePFiS0_E(%struct.lua_State* %6, i32 (%struct.lua_State*)* @_Z10io_nocloseP9lua_State) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load %struct._IO_FILE** @stdin, align 4 ; [#uses=1] + call void @_Z13createstdfileP9lua_StateP8_IO_FILEiPKc(%struct.lua_State* %7, %struct._IO_FILE* %8, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str16387, i32 0, i32 0)) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load %struct._IO_FILE** @stdout, align 4 ; [#uses=1] + call void @_Z13createstdfileP9lua_StateP8_IO_FILEiPKc(%struct.lua_State* %9, %struct._IO_FILE* %10, i32 2, i8* getelementptr inbounds ([7 x i8]* @.str17388, i32 0, i32 0)) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct._IO_FILE** @stderr, align 4 ; [#uses=1] + call void @_Z13createstdfileP9lua_StateP8_IO_FILEiPKc(%struct.lua_State* %11, %struct._IO_FILE* %12, i32 0, i8* getelementptr inbounds ([7 x i8]* @.str18389, i32 0, i32 0)) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %13, i32 -2) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %14, i32 -1, i8* getelementptr inbounds ([6 x i8]* @.str6377, i32 0, i32 0)) + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7newfenvP9lua_StatePFiS0_E(%struct.lua_State* %15, i32 (%struct.lua_State*)* @_Z9io_pcloseP9lua_State) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %16, i32 -2) ; [#uses=0] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %18, i32 -2) + ret i32 1 +} + +; [#uses=1] +define internal void @_Z10createmetaP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z17luaL_newmetatableP9lua_StatePKc(%struct.lua_State* %2, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %4, i32 -1) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %5, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str24395, i32 0, i32 0)) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %6, i8* null, %struct.luaL_Reg* getelementptr inbounds ([10 x %struct.luaL_Reg]* @_ZL4flib, i32 0, i32 0)) + ret void +} + +; [#uses=3] +define internal void @_Z7newfenvP9lua_StatePFiS0_E(%struct.lua_State* %L, i32 (%struct.lua_State*)* %cls) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 (%struct.lua_State*)* %cls, i32 (%struct.lua_State*)** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %3, i32 0, i32 1) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32 (%struct.lua_State*)** %2, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %4, i32 (%struct.lua_State*)* %5, i32 0) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str23394, i32 0, i32 0)) + ret void +} + +; [#uses=1] +define internal i32 @_Z9io_fcloseP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %p = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + %ok = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + store %struct._IO_FILE** %4, %struct._IO_FILE*** %p, align 4 + %5 = load %struct._IO_FILE*** %p, align 4 ; [#uses=1] + %6 = load %struct._IO_FILE** %5 ; [#uses=1] + %7 = call i32 @fclose(%struct._IO_FILE* %6) ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + %9 = zext i1 %8 to i32 ; [#uses=1] + store i32 %9, i32* %ok, align 4 + %10 = load %struct._IO_FILE*** %p, align 4 ; [#uses=1] + store %struct._IO_FILE* null, %struct._IO_FILE** %10 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %ok, align 4 ; [#uses=1] + %13 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %11, i32 %12, i8* null) ; [#uses=1] + ret i32 %13 +} + +; [#uses=1] +define internal i32 @_Z10io_nocloseP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %2) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %3, i8* getelementptr inbounds ([27 x i8]* @.str22393, i32 0, i32 0), i32 26) + ret i32 2 +} + +; [#uses=3] +define internal void @_Z13createstdfileP9lua_StateP8_IO_FILEiPKc(%struct.lua_State* %L, %struct._IO_FILE* %f, i32 %k, i8* %fname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %2, align 4 + store i32 %k, i32* %3, align 4 + store i8* %fname, i8** %4, align 4 + %5 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %6) ; [#uses=1] + store %struct._IO_FILE* %5, %struct._IO_FILE** %7 + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = icmp sgt i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %14 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %11, i32 -1) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %12, i32 -10001, i32 %13) + br label %14 + +; <label>:14 ; preds = %10, %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %15, i32 -2) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %16, i32 -2) ; [#uses=0] + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %4, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %18, i32 -3, i8* %19) + ret void +} + +; [#uses=1] +define internal i32 @_Z9io_pcloseP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %p = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + %ok = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + store %struct._IO_FILE** %4, %struct._IO_FILE*** %p, align 4 + %5 = load %struct._IO_FILE*** %p, align 4 ; [#uses=0] + store i32 0, i32* %ok, align 4 + %6 = load %struct._IO_FILE*** %p, align 4 ; [#uses=1] + store %struct._IO_FILE* null, %struct._IO_FILE** %6 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load i32* %ok, align 4 ; [#uses=1] + %9 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %7, i32 %8, i8* null) ; [#uses=1] + ret i32 %9 +} + +; [#uses=11] +define internal i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %L, i32 %i, i8* %filename) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=3] + %en = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %i, i32* %3, align 4 + store i8* %filename, i8** %4, align 4 + %5 = call i32* @__errno_location() nounwind readnone ; [#uses=1] + %6 = load i32* %5 ; [#uses=1] + store i32 %6, i32* %en, align 4 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %11 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %10, i32 1) + store i32 1, i32* %1 + br label %29 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %12) + %13 = load i8** %4, align 4 ; [#uses=1] + %14 = icmp ne i8* %13, null ; [#uses=1] + br i1 %14, label %15, label %21 + +; <label>:15 ; preds = %11 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = load i8** %4, align 4 ; [#uses=1] + %18 = load i32* %en, align 4 ; [#uses=1] + %19 = call i8* @strerror(i32 %18) ; [#uses=1] + %20 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %16, i8* getelementptr inbounds ([7 x i8]* @.str20391, i32 0, i32 0), i8* %17, i8* %19) ; [#uses=0] + br label %26 + +; <label>:21 ; preds = %11 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load i32* %en, align 4 ; [#uses=1] + %24 = call i8* @strerror(i32 %23) ; [#uses=1] + %25 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %22, i8* getelementptr inbounds ([3 x i8]* @.str21392, i32 0, i32 0), i8* %24) ; [#uses=0] + br label %26 + +; <label>:26 ; preds = %21, %15 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %en, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %27, i32 %28) + store i32 3, i32* %1 + br label %29 + +; <label>:29 ; preds = %26, %9 + %30 = load i32* %1 ; [#uses=1] + ret i32 %30 +} + +; [#uses=6] +define internal %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15lua_newuserdataP9lua_Statej(%struct.lua_State* %2, i32 4) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + store %struct._IO_FILE** %4, %struct._IO_FILE*** %pf, align 4 + %5 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* null, %struct._IO_FILE** %5 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -10000, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %7, i32 -2) ; [#uses=0] + %9 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + ret %struct._IO_FILE** %9 +} + +; [#uses=3] +define internal i32 @_Z9aux_closeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_getfenvP9lua_Statei(%struct.lua_State* %2, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -1, i8* getelementptr inbounds ([8 x i8]* @.str23394, i32 0, i32 0)) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 (%struct.lua_State*)* (%struct.lua_State*, i32)* @_Z15lua_tocfunctionP9lua_Statei(%struct.lua_State* %4, i32 -1) ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 %5(%struct.lua_State* %6) ; [#uses=1] + ret i32 %7 +} + +; [#uses=2] +define internal i32 @_Z7g_writeP9lua_StateP8_IO_FILEi(%struct.lua_State* %L, %struct._IO_FILE* %f, i32 %arg) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + %3 = alloca i32, align 4 ; [#uses=6] + %nargs = alloca i32, align 4 ; [#uses=3] + %status = alloca i32, align 4 ; [#uses=6] + %l = alloca i32, align 4 ; [#uses=3] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %2, align 4 + store i32 %arg, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %4) ; [#uses=1] + %6 = sub nsw i32 %5, 1 ; [#uses=1] + store i32 %6, i32* %nargs, align 4 + store i32 1, i32* %status, align 4 + br label %7 + +; <label>:7 ; preds = %46, %0 + %8 = load i32* %nargs, align 4 ; [#uses=2] + %9 = add nsw i32 %8, -1 ; [#uses=1] + store i32 %9, i32* %nargs, align 4 + %10 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %10, label %11, label %49 + +; <label>:11 ; preds = %7 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %3, align 4 ; [#uses=1] + %14 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %12, i32 %13) ; [#uses=1] + %15 = icmp eq i32 %14, 3 ; [#uses=1] + br i1 %15, label %16, label %29 + +; <label>:16 ; preds = %11 + %17 = load i32* %status, align 4 ; [#uses=1] + %18 = icmp ne i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %26 + +; <label>:19 ; preds = %16 + %20 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = call double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %21, i32 %22) ; [#uses=1] + %24 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf(%struct._IO_FILE* %20, i8* getelementptr inbounds ([6 x i8]* @.str28399, i32 0, i32 0), double %23) ; [#uses=1] + %25 = icmp sgt i32 %24, 0 ; [#uses=1] + br label %26 + +; <label>:26 ; preds = %19, %16 + %27 = phi i1 [ false, %16 ], [ %25, %19 ] ; [#uses=1] + %28 = zext i1 %27 to i32 ; [#uses=1] + store i32 %28, i32* %status, align 4 + br label %45 + +; <label>:29 ; preds = %11 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = load i32* %3, align 4 ; [#uses=1] + %32 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %30, i32 %31, i32* %l) ; [#uses=1] + store i8* %32, i8** %s, align 4 + %33 = load i32* %status, align 4 ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %42 + +; <label>:35 ; preds = %29 + %36 = load i8** %s, align 4 ; [#uses=1] + %37 = load i32* %l, align 4 ; [#uses=1] + %38 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %39 = call i32 @fwrite(i8* %36, i32 1, i32 %37, %struct._IO_FILE* %38) ; [#uses=1] + %40 = load i32* %l, align 4 ; [#uses=1] + %41 = icmp eq i32 %39, %40 ; [#uses=1] + br label %42 + +; <label>:42 ; preds = %35, %29 + %43 = phi i1 [ false, %29 ], [ %41, %35 ] ; [#uses=1] + %44 = zext i1 %43 to i32 ; [#uses=1] + store i32 %44, i32* %status, align 4 + br label %45 + +; <label>:45 ; preds = %42, %26 + br label %46 + +; <label>:46 ; preds = %45 + %47 = load i32* %3, align 4 ; [#uses=1] + %48 = add nsw i32 %47, 1 ; [#uses=1] + store i32 %48, i32* %3, align 4 + br label %7 + +; <label>:49 ; preds = %7 + %50 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %51 = load i32* %status, align 4 ; [#uses=1] + %52 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %50, i32 %51, i8* null) ; [#uses=1] + ret i32 %52 +} + +; [#uses=8] +define internal %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %f = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([6 x i8]* @.str19390, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to %struct._IO_FILE** ; [#uses=1] + store %struct._IO_FILE** %4, %struct._IO_FILE*** %f, align 4 + %5 = load %struct._IO_FILE*** %f, align 4 ; [#uses=1] + %6 = load %struct._IO_FILE** %5 ; [#uses=1] + %7 = icmp eq %struct._IO_FILE* %6, null ; [#uses=1] + br i1 %7, label %8, label %11 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %9, i8* getelementptr inbounds ([29 x i8]* @.str27398, i32 0, i32 0)) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %8, %0 + %12 = load %struct._IO_FILE*** %f, align 4 ; [#uses=1] + %13 = load %struct._IO_FILE** %12 ; [#uses=1] + ret %struct._IO_FILE* %13 +} + +; [#uses=1] +declare i32 @fwrite(i8*, i32, i32, %struct._IO_FILE*) + +; [#uses=1] +declare i32 @setvbuf(%struct._IO_FILE*, i8*, i32, i32) nounwind + +; [#uses=1] +declare i32 @fseek(%struct._IO_FILE*, i32, i32) + +; [#uses=1] +declare i32 @ftell(%struct._IO_FILE*) + +; [#uses=2] +define internal i32 @_Z6g_readP9lua_StateP8_IO_FILEi(%struct.lua_State* %L, %struct._IO_FILE* %f, i32 %first) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=17] + %3 = alloca %struct._IO_FILE*, align 4 ; [#uses=9] + %4 = alloca i32, align 4 ; [#uses=4] + %nargs = alloca i32, align 4 ; [#uses=5] + %success = alloca i32, align 4 ; [#uses=8] + %n = alloca i32, align 4 ; [#uses=10] + %l = alloca i32, align 4 ; [#uses=3] + %p = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %3, align 4 + store i32 %first, i32* %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %5) ; [#uses=1] + %7 = sub nsw i32 %6, 1 ; [#uses=1] + store i32 %7, i32* %nargs, align 4 + %8 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + call void @clearerr(%struct._IO_FILE* %8) nounwind + %9 = load i32* %nargs, align 4 ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %17 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %14 = call i32 @_Z9read_lineP9lua_StateP8_IO_FILE(%struct.lua_State* %12, %struct._IO_FILE* %13) ; [#uses=1] + store i32 %14, i32* %success, align 4 + %15 = load i32* %4, align 4 ; [#uses=1] + %16 = add nsw i32 %15, 1 ; [#uses=1] + store i32 %16, i32* %n, align 4 + br label %98 + +; <label>:17 ; preds = %0 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = load i32* %nargs, align 4 ; [#uses=1] + %20 = add nsw i32 %19, 20 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %18, i32 %20, i8* getelementptr inbounds ([19 x i8]* @.str35406, i32 0, i32 0)) + store i32 1, i32* %success, align 4 + %21 = load i32* %4, align 4 ; [#uses=1] + store i32 %21, i32* %n, align 4 + br label %22 + +; <label>:22 ; preds = %94, %17 + %23 = load i32* %nargs, align 4 ; [#uses=2] + %24 = add nsw i32 %23, -1 ; [#uses=1] + store i32 %24, i32* %nargs, align 4 + %25 = icmp ne i32 %23, 0 ; [#uses=1] + br i1 %25, label %26, label %29 + +; <label>:26 ; preds = %22 + %27 = load i32* %success, align 4 ; [#uses=1] + %28 = icmp ne i32 %27, 0 ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %26, %22 + %30 = phi i1 [ false, %22 ], [ %28, %26 ] ; [#uses=1] + br i1 %30, label %31, label %97 + +; <label>:31 ; preds = %29 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = load i32* %n, align 4 ; [#uses=1] + %34 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %32, i32 %33) ; [#uses=1] + %35 = icmp eq i32 %34, 3 ; [#uses=1] + br i1 %35, label %36, label %53 + +; <label>:36 ; preds = %31 + %37 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %38 = load i32* %n, align 4 ; [#uses=1] + %39 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %37, i32 %38) ; [#uses=1] + store i32 %39, i32* %l, align 4 + %40 = load i32* %l, align 4 ; [#uses=1] + %41 = icmp eq i32 %40, 0 ; [#uses=1] + br i1 %41, label %42, label %46 + +; <label>:42 ; preds = %36 + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %44 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %45 = call i32 @_Z8test_eofP9lua_StateP8_IO_FILE(%struct.lua_State* %43, %struct._IO_FILE* %44) ; [#uses=1] + br label %51 + +; <label>:46 ; preds = %36 + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %49 = load i32* %l, align 4 ; [#uses=1] + %50 = call i32 @_Z10read_charsP9lua_StateP8_IO_FILEj(%struct.lua_State* %47, %struct._IO_FILE* %48, i32 %49) ; [#uses=1] + br label %51 + +; <label>:51 ; preds = %46, %42 + %52 = phi i32 [ %45, %42 ], [ %50, %46 ] ; [#uses=1] + store i32 %52, i32* %success, align 4 + br label %93 + +; <label>:53 ; preds = %31 + %54 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %55 = load i32* %n, align 4 ; [#uses=1] + %56 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %54, i32 %55, i32* null) ; [#uses=1] + store i8* %56, i8** %p, align 4 + %57 = load i8** %p, align 4 ; [#uses=1] + %58 = icmp ne i8* %57, null ; [#uses=1] + br i1 %58, label %59, label %65 + +; <label>:59 ; preds = %53 + %60 = load i8** %p, align 4 ; [#uses=1] + %61 = getelementptr inbounds i8* %60, i32 0 ; [#uses=1] + %62 = load i8* %61 ; [#uses=1] + %63 = sext i8 %62 to i32 ; [#uses=1] + %64 = icmp eq i32 %63, 42 ; [#uses=1] + br i1 %64, label %70, label %65 + +; <label>:65 ; preds = %59, %53 + %66 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %67 = load i32* %n, align 4 ; [#uses=1] + %68 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %66, i32 %67, i8* getelementptr inbounds ([15 x i8]* @.str36407, i32 0, i32 0)) ; [#uses=1] + %69 = icmp ne i32 %68, 0 ; [#uses=1] + br label %70 + +; <label>:70 ; preds = %65, %59 + %71 = phi i1 [ true, %59 ], [ %69, %65 ] ; [#uses=0] + %72 = load i8** %p, align 4 ; [#uses=1] + %73 = getelementptr inbounds i8* %72, i32 1 ; [#uses=1] + %74 = load i8* %73 ; [#uses=1] + %75 = sext i8 %74 to i32 ; [#uses=1] + switch i32 %75, label %88 [ + i32 110, label %76 + i32 108, label %80 + i32 97, label %84 + ] + +; <label>:76 ; preds = %70 + %77 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %78 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %79 = call i32 @_Z11read_numberP9lua_StateP8_IO_FILE(%struct.lua_State* %77, %struct._IO_FILE* %78) ; [#uses=1] + store i32 %79, i32* %success, align 4 + br label %92 + +; <label>:80 ; preds = %70 + %81 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %82 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %83 = call i32 @_Z9read_lineP9lua_StateP8_IO_FILE(%struct.lua_State* %81, %struct._IO_FILE* %82) ; [#uses=1] + store i32 %83, i32* %success, align 4 + br label %92 + +; <label>:84 ; preds = %70 + %85 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %86 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %87 = call i32 @_Z10read_charsP9lua_StateP8_IO_FILEj(%struct.lua_State* %85, %struct._IO_FILE* %86, i32 -1) ; [#uses=0] + store i32 1, i32* %success, align 4 + br label %92 + +; <label>:88 ; preds = %70 + %89 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %90 = load i32* %n, align 4 ; [#uses=1] + %91 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %89, i32 %90, i8* getelementptr inbounds ([15 x i8]* @.str37408, i32 0, i32 0)) ; [#uses=1] + store i32 %91, i32* %1 + br label %115 + +; <label>:92 ; preds = %84, %80, %76 + br label %93 + +; <label>:93 ; preds = %92, %51 + br label %94 + +; <label>:94 ; preds = %93 + %95 = load i32* %n, align 4 ; [#uses=1] + %96 = add nsw i32 %95, 1 ; [#uses=1] + store i32 %96, i32* %n, align 4 + br label %22 + +; <label>:97 ; preds = %29 + br label %98 + +; <label>:98 ; preds = %97, %11 + %99 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %100 = call i32 @ferror(%struct._IO_FILE* %99) nounwind ; [#uses=1] + %101 = icmp ne i32 %100, 0 ; [#uses=1] + br i1 %101, label %102, label %105 + +; <label>:102 ; preds = %98 + %103 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %104 = call i32 @_Z10pushresultP9lua_StateiPKc(%struct.lua_State* %103, i32 0, i8* null) ; [#uses=1] + store i32 %104, i32* %1 + br label %115 + +; <label>:105 ; preds = %98 + %106 = load i32* %success, align 4 ; [#uses=1] + %107 = icmp ne i32 %106, 0 ; [#uses=1] + br i1 %107, label %111, label %108 + +; <label>:108 ; preds = %105 + %109 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %109, i32 -2) + %110 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %110) + br label %111 + +; <label>:111 ; preds = %108, %105 + %112 = load i32* %n, align 4 ; [#uses=1] + %113 = load i32* %4, align 4 ; [#uses=1] + %114 = sub nsw i32 %112, %113 ; [#uses=1] + store i32 %114, i32* %1 + br label %115 + +; <label>:115 ; preds = %111, %102, %88 + %116 = load i32* %1 ; [#uses=1] + ret i32 %116 +} + +; [#uses=1] +declare void @clearerr(%struct._IO_FILE*) nounwind + +; [#uses=3] +define internal i32 @_Z9read_lineP9lua_StateP8_IO_FILE(%struct.lua_State* %L, %struct._IO_FILE* %f) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %3 = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=6] + %l = alloca i32, align 4 ; [#uses=5] + %p = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + br label %5 + +; <label>:5 ; preds = %40, %0 + %6 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + store i8* %6, i8** %p, align 4 + %7 = load i8** %p, align 4 ; [#uses=1] + %8 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %9 = call i8* @fgets(i8* %7, i32 8192, %struct._IO_FILE* %8) ; [#uses=1] + %10 = icmp eq i8* %9, null ; [#uses=1] + br i1 %10, label %11, label %16 + +; <label>:11 ; preds = %5 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %12, i32 -1) ; [#uses=1] + %14 = icmp ugt i32 %13, 0 ; [#uses=1] + %15 = zext i1 %14 to i32 ; [#uses=1] + store i32 %15, i32* %1 + br label %41 + +; <label>:16 ; preds = %5 + %17 = load i8** %p, align 4 ; [#uses=1] + %18 = call i32 @strlen(i8* %17) ; [#uses=1] + store i32 %18, i32* %l, align 4 + %19 = load i32* %l, align 4 ; [#uses=1] + %20 = icmp eq i32 %19, 0 ; [#uses=1] + br i1 %20, label %29, label %21 + +; <label>:21 ; preds = %16 + %22 = load i32* %l, align 4 ; [#uses=1] + %23 = sub i32 %22, 1 ; [#uses=1] + %24 = load i8** %p, align 4 ; [#uses=1] + %25 = getelementptr inbounds i8* %24, i32 %23 ; [#uses=1] + %26 = load i8* %25 ; [#uses=1] + %27 = sext i8 %26 to i32 ; [#uses=1] + %28 = icmp ne i32 %27, 10 ; [#uses=1] + br i1 %28, label %29, label %34 + +; <label>:29 ; preds = %21, %16 + %30 = load i32* %l, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %32 = load i8** %31, align 4 ; [#uses=1] + %33 = getelementptr inbounds i8* %32, i32 %30 ; [#uses=1] + store i8* %33, i8** %31, align 4 + br label %40 + +; <label>:34 ; preds = %21 + %35 = load i32* %l, align 4 ; [#uses=1] + %36 = sub i32 %35, 1 ; [#uses=1] + %37 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %38 = load i8** %37, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 %36 ; [#uses=1] + store i8* %39, i8** %37, align 4 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + store i32 1, i32* %1 + br label %41 + +; <label>:40 ; preds = %29 + br label %5 + +; <label>:41 ; preds = %34, %11 + %42 = load i32* %1 ; [#uses=1] + ret i32 %42 +} + +; [#uses=1] +define internal i32 @_Z8test_eofP9lua_StateP8_IO_FILE(%struct.lua_State* %L, %struct._IO_FILE* %f) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + %c = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %2, align 4 + %3 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %4 = call i32 @_IO_getc(%struct._IO_FILE* %3) ; [#uses=1] + store i32 %4, i32* %c, align 4 + %5 = load i32* %c, align 4 ; [#uses=1] + %6 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %7 = call i32 @ungetc(i32 %5, %struct._IO_FILE* %6) ; [#uses=0] + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %8, i8* null, i32 0) + %9 = load i32* %c, align 4 ; [#uses=1] + %10 = icmp ne i32 %9, -1 ; [#uses=1] + %11 = zext i1 %10 to i32 ; [#uses=1] + ret i32 %11 +} + +; [#uses=2] +define internal i32 @_Z10read_charsP9lua_StateP8_IO_FILEj(%struct.lua_State* %L, %struct._IO_FILE* %f, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=7] + %rlen = alloca i32, align 4 ; [#uses=5] + %nr = alloca i32, align 4 ; [#uses=4] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=4] + %p = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %2, align 4 + store i32 %n, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + store i32 8192, i32* %rlen, align 4 + br label %5 + +; <label>:5 ; preds = %31, %0 + %6 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + store i8* %6, i8** %p, align 4 + %7 = load i32* %rlen, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + %9 = icmp ugt i32 %7, %8 ; [#uses=1] + br i1 %9, label %10, label %12 + +; <label>:10 ; preds = %5 + %11 = load i32* %3, align 4 ; [#uses=1] + store i32 %11, i32* %rlen, align 4 + br label %12 + +; <label>:12 ; preds = %10, %5 + %13 = load i8** %p, align 4 ; [#uses=1] + %14 = load i32* %rlen, align 4 ; [#uses=1] + %15 = load %struct._IO_FILE** %2, align 4 ; [#uses=1] + %16 = call i32 @fread(i8* %13, i32 1, i32 %14, %struct._IO_FILE* %15) ; [#uses=1] + store i32 %16, i32* %nr, align 4 + %17 = load i32* %nr, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %19 = load i8** %18, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8* %19, i32 %17 ; [#uses=1] + store i8* %20, i8** %18, align 4 + %21 = load i32* %nr, align 4 ; [#uses=1] + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = sub i32 %22, %21 ; [#uses=1] + store i32 %23, i32* %3, align 4 + br label %24 + +; <label>:24 ; preds = %12 + %25 = load i32* %3, align 4 ; [#uses=1] + %26 = icmp ugt i32 %25, 0 ; [#uses=1] + br i1 %26, label %27, label %31 + +; <label>:27 ; preds = %24 + %28 = load i32* %nr, align 4 ; [#uses=1] + %29 = load i32* %rlen, align 4 ; [#uses=1] + %30 = icmp eq i32 %28, %29 ; [#uses=1] + br label %31 + +; <label>:31 ; preds = %27, %24 + %32 = phi i1 [ false, %24 ], [ %30, %27 ] ; [#uses=1] + br i1 %32, label %5, label %33 + +; <label>:33 ; preds = %31 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + %34 = load i32* %3, align 4 ; [#uses=1] + %35 = icmp eq i32 %34, 0 ; [#uses=1] + br i1 %35, label %40, label %36 + +; <label>:36 ; preds = %33 + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %37, i32 -1) ; [#uses=1] + %39 = icmp ugt i32 %38, 0 ; [#uses=1] + br label %40 + +; <label>:40 ; preds = %36, %33 + %41 = phi i1 [ true, %33 ], [ %39, %36 ] ; [#uses=1] + %42 = zext i1 %41 to i32 ; [#uses=1] + ret i32 %42 +} + +; [#uses=1] +define internal i32 @_Z11read_numberP9lua_StateP8_IO_FILE(%struct.lua_State* %L, %struct._IO_FILE* %f) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca %struct._IO_FILE*, align 4 ; [#uses=2] + %d = alloca double, align 8 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store %struct._IO_FILE* %f, %struct._IO_FILE** %3, align 4 + %4 = load %struct._IO_FILE** %3, align 4 ; [#uses=1] + %5 = call i32 (%struct._IO_FILE*, i8*, ...)* @fscanf(%struct._IO_FILE* %4, i8* getelementptr inbounds ([4 x i8]* @.str38409, i32 0, i32 0), double* %d) ; [#uses=1] + %6 = icmp eq i32 %5, 1 ; [#uses=1] + br i1 %6, label %7, label %10 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = load double* %d, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %8, double %9) + store i32 1, i32* %1 + br label %11 + +; <label>:10 ; preds = %0 + store i32 0, i32* %1 + br label %11 + +; <label>:11 ; preds = %10, %7 + %12 = load i32* %1 ; [#uses=1] + ret i32 %12 +} + +; [#uses=1] +declare i32 @fscanf(%struct._IO_FILE*, i8*, ...) + +; [#uses=2] +define internal void @_Z9aux_linesP9lua_Stateii(%struct.lua_State* %L, i32 %idx, i32 %toclose) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %idx, i32* %2, align 4 + store i32 %toclose, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %4, i32 %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %6, i32 %7) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %8, i32 (%struct.lua_State*)* @_Z11io_readlineP9lua_State, i32 2) + ret void +} + +; [#uses=1] +define internal i32 @_Z11io_readlineP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=4] + %sucess = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %3, i32 -10003) ; [#uses=1] + %5 = bitcast i8* %4 to %struct._IO_FILE** ; [#uses=1] + %6 = load %struct._IO_FILE** %5 ; [#uses=1] + store %struct._IO_FILE* %6, %struct._IO_FILE** %f, align 4 + %7 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %8 = icmp eq %struct._IO_FILE* %7, null ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %10, i8* getelementptr inbounds ([23 x i8]* @.str39410, i32 0, i32 0)) ; [#uses=0] + br label %12 + +; <label>:12 ; preds = %9, %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %15 = call i32 @_Z9read_lineP9lua_StateP8_IO_FILE(%struct.lua_State* %13, %struct._IO_FILE* %14) ; [#uses=1] + store i32 %15, i32* %sucess, align 4 + %16 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %17 = call i32 @ferror(%struct._IO_FILE* %16) nounwind ; [#uses=1] + %18 = icmp ne i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %25 + +; <label>:19 ; preds = %12 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %21 = call i32* @__errno_location() nounwind readnone ; [#uses=1] + %22 = load i32* %21 ; [#uses=1] + %23 = call i8* @strerror(i32 %22) ; [#uses=1] + %24 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %20, i8* getelementptr inbounds ([3 x i8]* @.str21392, i32 0, i32 0), i8* %23) ; [#uses=1] + store i32 %24, i32* %1 + br label %39 + +; <label>:25 ; preds = %12 + %26 = load i32* %sucess, align 4 ; [#uses=1] + %27 = icmp ne i32 %26, 0 ; [#uses=1] + br i1 %27, label %28, label %29 + +; <label>:28 ; preds = %25 + store i32 1, i32* %1 + br label %39 + +; <label>:29 ; preds = %25 + %30 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %31 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %30, i32 -10004) ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %38 + +; <label>:33 ; preds = %29 + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %34, i32 0) + %35 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %35, i32 -10003) + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %37 = call i32 @_Z9aux_closeP9lua_State(%struct.lua_State* %36) ; [#uses=0] + br label %38 + +; <label>:38 ; preds = %33, %29 + store i32 0, i32* %1 + br label %39 + +; <label>:39 ; preds = %38, %28, %19 + %40 = load i32* %1 ; [#uses=1] + ret i32 %40 +} + +; [#uses=3] +define internal %struct._IO_FILE* @_Z9getiofileP9lua_Statei(%struct.lua_State* %L, i32 %findex) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=3] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %findex, i32* %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %3, i32 -10001, i32 %4) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %5, i32 -1) ; [#uses=1] + %7 = bitcast i8* %6 to %struct._IO_FILE** ; [#uses=1] + %8 = load %struct._IO_FILE** %7 ; [#uses=1] + store %struct._IO_FILE* %8, %struct._IO_FILE** %f, align 4 + %9 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %10 = icmp eq %struct._IO_FILE* %9, null ; [#uses=1] + br i1 %10, label %11, label %18 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = sub nsw i32 %13, 1 ; [#uses=1] + %15 = getelementptr inbounds [2 x i8*]* @_ZL6fnames, i32 0, i32 %14 ; [#uses=1] + %16 = load i8** %15 ; [#uses=1] + %17 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %12, i8* getelementptr inbounds ([27 x i8]* @.str40411, i32 0, i32 0), i8* %16) ; [#uses=0] + br label %18 + +; <label>:18 ; preds = %11, %0 + %19 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + ret %struct._IO_FILE* %19 +} + +; [#uses=1] +declare %struct._IO_FILE* @tmpfile() + +; [#uses=2] +define internal i32 @_Z8g_iofileP9lua_StateiPKc(%struct.lua_State* %L, i32 %f, i8* %mode) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %2 = alloca i32, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %filename = alloca i8*, align 4 ; [#uses=4] + %pf = alloca %struct._IO_FILE**, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %f, i32* %2, align 4 + store i8* %mode, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = icmp sle i32 %5, 0 ; [#uses=1] + br i1 %6, label %33, label %7 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %8, i32 1, i32* null) ; [#uses=1] + store i8* %9, i8** %filename, align 4 + %10 = load i8** %filename, align 4 ; [#uses=1] + %11 = icmp ne i8* %10, null ; [#uses=1] + br i1 %11, label %12, label %26 + +; <label>:12 ; preds = %7 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = call %struct._IO_FILE** @_Z7newfileP9lua_State(%struct.lua_State* %13) ; [#uses=1] + store %struct._IO_FILE** %14, %struct._IO_FILE*** %pf, align 4 + %15 = load i8** %filename, align 4 ; [#uses=1] + %16 = load i8** %3, align 4 ; [#uses=1] + %17 = call %struct._IO_FILE* @fopen(i8* %15, i8* %16) ; [#uses=1] + %18 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + store %struct._IO_FILE* %17, %struct._IO_FILE** %18 + %19 = load %struct._IO_FILE*** %pf, align 4 ; [#uses=1] + %20 = load %struct._IO_FILE** %19 ; [#uses=1] + %21 = icmp eq %struct._IO_FILE* %20, null ; [#uses=1] + br i1 %21, label %22, label %25 + +; <label>:22 ; preds = %12 + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load i8** %filename, align 4 ; [#uses=1] + call void @_Z9fileerrorP9lua_StateiPKc(%struct.lua_State* %23, i32 1, i8* %24) + br label %25 + +; <label>:25 ; preds = %22, %12 + br label %30 + +; <label>:26 ; preds = %7 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %28 = call %struct._IO_FILE* @_Z6tofileP9lua_State(%struct.lua_State* %27) ; [#uses=0] + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %29, i32 1) + br label %30 + +; <label>:30 ; preds = %26, %25 + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %32 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %31, i32 -10001, i32 %32) + br label %33 + +; <label>:33 ; preds = %30, %0 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %34, i32 -10001, i32 %35) + ret i32 1 +} + +; [#uses=2] +define internal void @_Z9fileerrorP9lua_StateiPKc(%struct.lua_State* %L, i32 %arg, i8* %filename) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %arg, i32* %2, align 4 + store i8* %filename, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = call i32* @__errno_location() nounwind readnone ; [#uses=1] + %7 = load i32* %6 ; [#uses=1] + %8 = call i8* @strerror(i32 %7) ; [#uses=1] + %9 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %4, i8* getelementptr inbounds ([7 x i8]* @.str20391, i32 0, i32 0), i8* %5, i8* %8) ; [#uses=0] + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %12, i32 -1, i32* null) ; [#uses=1] + %14 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %10, i32 %11, i8* %13) ; [#uses=0] + ret void +} + +; [#uses=1] +define internal i32 @_Z8math_absP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @fabs(double %4) nounwind readnone ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_acosP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @acos(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_asinP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @asin(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10math_atan2P9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %5, i32 2) ; [#uses=1] + %7 = call double @atan2(double %4, double %6) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %7) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_atanP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @atan(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_ceilP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @ceil(double %4) nounwind readnone ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_coshP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @cosh(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_cosP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @cos(double %4) ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_degP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = fdiv double %4, 0x3F91DF46A2529D39 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_expP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @exp(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10math_floorP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @floor(double %4) nounwind readnone ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_fmodP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %5, i32 2) ; [#uses=1] + %7 = call double @fmod(double %4, double %6) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %7) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10math_frexpP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %e = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @frexp(double %4, i32* %e) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %e, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %6, i32 %7) + ret i32 2 +} + +; [#uses=1] +define internal i32 @_Z10math_ldexpP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %5, i32 2) ; [#uses=1] + %7 = call double @ldexp(double %4, i32 %6) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %7) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10math_log10P9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @log10(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_logP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @log(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_maxP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %n = alloca i32, align 4 ; [#uses=2] + %dmax = alloca double, align 8 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=5] + %d = alloca double, align 8 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store i32 %3, i32* %n, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + store double %5, double* %dmax, align 8 + store i32 2, i32* %i, align 4 + br label %6 + +; <label>:6 ; preds = %20, %0 + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = load i32* %n, align 4 ; [#uses=1] + %9 = icmp sle i32 %7, %8 ; [#uses=1] + br i1 %9, label %10, label %23 + +; <label>:10 ; preds = %6 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %11, i32 %12) ; [#uses=1] + store double %13, double* %d, align 8 + %14 = load double* %d, align 8 ; [#uses=1] + %15 = load double* %dmax, align 8 ; [#uses=1] + %16 = fcmp ogt double %14, %15 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %10 + %18 = load double* %d, align 8 ; [#uses=1] + store double %18, double* %dmax, align 8 + br label %19 + +; <label>:19 ; preds = %17, %10 + br label %20 + +; <label>:20 ; preds = %19 + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + store i32 %22, i32* %i, align 4 + br label %6 + +; <label>:23 ; preds = %6 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load double* %dmax, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %24, double %25) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_minP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %n = alloca i32, align 4 ; [#uses=2] + %dmin = alloca double, align 8 ; [#uses=4] + %i = alloca i32, align 4 ; [#uses=5] + %d = alloca double, align 8 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store i32 %3, i32* %n, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + store double %5, double* %dmin, align 8 + store i32 2, i32* %i, align 4 + br label %6 + +; <label>:6 ; preds = %20, %0 + %7 = load i32* %i, align 4 ; [#uses=1] + %8 = load i32* %n, align 4 ; [#uses=1] + %9 = icmp sle i32 %7, %8 ; [#uses=1] + br i1 %9, label %10, label %23 + +; <label>:10 ; preds = %6 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %i, align 4 ; [#uses=1] + %13 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %11, i32 %12) ; [#uses=1] + store double %13, double* %d, align 8 + %14 = load double* %d, align 8 ; [#uses=1] + %15 = load double* %dmin, align 8 ; [#uses=1] + %16 = fcmp olt double %14, %15 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %10 + %18 = load double* %d, align 8 ; [#uses=1] + store double %18, double* %dmin, align 8 + br label %19 + +; <label>:19 ; preds = %17, %10 + br label %20 + +; <label>:20 ; preds = %19 + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + store i32 %22, i32* %i, align 4 + br label %6 + +; <label>:23 ; preds = %6 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load double* %dmin, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %24, double %25) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_modfP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %ip = alloca double, align 8 ; [#uses=2] + %fp = alloca double, align 8 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + %4 = call double @modf(double %3, double* %ip) nounwind ; [#uses=1] + store double %4, double* %fp, align 8 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load double* %ip, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %5, double %6) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = load double* %fp, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %7, double %8) + ret i32 2 +} + +; [#uses=1] +define internal i32 @_Z8math_powP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %5, i32 2) ; [#uses=1] + %7 = call double @llvm.pow.f64(double %4, double %6) ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %7) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_radP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = fmul double %4, 0x3F91DF46A2529D39 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11math_randomP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %r = alloca double, align 8 ; [#uses=4] + %u = alloca i32, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=4] + %u1 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = call i32 @rand() nounwind ; [#uses=1] + %4 = srem i32 %3, 2147483647 ; [#uses=1] + %5 = sitofp i32 %4 to double ; [#uses=1] + %6 = fdiv double %5, 0x41DFFFFFFFC00000 ; [#uses=1] + store double %6, double* %r, align 8 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %7) ; [#uses=1] + switch i32 %8, label %56 [ + i32 0, label %9 + i32 1, label %12 + i32 2, label %30 + ] + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = load double* %r, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %10, double %11) + br label %59 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %13, i32 1) ; [#uses=1] + store i32 %14, i32* %u, align 4 + %15 = load i32* %u, align 4 ; [#uses=1] + %16 = icmp sle i32 1, %15 ; [#uses=1] + br i1 %16, label %21, label %17 + +; <label>:17 ; preds = %12 + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %18, i32 1, i8* getelementptr inbounds ([18 x i8]* @.str32449, i32 0, i32 0)) ; [#uses=1] + %20 = icmp ne i32 %19, 0 ; [#uses=1] + br label %21 + +; <label>:21 ; preds = %17, %12 + %22 = phi i1 [ true, %12 ], [ %20, %17 ] ; [#uses=0] + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %24 = load double* %r, align 8 ; [#uses=1] + %25 = load i32* %u, align 4 ; [#uses=1] + %26 = sitofp i32 %25 to double ; [#uses=1] + %27 = fmul double %24, %26 ; [#uses=1] + %28 = call double @floor(double %27) nounwind readnone ; [#uses=1] + %29 = fadd double %28, 1.000000e+00 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %23, double %29) + br label %59 + +; <label>:30 ; preds = %0 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %32 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %31, i32 1) ; [#uses=1] + store i32 %32, i32* %l, align 4 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %33, i32 2) ; [#uses=1] + store i32 %34, i32* %u1, align 4 + %35 = load i32* %l, align 4 ; [#uses=1] + %36 = load i32* %u1, align 4 ; [#uses=1] + %37 = icmp sle i32 %35, %36 ; [#uses=1] + br i1 %37, label %42, label %38 + +; <label>:38 ; preds = %30 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %39, i32 2, i8* getelementptr inbounds ([18 x i8]* @.str32449, i32 0, i32 0)) ; [#uses=1] + %41 = icmp ne i32 %40, 0 ; [#uses=1] + br label %42 + +; <label>:42 ; preds = %38, %30 + %43 = phi i1 [ true, %30 ], [ %41, %38 ] ; [#uses=0] + %44 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %45 = load double* %r, align 8 ; [#uses=1] + %46 = load i32* %u1, align 4 ; [#uses=1] + %47 = load i32* %l, align 4 ; [#uses=1] + %48 = sub nsw i32 %46, %47 ; [#uses=1] + %49 = add nsw i32 %48, 1 ; [#uses=1] + %50 = sitofp i32 %49 to double ; [#uses=1] + %51 = fmul double %45, %50 ; [#uses=1] + %52 = call double @floor(double %51) nounwind readnone ; [#uses=1] + %53 = load i32* %l, align 4 ; [#uses=1] + %54 = sitofp i32 %53 to double ; [#uses=1] + %55 = fadd double %52, %54 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %44, double %55) + br label %59 + +; <label>:56 ; preds = %0 + %57 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %58 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %57, i8* getelementptr inbounds ([26 x i8]* @.str33450, i32 0, i32 0)) ; [#uses=1] + store i32 %58, i32* %1 + br label %60 + +; <label>:59 ; preds = %42, %21, %9 + store i32 1, i32* %1 + br label %60 + +; <label>:60 ; preds = %59, %56 + %61 = load i32* %1 ; [#uses=1] + ret i32 %61 +} + +; [#uses=1] +define internal i32 @_Z15math_randomseedP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + call void @srand(i32 %3) nounwind + ret i32 0 +} + +; [#uses=1] +define internal i32 @_Z9math_sinhP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @sinh(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_sinP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @sin(double %4) ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_sqrtP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @sqrt(double %4) ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9math_tanhP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @tanh(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8math_tanP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = call double @tan(double %4) nounwind ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define i32 @_Z12luaopen_mathP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %2, i8* getelementptr inbounds ([5 x i8]* @.str28445, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([29 x %struct.luaL_Reg]* @_ZL7mathlib, i32 0, i32 0)) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %3, double 0x400921FB54442D18) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %4, i32 -2, i8* getelementptr inbounds ([3 x i8]* @.str29446, i32 0, i32 0)) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %5, double 0x7FF0000000000000) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -2, i8* getelementptr inbounds ([5 x i8]* @.str30447, i32 0, i32 0)) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %7, i32 -1, i8* getelementptr inbounds ([5 x i8]* @.str11428, i32 0, i32 0)) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %8, i32 -2, i8* getelementptr inbounds ([4 x i8]* @.str31448, i32 0, i32 0)) + ret i32 1 +} + +; [#uses=1] +declare double @tan(double) nounwind + +; [#uses=1] +declare double @tanh(double) nounwind + +; [#uses=1] +declare double @sqrt(double) nounwind readnone + +; [#uses=1] +declare double @sin(double) nounwind readnone + +; [#uses=1] +declare double @sinh(double) nounwind + +; [#uses=1] +declare void @srand(i32) nounwind + +; [#uses=1] +declare i32 @rand() nounwind + +; [#uses=1] +declare double @modf(double, double*) nounwind + +; [#uses=1] +declare double @log(double) nounwind + +; [#uses=1] +declare double @log10(double) nounwind + +; [#uses=1] +declare double @ldexp(double, i32) nounwind + +; [#uses=1] +declare double @frexp(double, i32*) nounwind + +; [#uses=1] +declare double @fmod(double, double) nounwind + +; [#uses=1] +declare double @exp(double) nounwind + +; [#uses=1] +declare double @cos(double) nounwind readnone + +; [#uses=1] +declare double @cosh(double) nounwind + +; [#uses=1] +declare double @ceil(double) nounwind readnone + +; [#uses=1] +declare double @atan(double) nounwind + +; [#uses=1] +declare double @atan2(double, double) nounwind + +; [#uses=1] +declare double @asin(double) nounwind + +; [#uses=1] +declare double @acos(double) nounwind + +; [#uses=1] +declare double @fabs(double) nounwind readnone + +; [#uses=1] +define internal i32 @_Z8os_clockP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @clock() nounwind ; [#uses=1] + %4 = sitofp i32 %3 to double ; [#uses=1] + %5 = fdiv double %4, 1.000000e+06 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7os_dateP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=16] + %s = alloca i8*, align 4 ; [#uses=13] + %t = alloca i32, align 4 ; [#uses=3] + %stm = alloca %struct.tm*, align 4 ; [#uses=13] + %cc = alloca [3 x i8], align 1 ; [#uses=4] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=7] + %reslen = alloca i32, align 4 ; [#uses=2] + %buff = alloca [200 x i8], align 1 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([3 x i8]* @.str27479, i32 0, i32 0), i32* null) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %4, i32 2) ; [#uses=1] + %6 = icmp sle i32 %5, 0 ; [#uses=1] + br i1 %6, label %7, label %9 + +; <label>:7 ; preds = %0 + %8 = call i32 @time(i32* null) nounwind ; [#uses=1] + br label %13 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %10, i32 2) ; [#uses=1] + %12 = fptosi double %11 to i32 ; [#uses=1] + br label %13 + +; <label>:13 ; preds = %9, %7 + %14 = phi i32 [ %8, %7 ], [ %12, %9 ] ; [#uses=1] + store i32 %14, i32* %t, align 4 + %15 = load i8** %s, align 4 ; [#uses=1] + %16 = load i8* %15 ; [#uses=1] + %17 = sext i8 %16 to i32 ; [#uses=1] + %18 = icmp eq i32 %17, 33 ; [#uses=1] + br i1 %18, label %19, label %23 + +; <label>:19 ; preds = %13 + %20 = call %struct.tm* @gmtime(i32* %t) nounwind ; [#uses=1] + store %struct.tm* %20, %struct.tm** %stm, align 4 + %21 = load i8** %s, align 4 ; [#uses=1] + %22 = getelementptr inbounds i8* %21, i32 1 ; [#uses=1] + store i8* %22, i8** %s, align 4 + br label %25 + +; <label>:23 ; preds = %13 + %24 = call %struct.tm* @localtime(i32* %t) nounwind ; [#uses=1] + store %struct.tm* %24, %struct.tm** %stm, align 4 + br label %25 + +; <label>:25 ; preds = %23, %19 + %26 = load %struct.tm** %stm, align 4 ; [#uses=1] + %27 = icmp eq %struct.tm* %26, null ; [#uses=1] + br i1 %27, label %28, label %30 + +; <label>:28 ; preds = %25 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %29) + br label %129 + +; <label>:30 ; preds = %25 + %31 = load i8** %s, align 4 ; [#uses=1] + %32 = call i32 @strcmp(i8* %31, i8* getelementptr inbounds ([3 x i8]* @.str28480, i32 0, i32 0)) nounwind readonly ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %76 + +; <label>:34 ; preds = %30 + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %35, i32 0, i32 9) + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %37 = load %struct.tm** %stm, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.tm* %37, i32 0, i32 0 ; [#uses=1] + %39 = load i32* %38, align 4 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %36, i8* getelementptr inbounds ([4 x i8]* @.str13465, i32 0, i32 0), i32 %39) + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = load %struct.tm** %stm, align 4 ; [#uses=1] + %42 = getelementptr inbounds %struct.tm* %41, i32 0, i32 1 ; [#uses=1] + %43 = load i32* %42, align 4 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %40, i8* getelementptr inbounds ([4 x i8]* @.str14466, i32 0, i32 0), i32 %43) + %44 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %45 = load %struct.tm** %stm, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.tm* %45, i32 0, i32 2 ; [#uses=1] + %47 = load i32* %46, align 4 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %44, i8* getelementptr inbounds ([5 x i8]* @.str15467, i32 0, i32 0), i32 %47) + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = load %struct.tm** %stm, align 4 ; [#uses=1] + %50 = getelementptr inbounds %struct.tm* %49, i32 0, i32 3 ; [#uses=1] + %51 = load i32* %50, align 4 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %48, i8* getelementptr inbounds ([4 x i8]* @.str16468, i32 0, i32 0), i32 %51) + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = load %struct.tm** %stm, align 4 ; [#uses=1] + %54 = getelementptr inbounds %struct.tm* %53, i32 0, i32 4 ; [#uses=1] + %55 = load i32* %54, align 4 ; [#uses=1] + %56 = add nsw i32 %55, 1 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %52, i8* getelementptr inbounds ([6 x i8]* @.str17469, i32 0, i32 0), i32 %56) + %57 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %58 = load %struct.tm** %stm, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.tm* %58, i32 0, i32 5 ; [#uses=1] + %60 = load i32* %59, align 4 ; [#uses=1] + %61 = add nsw i32 %60, 1900 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %57, i8* getelementptr inbounds ([5 x i8]* @.str18470, i32 0, i32 0), i32 %61) + %62 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %63 = load %struct.tm** %stm, align 4 ; [#uses=1] + %64 = getelementptr inbounds %struct.tm* %63, i32 0, i32 6 ; [#uses=1] + %65 = load i32* %64, align 4 ; [#uses=1] + %66 = add nsw i32 %65, 1 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %62, i8* getelementptr inbounds ([5 x i8]* @.str29481, i32 0, i32 0), i32 %66) + %67 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %68 = load %struct.tm** %stm, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.tm* %68, i32 0, i32 7 ; [#uses=1] + %70 = load i32* %69, align 4 ; [#uses=1] + %71 = add nsw i32 %70, 1 ; [#uses=1] + call void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %67, i8* getelementptr inbounds ([5 x i8]* @.str30482, i32 0, i32 0), i32 %71) + %72 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %73 = load %struct.tm** %stm, align 4 ; [#uses=1] + %74 = getelementptr inbounds %struct.tm* %73, i32 0, i32 8 ; [#uses=1] + %75 = load i32* %74, align 4 ; [#uses=1] + call void @_Z12setboolfieldP9lua_StatePKci(%struct.lua_State* %72, i8* getelementptr inbounds ([6 x i8]* @.str19471, i32 0, i32 0), i32 %75) + br label %128 + +; <label>:76 ; preds = %30 + %77 = getelementptr inbounds [3 x i8]* %cc, i32 0, i32 0 ; [#uses=1] + store i8 37, i8* %77 + %78 = getelementptr inbounds [3 x i8]* %cc, i32 0, i32 2 ; [#uses=1] + store i8 0, i8* %78 + %79 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %79, %struct.luaL_Buffer* %b) + br label %80 + +; <label>:80 ; preds = %124, %76 + %81 = load i8** %s, align 4 ; [#uses=1] + %82 = load i8* %81 ; [#uses=1] + %83 = icmp ne i8 %82, 0 ; [#uses=1] + br i1 %83, label %84, label %127 + +; <label>:84 ; preds = %80 + %85 = load i8** %s, align 4 ; [#uses=1] + %86 = load i8* %85 ; [#uses=1] + %87 = sext i8 %86 to i32 ; [#uses=1] + %88 = icmp ne i32 %87, 37 ; [#uses=1] + br i1 %88, label %95, label %89 + +; <label>:89 ; preds = %84 + %90 = load i8** %s, align 4 ; [#uses=1] + %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] + %92 = load i8* %91 ; [#uses=1] + %93 = sext i8 %92 to i32 ; [#uses=1] + %94 = icmp eq i32 %93, 0 ; [#uses=1] + br i1 %94, label %95, label %112 + +; <label>:95 ; preds = %89, %84 + %96 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %97 = load i8** %96, align 4 ; [#uses=1] + %98 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %99 = getelementptr inbounds [8192 x i8]* %98, i32 0, i32 0 ; [#uses=1] + %100 = getelementptr inbounds i8* %99, i32 8192 ; [#uses=1] + %101 = icmp ult i8* %97, %100 ; [#uses=1] + br i1 %101, label %105, label %102 + +; <label>:102 ; preds = %95 + %103 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %104 = icmp ne i8* %103, null ; [#uses=1] + br label %105 + +; <label>:105 ; preds = %102, %95 + %106 = phi i1 [ true, %95 ], [ %104, %102 ] ; [#uses=0] + %107 = load i8** %s, align 4 ; [#uses=1] + %108 = load i8* %107 ; [#uses=1] + %109 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %110 = load i8** %109, align 4 ; [#uses=2] + %111 = getelementptr inbounds i8* %110, i32 1 ; [#uses=1] + store i8* %111, i8** %109, align 4 + store i8 %108, i8* %110 + br label %123 + +; <label>:112 ; preds = %89 + %113 = load i8** %s, align 4 ; [#uses=1] + %114 = getelementptr inbounds i8* %113, i32 1 ; [#uses=2] + store i8* %114, i8** %s, align 4 + %115 = load i8* %114 ; [#uses=1] + %116 = getelementptr inbounds [3 x i8]* %cc, i32 0, i32 1 ; [#uses=1] + store i8 %115, i8* %116 + %117 = getelementptr inbounds [200 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %118 = getelementptr inbounds [3 x i8]* %cc, i32 0, i32 0 ; [#uses=1] + %119 = load %struct.tm** %stm, align 4 ; [#uses=1] + %120 = call i32 @strftime(i8* %117, i32 200, i8* %118, %struct.tm* %119) nounwind ; [#uses=1] + store i32 %120, i32* %reslen, align 4 + %121 = getelementptr inbounds [200 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %122 = load i32* %reslen, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %121, i32 %122) + br label %123 + +; <label>:123 ; preds = %112, %105 + br label %124 + +; <label>:124 ; preds = %123 + %125 = load i8** %s, align 4 ; [#uses=1] + %126 = getelementptr inbounds i8* %125, i32 1 ; [#uses=1] + store i8* %126, i8** %s, align 4 + br label %80 + +; <label>:127 ; preds = %80 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + br label %128 + +; <label>:128 ; preds = %127, %34 + br label %129 + +; <label>:129 ; preds = %128, %28 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11os_difftimeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = fptosi double %4 to i32 ; [#uses=1] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call double @_Z14luaL_optnumberP9lua_Stateid(%struct.lua_State* %6, i32 2, double 0.000000e+00) ; [#uses=1] + %8 = fptosi double %7 to i32 ; [#uses=1] + %9 = call double @difftime(i32 %5, i32 %8) nounwind readnone ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %2, double %9) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10os_executeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %3, i32 1, i8* null, i32* null) ; [#uses=1] + %5 = call i32 @system(i8* %4) ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %2, i32 %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7os_exitP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=1] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 0) ; [#uses=1] + call void @exit(i32 %4) noreturn + unreachable + ; No predecessors! + %6 = load i32* %1 ; [#uses=1] + ret i32 %6 +} + +; [#uses=1] +define internal i32 @_Z9os_getenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + %5 = call i8* @getenv(i8* %4) nounwind ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %2, i8* %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9os_removeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %filename = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=1] + store i8* %3, i8** %filename, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i8** %filename, align 4 ; [#uses=1] + %6 = call i32 @remove(i8* %5) nounwind ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + %8 = zext i1 %7 to i32 ; [#uses=1] + %9 = load i8** %filename, align 4 ; [#uses=1] + %10 = call i32 @_Z13os_pushresultP9lua_StateiPKc(%struct.lua_State* %4, i32 %8, i8* %9) ; [#uses=1] + ret i32 %10 +} + +; [#uses=1] +define internal i32 @_Z9os_renameP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %fromname = alloca i8*, align 4 ; [#uses=3] + %toname = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=1] + store i8* %3, i8** %fromname, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %4, i32 2, i32* null) ; [#uses=1] + store i8* %5, i8** %toname, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %fromname, align 4 ; [#uses=1] + %8 = load i8** %toname, align 4 ; [#uses=1] + %9 = call i32 @rename(i8* %7, i8* %8) nounwind ; [#uses=1] + %10 = icmp eq i32 %9, 0 ; [#uses=1] + %11 = zext i1 %10 to i32 ; [#uses=1] + %12 = load i8** %fromname, align 4 ; [#uses=1] + %13 = call i32 @_Z13os_pushresultP9lua_StateiPKc(%struct.lua_State* %6, i32 %11, i8* %12) ; [#uses=1] + ret i32 %13 +} + +; [#uses=1] +define internal i32 @_Z12os_setlocaleP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %l = alloca i8*, align 4 ; [#uses=2] + %op = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 1, i8* null, i32* null) ; [#uses=1] + store i8* %3, i8** %l, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z16luaL_checkoptionP9lua_StateiPKcPKS2_(%struct.lua_State* %4, i32 2, i8* getelementptr inbounds ([4 x i8]* @.str21473, i32 0, i32 0), i8** getelementptr inbounds ([7 x i8*]* @_ZZ12os_setlocaleP9lua_StateE8catnames, i32 0, i32 0)) ; [#uses=1] + store i32 %5, i32* %op, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %op, align 4 ; [#uses=1] + %8 = getelementptr inbounds [6 x i32]* @_ZZ12os_setlocaleP9lua_StateE3cat, i32 0, i32 %7 ; [#uses=1] + %9 = load i32* %8 ; [#uses=1] + %10 = load i8** %l, align 4 ; [#uses=1] + %11 = call i8* @setlocale(i32 %9, i8* %10) nounwind ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %6, i8* %11) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7os_timeP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %t = alloca i32, align 4 ; [#uses=4] + %ts = alloca %struct.tm, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + %4 = icmp sle i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %7 + +; <label>:5 ; preds = %0 + %6 = call i32 @time(i32* null) nounwind ; [#uses=1] + store i32 %6, i32* %t, align 4 + br label %34 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %8, i32 1, i32 5) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %9, i32 1) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %10, i8* getelementptr inbounds ([4 x i8]* @.str13465, i32 0, i32 0), i32 0) ; [#uses=1] + %12 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 0 ; [#uses=1] + store i32 %11, i32* %12, align 4 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %13, i8* getelementptr inbounds ([4 x i8]* @.str14466, i32 0, i32 0), i32 0) ; [#uses=1] + %15 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 1 ; [#uses=1] + store i32 %14, i32* %15, align 4 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %16, i8* getelementptr inbounds ([5 x i8]* @.str15467, i32 0, i32 0), i32 12) ; [#uses=1] + %18 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 2 ; [#uses=1] + store i32 %17, i32* %18, align 4 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %19, i8* getelementptr inbounds ([4 x i8]* @.str16468, i32 0, i32 0), i32 -1) ; [#uses=1] + %21 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 3 ; [#uses=1] + store i32 %20, i32* %21, align 4 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %22, i8* getelementptr inbounds ([6 x i8]* @.str17469, i32 0, i32 0), i32 -1) ; [#uses=1] + %24 = sub nsw i32 %23, 1 ; [#uses=1] + %25 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 4 ; [#uses=1] + store i32 %24, i32* %25, align 4 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = call i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %26, i8* getelementptr inbounds ([5 x i8]* @.str18470, i32 0, i32 0), i32 -1) ; [#uses=1] + %28 = sub nsw i32 %27, 1900 ; [#uses=1] + %29 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 5 ; [#uses=1] + store i32 %28, i32* %29, align 4 + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %31 = call i32 @_Z12getboolfieldP9lua_StatePKc(%struct.lua_State* %30, i8* getelementptr inbounds ([6 x i8]* @.str19471, i32 0, i32 0)) ; [#uses=1] + %32 = getelementptr inbounds %struct.tm* %ts, i32 0, i32 8 ; [#uses=1] + store i32 %31, i32* %32, align 4 + %33 = call i32 @mktime(%struct.tm* %ts) nounwind ; [#uses=1] + store i32 %33, i32* %t, align 4 + br label %34 + +; <label>:34 ; preds = %7, %5 + %35 = load i32* %t, align 4 ; [#uses=1] + %36 = icmp eq i32 %35, -1 ; [#uses=1] + br i1 %36, label %37, label %39 + +; <label>:37 ; preds = %34 + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %38) + br label %43 + +; <label>:39 ; preds = %34 + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = load i32* %t, align 4 ; [#uses=1] + %42 = sitofp i32 %41 to double ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %40, double %42) + br label %43 + +; <label>:43 ; preds = %39, %37 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10os_tmpnameP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %buff = alloca [20 x i8], align 1 ; [#uses=2] + %err = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = getelementptr inbounds [20 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %4 = call i8* @tmpnam(i8* %3) nounwind ; [#uses=1] + %5 = icmp eq i8* %4, null ; [#uses=1] + %6 = zext i1 %5 to i32 ; [#uses=1] + store i32 %6, i32* %err, align 4 + %7 = load i32* %err, align 4 ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %10, i8* getelementptr inbounds ([37 x i8]* @.str12464, i32 0, i32 0)) ; [#uses=1] + store i32 %11, i32* %1 + br label %15 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds [20 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %13, i8* %14) + store i32 1, i32* %1 + br label %15 + +; <label>:15 ; preds = %12, %9 + %16 = load i32* %1 ; [#uses=1] + ret i32 %16 +} + +; [#uses=1] +define i32 @_Z10luaopen_osP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %2, i8* getelementptr inbounds ([3 x i8]* @.str11463, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([12 x %struct.luaL_Reg]* @_ZL6syslib, i32 0, i32 0)) + ret i32 1 +} + +; [#uses=1] +declare i8* @tmpnam(i8*) nounwind + +; [#uses=2] +declare i32 @time(i32*) nounwind + +; [#uses=6] +define internal i32 @_Z8getfieldP9lua_StatePKci(%struct.lua_State* %L, i8* %key, i32 %d) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %3 = alloca i8*, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=3] + %res = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %key, i8** %3, align 4 + store i32 %d, i32* %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i8** %3, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %5, i32 -1, i8* %6) + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z12lua_isnumberP9lua_Statei(%struct.lua_State* %7, i32 -1) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %11, i32 -1) ; [#uses=1] + store i32 %12, i32* %res, align 4 + br label %22 + +; <label>:13 ; preds = %0 + %14 = load i32* %4, align 4 ; [#uses=1] + %15 = icmp slt i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %20 + +; <label>:16 ; preds = %13 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %17, i8* getelementptr inbounds ([33 x i8]* @.str20472, i32 0, i32 0), i8* %18) ; [#uses=1] + store i32 %19, i32* %1 + br label %25 + +; <label>:20 ; preds = %13 + %21 = load i32* %4, align 4 ; [#uses=1] + store i32 %21, i32* %res, align 4 + br label %22 + +; <label>:22 ; preds = %20, %10 + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %23, i32 -2) + %24 = load i32* %res, align 4 ; [#uses=1] + store i32 %24, i32* %1 + br label %25 + +; <label>:25 ; preds = %22, %16 + %26 = load i32* %1 ; [#uses=1] + ret i32 %26 +} + +; [#uses=1] +define internal i32 @_Z12getboolfieldP9lua_StatePKc(%struct.lua_State* %L, i8* %key) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=2] + %res = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %key, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -1, i8* %4) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %5, i32 -1) ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %9 + +; <label>:8 ; preds = %0 + br label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %10, i32 -1) ; [#uses=1] + br label %12 + +; <label>:12 ; preds = %9, %8 + %13 = phi i32 [ -1, %8 ], [ %11, %9 ] ; [#uses=1] + store i32 %13, i32* %res, align 4 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %14, i32 -2) + %15 = load i32* %res, align 4 ; [#uses=1] + ret i32 %15 +} + +; [#uses=1] +declare i32 @mktime(%struct.tm*) nounwind + +; [#uses=1] +declare i8* @setlocale(i32, i8*) nounwind + +; [#uses=2] +define internal i32 @_Z13os_pushresultP9lua_StateiPKc(%struct.lua_State* %L, i32 %i, i8* %filename) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + %en = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %i, i32* %3, align 4 + store i8* %filename, i8** %4, align 4 + %5 = call i32* @__errno_location() nounwind readnone ; [#uses=1] + %6 = load i32* %5 ; [#uses=1] + store i32 %6, i32* %en, align 4 + %7 = load i32* %3, align 4 ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %11 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %10, i32 1) + store i32 1, i32* %1 + br label %20 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %12) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load i8** %4, align 4 ; [#uses=1] + %15 = load i32* %en, align 4 ; [#uses=1] + %16 = call i8* @strerror(i32 %15) ; [#uses=1] + %17 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([7 x i8]* @.str26478, i32 0, i32 0), i8* %14, i8* %16) ; [#uses=0] + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = load i32* %en, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %18, i32 %19) + store i32 3, i32* %1 + br label %20 + +; <label>:20 ; preds = %11, %9 + %21 = load i32* %1 ; [#uses=1] + ret i32 %21 +} + +; [#uses=1] +declare i32 @rename(i8*, i8*) nounwind + +; [#uses=1] +declare i32 @remove(i8*) nounwind + +; [#uses=1] +declare i32 @system(i8*) + +; [#uses=1] +declare double @difftime(i32, i32) nounwind readnone + +; [#uses=1] +declare %struct.tm* @gmtime(i32*) nounwind + +; [#uses=1] +declare %struct.tm* @localtime(i32*) nounwind + +; [#uses=8] +define internal void @_Z8setfieldP9lua_StatePKci(%struct.lua_State* %L, i8* %key, i32 %value) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %key, i8** %2, align 4 + store i32 %value, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %4, i32 %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -2, i8* %7) + ret void +} + +; [#uses=1] +define internal void @_Z12setboolfieldP9lua_StatePKci(%struct.lua_State* %L, i8* %key, i32 %value) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %key, i8** %2, align 4 + store i32 %value, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = icmp slt i32 %4, 0 ; [#uses=1] + br i1 %5, label %6, label %7 + +; <label>:6 ; preds = %0 + br label %12 + +; <label>:7 ; preds = %0 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %8, i32 %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %10, i32 -2, i8* %11) + br label %12 + +; <label>:12 ; preds = %7, %6 + ret void +} + +; [#uses=1] +declare i32 @strftime(i8*, i32, i8*, %struct.tm*) nounwind + +; [#uses=1] +declare i32 @clock() nounwind + +; [#uses=1] +define internal i32 @_Z7tconcatP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=5] + %lsep = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=7] + %last = alloca i32, align 4 ; [#uses=3] + %sep = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_optlstringP9lua_StateiPKcPj(%struct.lua_State* %2, i32 2, i8* getelementptr inbounds ([1 x i8]* @.str10493, i32 0, i32 0), i32* %lsep) ; [#uses=1] + store i8* %3, i8** %sep, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 5) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %5, i32 3, i32 1) ; [#uses=1] + store i32 %6, i32* %i, align 4 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %7, i32 4) ; [#uses=1] + %9 = icmp sle i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %11, i32 1) ; [#uses=1] + br label %16 + +; <label>:13 ; preds = %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %14, i32 4) ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %13, %10 + %17 = phi i32 [ %12, %10 ], [ %15, %13 ] ; [#uses=1] + store i32 %17, i32* %last, align 4 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %18, %struct.luaL_Buffer* %b) + br label %19 + +; <label>:19 ; preds = %28, %16 + %20 = load i32* %i, align 4 ; [#uses=1] + %21 = load i32* %last, align 4 ; [#uses=1] + %22 = icmp slt i32 %20, %21 ; [#uses=1] + br i1 %22, label %23, label %31 + +; <label>:23 ; preds = %19 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load i32* %i, align 4 ; [#uses=1] + call void @_Z8addfieldP9lua_StateP11luaL_Bufferi(%struct.lua_State* %24, %struct.luaL_Buffer* %b, i32 %25) + %26 = load i8** %sep, align 4 ; [#uses=1] + %27 = load i32* %lsep, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %26, i32 %27) + br label %28 + +; <label>:28 ; preds = %23 + %29 = load i32* %i, align 4 ; [#uses=1] + %30 = add nsw i32 %29, 1 ; [#uses=1] + store i32 %30, i32* %i, align 4 + br label %19 + +; <label>:31 ; preds = %19 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = load i32* %last, align 4 ; [#uses=1] + %34 = icmp eq i32 %32, %33 ; [#uses=1] + br i1 %34, label %35, label %38 + +; <label>:35 ; preds = %31 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %37 = load i32* %i, align 4 ; [#uses=1] + call void @_Z8addfieldP9lua_StateP11luaL_Bufferi(%struct.lua_State* %36, %struct.luaL_Buffer* %b, i32 %37) + br label %38 + +; <label>:38 ; preds = %35, %31 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7foreachP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %4, i32 2, i32 6) + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %5) + br label %6 + +; <label>:6 ; preds = %19, %0 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z8lua_nextP9lua_Statei(%struct.lua_State* %7, i32 1) ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %21 + +; <label>:10 ; preds = %6 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %11, i32 2) + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %12, i32 -3) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %13, i32 -3) + %14 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %14, i32 2, i32 1) + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %15, i32 -1) ; [#uses=1] + %17 = icmp eq i32 %16, 0 ; [#uses=1] + br i1 %17, label %19, label %18 + +; <label>:18 ; preds = %10 + store i32 1, i32* %1 + br label %22 + +; <label>:19 ; preds = %10 + %20 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %20, i32 -3) + br label %6 + +; <label>:21 ; preds = %6 + store i32 0, i32* %1 + br label %22 + +; <label>:22 ; preds = %21, %18 + %23 = load i32* %1 ; [#uses=1] + ret i32 %23 +} + +; [#uses=1] +define internal i32 @_Z8foreachiP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=10] + %i = alloca i32, align 4 ; [#uses=6] + %n = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + store i32 %5, i32* %n, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %6, i32 2, i32 6) + store i32 1, i32* %i, align 4 + br label %7 + +; <label>:7 ; preds = %24, %0 + %8 = load i32* %i, align 4 ; [#uses=1] + %9 = load i32* %n, align 4 ; [#uses=1] + %10 = icmp sle i32 %8, %9 ; [#uses=1] + br i1 %10, label %11, label %27 + +; <label>:11 ; preds = %7 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %12, i32 2) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load i32* %i, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %13, i32 %14) + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %15, i32 1, i32 %16) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %17, i32 2, i32 1) + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %18, i32 -1) ; [#uses=1] + %20 = icmp eq i32 %19, 0 ; [#uses=1] + br i1 %20, label %22, label %21 + +; <label>:21 ; preds = %11 + store i32 1, i32* %1 + br label %28 + +; <label>:22 ; preds = %11 + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %23, i32 -2) + br label %24 + +; <label>:24 ; preds = %22 + %25 = load i32* %i, align 4 ; [#uses=1] + %26 = add nsw i32 %25, 1 ; [#uses=1] + store i32 %26, i32* %i, align 4 + br label %7 + +; <label>:27 ; preds = %7 + store i32 0, i32* %1 + br label %28 + +; <label>:28 ; preds = %27, %21 + %29 = load i32* %1 ; [#uses=1] + ret i32 %29 +} + +; [#uses=1] +define internal i32 @_Z4getnP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %2, i32 %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z4maxnP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %max = alloca double, align 8 ; [#uses=4] + %v = alloca double, align 8 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store double 0.000000e+00, double* %max, align 8 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %3) + br label %4 + +; <label>:4 ; preds = %22, %0 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_nextP9lua_Statei(%struct.lua_State* %5, i32 1) ; [#uses=1] + %7 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %23 + +; <label>:8 ; preds = %4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %9, i32 -2) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %10, i32 -1) ; [#uses=1] + %12 = icmp eq i32 %11, 3 ; [#uses=1] + br i1 %12, label %13, label %22 + +; <label>:13 ; preds = %8 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = call double @_Z12lua_tonumberP9lua_Statei(%struct.lua_State* %14, i32 -1) ; [#uses=1] + store double %15, double* %v, align 8 + %16 = load double* %v, align 8 ; [#uses=1] + %17 = load double* %max, align 8 ; [#uses=1] + %18 = fcmp ogt double %16, %17 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %13 + %20 = load double* %v, align 8 ; [#uses=1] + store double %20, double* %max, align 8 + br label %21 + +; <label>:21 ; preds = %19, %13 + br label %22 + +; <label>:22 ; preds = %21, %8 + br label %4 + +; <label>:23 ; preds = %4 + %24 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %25 = load double* %max, align 8 ; [#uses=1] + call void @_Z14lua_pushnumberP9lua_Stated(%struct.lua_State* %24, double %25) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7tinsertP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %e = alloca i32, align 4 ; [#uses=5] + %pos = alloca i32, align 4 ; [#uses=6] + %i = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + %6 = add nsw i32 %5, 1 ; [#uses=1] + store i32 %6, i32* %e, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %7) ; [#uses=1] + switch i32 %8, label %35 [ + i32 2, label %9 + i32 3, label %11 + ] + +; <label>:9 ; preds = %0 + %10 = load i32* %e, align 4 ; [#uses=1] + store i32 %10, i32* %pos, align 4 + br label %38 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %12, i32 2) ; [#uses=1] + store i32 %13, i32* %pos, align 4 + %14 = load i32* %pos, align 4 ; [#uses=1] + %15 = load i32* %e, align 4 ; [#uses=1] + %16 = icmp sgt i32 %14, %15 ; [#uses=1] + br i1 %16, label %17, label %19 + +; <label>:17 ; preds = %11 + %18 = load i32* %pos, align 4 ; [#uses=1] + store i32 %18, i32* %e, align 4 + br label %19 + +; <label>:19 ; preds = %17, %11 + %20 = load i32* %e, align 4 ; [#uses=1] + store i32 %20, i32* %i, align 4 + br label %21 + +; <label>:21 ; preds = %31, %19 + %22 = load i32* %i, align 4 ; [#uses=1] + %23 = load i32* %pos, align 4 ; [#uses=1] + %24 = icmp sgt i32 %22, %23 ; [#uses=1] + br i1 %24, label %25, label %34 + +; <label>:25 ; preds = %21 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load i32* %i, align 4 ; [#uses=1] + %28 = sub nsw i32 %27, 1 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %26, i32 1, i32 %28) + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %29, i32 1, i32 %30) + br label %31 + +; <label>:31 ; preds = %25 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = add nsw i32 %32, -1 ; [#uses=1] + store i32 %33, i32* %i, align 4 + br label %21 + +; <label>:34 ; preds = %21 + br label %38 + +; <label>:35 ; preds = %0 + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %37 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %36, i8* getelementptr inbounds ([38 x i8]* @.str13496, i32 0, i32 0)) ; [#uses=1] + store i32 %37, i32* %1 + br label %41 + +; <label>:38 ; preds = %34, %9 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = load i32* %pos, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %39, i32 1, i32 %40) + store i32 0, i32* %1 + br label %41 + +; <label>:41 ; preds = %38, %35 + %42 = load i32* %1 ; [#uses=1] + ret i32 %42 +} + +; [#uses=1] +define internal i32 @_Z7tremoveP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %e = alloca i32, align 4 ; [#uses=5] + %pos = alloca i32, align 4 ; [#uses=9] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %3, i32 1, i32 5) + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %4, i32 1) ; [#uses=1] + store i32 %5, i32* %e, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = load i32* %e, align 4 ; [#uses=1] + %8 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %6, i32 2, i32 %7) ; [#uses=1] + store i32 %8, i32* %pos, align 4 + %9 = load i32* %pos, align 4 ; [#uses=1] + %10 = icmp sle i32 1, %9 ; [#uses=1] + br i1 %10, label %11, label %15 + +; <label>:11 ; preds = %0 + %12 = load i32* %pos, align 4 ; [#uses=1] + %13 = load i32* %e, align 4 ; [#uses=1] + %14 = icmp sle i32 %12, %13 ; [#uses=1] + br i1 %14, label %16, label %15 + +; <label>:15 ; preds = %11, %0 + store i32 0, i32* %1 + br label %36 + +; <label>:16 ; preds = %11 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i32* %pos, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %17, i32 1, i32 %18) + br label %19 + +; <label>:19 ; preds = %29, %16 + %20 = load i32* %pos, align 4 ; [#uses=1] + %21 = load i32* %e, align 4 ; [#uses=1] + %22 = icmp slt i32 %20, %21 ; [#uses=1] + br i1 %22, label %23, label %32 + +; <label>:23 ; preds = %19 + %24 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %25 = load i32* %pos, align 4 ; [#uses=1] + %26 = add nsw i32 %25, 1 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %24, i32 1, i32 %26) + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %pos, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %27, i32 1, i32 %28) + br label %29 + +; <label>:29 ; preds = %23 + %30 = load i32* %pos, align 4 ; [#uses=1] + %31 = add nsw i32 %30, 1 ; [#uses=1] + store i32 %31, i32* %pos, align 4 + br label %19 + +; <label>:32 ; preds = %19 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %33) + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %35 = load i32* %e, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %34, i32 1, i32 %35) + store i32 1, i32* %1 + br label %36 + +; <label>:36 ; preds = %32, %15 + %37 = load i32* %1 ; [#uses=1] + ret i32 %37 +} + +; [#uses=1] +define internal i32 @_Z4setnP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %3, i8* getelementptr inbounds ([19 x i8]* @.str12495, i32 0, i32 0)) ; [#uses=0] + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %5, i32 1) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z4sortP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %n = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z10lua_objlenP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + store i32 %4, i32* %n, align 4 + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %5, i32 40, i8* getelementptr inbounds ([1 x i8]* @.str10493, i32 0, i32 0)) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 2) ; [#uses=1] + %8 = icmp sle i32 %7, 0 ; [#uses=1] + br i1 %8, label %11, label %9 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %10, i32 2, i32 6) + br label %11 + +; <label>:11 ; preds = %9, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %12, i32 2) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load i32* %n, align 4 ; [#uses=1] + call void @_Z7auxsortP9lua_Stateii(%struct.lua_State* %13, i32 1, i32 %14) + ret i32 0 +} + +; [#uses=1] +define i32 @_Z13luaopen_tableP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %2, i8* getelementptr inbounds ([6 x i8]* @.str9492, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([10 x %struct.luaL_Reg]* @_ZL9tab_funcs, i32 0, i32 0)) + ret i32 1 +} + +; [#uses=2] +define internal void @_Z7auxsortP9lua_Stateii(%struct.lua_State* %L, i32 %l, i32 %u) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=33] + %2 = alloca i32, align 4 ; [#uses=14] + %3 = alloca i32, align 4 ; [#uses=18] + %i = alloca i32, align 4 ; [#uses=22] + %j = alloca i32, align 4 ; [#uses=10] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %l, i32* %2, align 4 + store i32 %u, i32* %3, align 4 + br label %4 + +; <label>:4 ; preds = %151, %0 + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = icmp slt i32 %5, %6 ; [#uses=1] + br i1 %7, label %8, label %155 + +; <label>:8 ; preds = %4 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %9, i32 1, i32 %10) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %11, i32 1, i32 %12) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = call i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %13, i32 -1, i32 -2) ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %20 + +; <label>:16 ; preds = %8 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %18 = load i32* %2, align 4 ; [#uses=1] + %19 = load i32* %3, align 4 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %17, i32 %18, i32 %19) + br label %22 + +; <label>:20 ; preds = %8 + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %21, i32 -3) + br label %22 + +; <label>:22 ; preds = %20, %16 + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = load i32* %2, align 4 ; [#uses=1] + %25 = sub nsw i32 %23, %24 ; [#uses=1] + %26 = icmp eq i32 %25, 1 ; [#uses=1] + br i1 %26, label %27, label %28 + +; <label>:27 ; preds = %22 + br label %155 + +; <label>:28 ; preds = %22 + %29 = load i32* %2, align 4 ; [#uses=1] + %30 = load i32* %3, align 4 ; [#uses=1] + %31 = add nsw i32 %29, %30 ; [#uses=1] + %32 = sdiv i32 %31, 2 ; [#uses=1] + store i32 %32, i32* %i, align 4 + %33 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %34 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %33, i32 1, i32 %34) + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %36 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %35, i32 1, i32 %36) + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %38 = call i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %37, i32 -2, i32 -1) ; [#uses=1] + %39 = icmp ne i32 %38, 0 ; [#uses=1] + br i1 %39, label %40, label %44 + +; <label>:40 ; preds = %28 + %41 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = load i32* %2, align 4 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %41, i32 %42, i32 %43) + br label %58 + +; <label>:44 ; preds = %28 + %45 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %45, i32 -2) + %46 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %47 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %46, i32 1, i32 %47) + %48 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %49 = call i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %48, i32 -1, i32 -2) ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %55 + +; <label>:51 ; preds = %44 + %52 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %53 = load i32* %i, align 4 ; [#uses=1] + %54 = load i32* %3, align 4 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %52, i32 %53, i32 %54) + br label %57 + +; <label>:55 ; preds = %44 + %56 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %56, i32 -3) + br label %57 + +; <label>:57 ; preds = %55, %51 + br label %58 + +; <label>:58 ; preds = %57, %40 + %59 = load i32* %3, align 4 ; [#uses=1] + %60 = load i32* %2, align 4 ; [#uses=1] + %61 = sub nsw i32 %59, %60 ; [#uses=1] + %62 = icmp eq i32 %61, 2 ; [#uses=1] + br i1 %62, label %63, label %64 + +; <label>:63 ; preds = %58 + br label %155 + +; <label>:64 ; preds = %58 + %65 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %66 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %65, i32 1, i32 %66) + %67 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %67, i32 -1) + %68 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %69 = load i32* %3, align 4 ; [#uses=1] + %70 = sub nsw i32 %69, 1 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %68, i32 1, i32 %70) + %71 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %72 = load i32* %i, align 4 ; [#uses=1] + %73 = load i32* %3, align 4 ; [#uses=1] + %74 = sub nsw i32 %73, 1 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %71, i32 %72, i32 %74) + %75 = load i32* %2, align 4 ; [#uses=1] + store i32 %75, i32* %i, align 4 + %76 = load i32* %3, align 4 ; [#uses=1] + %77 = sub nsw i32 %76, 1 ; [#uses=1] + store i32 %77, i32* %j, align 4 + br label %78 + +; <label>:78 ; preds = %118, %64 + br label %79 + +; <label>:79 ; preds = %93, %78 + %80 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %81 = load i32* %i, align 4 ; [#uses=1] + %82 = add nsw i32 %81, 1 ; [#uses=2] + store i32 %82, i32* %i, align 4 + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %80, i32 1, i32 %82) + %83 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %84 = call i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %83, i32 -1, i32 -2) ; [#uses=1] + %85 = icmp ne i32 %84, 0 ; [#uses=1] + br i1 %85, label %86, label %95 + +; <label>:86 ; preds = %79 + %87 = load i32* %i, align 4 ; [#uses=1] + %88 = load i32* %3, align 4 ; [#uses=1] + %89 = icmp sgt i32 %87, %88 ; [#uses=1] + br i1 %89, label %90, label %93 + +; <label>:90 ; preds = %86 + %91 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %92 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %91, i8* getelementptr inbounds ([35 x i8]* @.str11494, i32 0, i32 0)) ; [#uses=0] + br label %93 + +; <label>:93 ; preds = %90, %86 + %94 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %94, i32 -2) + br label %79 + +; <label>:95 ; preds = %79 + br label %96 + +; <label>:96 ; preds = %110, %95 + %97 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %98 = load i32* %j, align 4 ; [#uses=1] + %99 = add nsw i32 %98, -1 ; [#uses=2] + store i32 %99, i32* %j, align 4 + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %97, i32 1, i32 %99) + %100 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %101 = call i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %100, i32 -3, i32 -1) ; [#uses=1] + %102 = icmp ne i32 %101, 0 ; [#uses=1] + br i1 %102, label %103, label %112 + +; <label>:103 ; preds = %96 + %104 = load i32* %j, align 4 ; [#uses=1] + %105 = load i32* %2, align 4 ; [#uses=1] + %106 = icmp slt i32 %104, %105 ; [#uses=1] + br i1 %106, label %107, label %110 + +; <label>:107 ; preds = %103 + %108 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %109 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %108, i8* getelementptr inbounds ([35 x i8]* @.str11494, i32 0, i32 0)) ; [#uses=0] + br label %110 + +; <label>:110 ; preds = %107, %103 + %111 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %111, i32 -2) + br label %96 + +; <label>:112 ; preds = %96 + %113 = load i32* %j, align 4 ; [#uses=1] + %114 = load i32* %i, align 4 ; [#uses=1] + %115 = icmp slt i32 %113, %114 ; [#uses=1] + br i1 %115, label %116, label %118 + +; <label>:116 ; preds = %112 + %117 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %117, i32 -4) + br label %122 + +; <label>:118 ; preds = %112 + %119 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %120 = load i32* %i, align 4 ; [#uses=1] + %121 = load i32* %j, align 4 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %119, i32 %120, i32 %121) + br label %78 + +; <label>:122 ; preds = %116 + %123 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %124 = load i32* %3, align 4 ; [#uses=1] + %125 = sub nsw i32 %124, 1 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %123, i32 1, i32 %125) + %126 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %127 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %126, i32 1, i32 %127) + %128 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %129 = load i32* %3, align 4 ; [#uses=1] + %130 = sub nsw i32 %129, 1 ; [#uses=1] + %131 = load i32* %i, align 4 ; [#uses=1] + call void @_Z4set2P9lua_Stateii(%struct.lua_State* %128, i32 %130, i32 %131) + %132 = load i32* %i, align 4 ; [#uses=1] + %133 = load i32* %2, align 4 ; [#uses=1] + %134 = sub nsw i32 %132, %133 ; [#uses=1] + %135 = load i32* %3, align 4 ; [#uses=1] + %136 = load i32* %i, align 4 ; [#uses=1] + %137 = sub nsw i32 %135, %136 ; [#uses=1] + %138 = icmp slt i32 %134, %137 ; [#uses=1] + br i1 %138, label %139, label %145 + +; <label>:139 ; preds = %122 + %140 = load i32* %2, align 4 ; [#uses=1] + store i32 %140, i32* %j, align 4 + %141 = load i32* %i, align 4 ; [#uses=1] + %142 = sub nsw i32 %141, 1 ; [#uses=1] + store i32 %142, i32* %i, align 4 + %143 = load i32* %i, align 4 ; [#uses=1] + %144 = add nsw i32 %143, 2 ; [#uses=1] + store i32 %144, i32* %2, align 4 + br label %151 + +; <label>:145 ; preds = %122 + %146 = load i32* %i, align 4 ; [#uses=1] + %147 = add nsw i32 %146, 1 ; [#uses=1] + store i32 %147, i32* %j, align 4 + %148 = load i32* %3, align 4 ; [#uses=1] + store i32 %148, i32* %i, align 4 + %149 = load i32* %j, align 4 ; [#uses=1] + %150 = sub nsw i32 %149, 2 ; [#uses=1] + store i32 %150, i32* %3, align 4 + br label %151 + +; <label>:151 ; preds = %145, %139 + %152 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %153 = load i32* %j, align 4 ; [#uses=1] + %154 = load i32* %i, align 4 ; [#uses=1] + call void @_Z7auxsortP9lua_Stateii(%struct.lua_State* %152, i32 %153, i32 %154) + br label %4 + +; <label>:155 ; preds = %63, %27, %4 + ret void +} + +; [#uses=5] +define internal i32 @_Z9sort_compP9lua_Stateii(%struct.lua_State* %L, i32 %a, i32 %b) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %3 = alloca i32, align 4 ; [#uses=3] + %4 = alloca i32, align 4 ; [#uses=3] + %res = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %a, i32* %3, align 4 + store i32 %b, i32* %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %5, i32 2) ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %21, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %9, i32 2) + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = load i32* %3, align 4 ; [#uses=1] + %12 = sub nsw i32 %11, 1 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %10, i32 %12) + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = load i32* %4, align 4 ; [#uses=1] + %15 = sub nsw i32 %14, 2 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %13, i32 %15) + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %16, i32 2, i32 1) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %17, i32 -1) ; [#uses=1] + store i32 %18, i32* %res, align 4 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %19, i32 -2) + %20 = load i32* %res, align 4 ; [#uses=1] + store i32 %20, i32* %1 + br label %26 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load i32* %3, align 4 ; [#uses=1] + %24 = load i32* %4, align 4 ; [#uses=1] + %25 = call i32 @_Z12lua_lessthanP9lua_Stateii(%struct.lua_State* %22, i32 %23, i32 %24) ; [#uses=1] + store i32 %25, i32* %1 + br label %26 + +; <label>:26 ; preds = %21, %8 + %27 = load i32* %1 ; [#uses=1] + ret i32 %27 +} + +; [#uses=6] +define internal void @_Z4set2P9lua_Stateii(%struct.lua_State* %L, i32 %i, i32 %j) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %i, i32* %2, align 4 + store i32 %j, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %6, i32 1, i32 %7) + ret void +} + +; [#uses=2] +define internal void @_Z8addfieldP9lua_StateP11luaL_Bufferi(%struct.lua_State* %L, %struct.luaL_Buffer* %b, i32 %i) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.luaL_Buffer* %b, %struct.luaL_Buffer** %2, align 4 + store i32 %i, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %4, i32 1, i32 %5) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %6, i32 -1) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %17, label %9 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %12, i32 -1) ; [#uses=1] + %14 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %11, i32 %13) ; [#uses=1] + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %10, i8* getelementptr inbounds ([53 x i8]* @.str14497, i32 0, i32 0), i8* %14, i32 %15) ; [#uses=0] + br label %17 + +; <label>:17 ; preds = %9, %0 + %18 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + call void @_Z13luaL_addvalueP11luaL_Buffer(%struct.luaL_Buffer* %18) + ret void +} + +; [#uses=1] +define internal i32 @_Z8str_byteP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %l = alloca i32, align 4 ; [#uses=5] + %s = alloca i8*, align 4 ; [#uses=2] + %posi = alloca i32, align 4 ; [#uses=8] + %pose = alloca i32, align 4 ; [#uses=6] + %n = alloca i32, align 4 ; [#uses=5] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* %l) ; [#uses=1] + store i8* %4, i8** %s, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %5, i32 2, i32 1) ; [#uses=1] + %7 = load i32* %l, align 4 ; [#uses=1] + %8 = call i32 @_Z8posrelatij(i32 %6, i32 %7) ; [#uses=1] + store i32 %8, i32* %posi, align 4 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = load i32* %posi, align 4 ; [#uses=1] + %11 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %9, i32 3, i32 %10) ; [#uses=1] + %12 = load i32* %l, align 4 ; [#uses=1] + %13 = call i32 @_Z8posrelatij(i32 %11, i32 %12) ; [#uses=1] + store i32 %13, i32* %pose, align 4 + %14 = load i32* %posi, align 4 ; [#uses=1] + %15 = icmp sle i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %17 + +; <label>:16 ; preds = %0 + store i32 1, i32* %posi, align 4 + br label %17 + +; <label>:17 ; preds = %16, %0 + %18 = load i32* %pose, align 4 ; [#uses=1] + %19 = load i32* %l, align 4 ; [#uses=1] + %20 = icmp ugt i32 %18, %19 ; [#uses=1] + br i1 %20, label %21, label %23 + +; <label>:21 ; preds = %17 + %22 = load i32* %l, align 4 ; [#uses=1] + store i32 %22, i32* %pose, align 4 + br label %23 + +; <label>:23 ; preds = %21, %17 + %24 = load i32* %posi, align 4 ; [#uses=1] + %25 = load i32* %pose, align 4 ; [#uses=1] + %26 = icmp sgt i32 %24, %25 ; [#uses=1] + br i1 %26, label %27, label %28 + +; <label>:27 ; preds = %23 + store i32 0, i32* %1 + br label %63 + +; <label>:28 ; preds = %23 + %29 = load i32* %pose, align 4 ; [#uses=1] + %30 = load i32* %posi, align 4 ; [#uses=1] + %31 = sub nsw i32 %29, %30 ; [#uses=1] + %32 = add nsw i32 %31, 1 ; [#uses=1] + store i32 %32, i32* %n, align 4 + %33 = load i32* %posi, align 4 ; [#uses=1] + %34 = load i32* %n, align 4 ; [#uses=1] + %35 = add nsw i32 %33, %34 ; [#uses=1] + %36 = load i32* %pose, align 4 ; [#uses=1] + %37 = icmp sle i32 %35, %36 ; [#uses=1] + br i1 %37, label %38, label %41 + +; <label>:38 ; preds = %28 + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %39, i8* getelementptr inbounds ([22 x i8]* @.str39537, i32 0, i32 0)) ; [#uses=0] + br label %41 + +; <label>:41 ; preds = %38, %28 + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %43 = load i32* %n, align 4 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %42, i32 %43, i8* getelementptr inbounds ([22 x i8]* @.str39537, i32 0, i32 0)) + store i32 0, i32* %i, align 4 + br label %44 + +; <label>:44 ; preds = %58, %41 + %45 = load i32* %i, align 4 ; [#uses=1] + %46 = load i32* %n, align 4 ; [#uses=1] + %47 = icmp slt i32 %45, %46 ; [#uses=1] + br i1 %47, label %48, label %61 + +; <label>:48 ; preds = %44 + %49 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %50 = load i32* %posi, align 4 ; [#uses=1] + %51 = load i32* %i, align 4 ; [#uses=1] + %52 = add nsw i32 %50, %51 ; [#uses=1] + %53 = sub nsw i32 %52, 1 ; [#uses=1] + %54 = load i8** %s, align 4 ; [#uses=1] + %55 = getelementptr inbounds i8* %54, i32 %53 ; [#uses=1] + %56 = load i8* %55 ; [#uses=1] + %57 = zext i8 %56 to i32 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %49, i32 %57) + br label %58 + +; <label>:58 ; preds = %48 + %59 = load i32* %i, align 4 ; [#uses=1] + %60 = add nsw i32 %59, 1 ; [#uses=1] + store i32 %60, i32* %i, align 4 + br label %44 + +; <label>:61 ; preds = %44 + %62 = load i32* %n, align 4 ; [#uses=1] + store i32 %62, i32* %1 + br label %63 + +; <label>:63 ; preds = %61, %27 + %64 = load i32* %1 ; [#uses=1] + ret i32 %64 +} + +; [#uses=1] +define internal i32 @_Z8str_charP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %n = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=6] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=6] + %c = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %2) ; [#uses=1] + store i32 %3, i32* %n, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + store i32 1, i32* %i, align 4 + br label %5 + +; <label>:5 ; preds = %41, %0 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load i32* %n, align 4 ; [#uses=1] + %8 = icmp sle i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %44 + +; <label>:9 ; preds = %5 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i32* %i, align 4 ; [#uses=1] + %12 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %10, i32 %11) ; [#uses=1] + store i32 %12, i32* %c, align 4 + %13 = load i32* %c, align 4 ; [#uses=1] + %14 = trunc i32 %13 to i8 ; [#uses=1] + %15 = zext i8 %14 to i32 ; [#uses=1] + %16 = load i32* %c, align 4 ; [#uses=1] + %17 = icmp eq i32 %15, %16 ; [#uses=1] + br i1 %17, label %23, label %18 + +; <label>:18 ; preds = %9 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %20 = load i32* %i, align 4 ; [#uses=1] + %21 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %19, i32 %20, i8* getelementptr inbounds ([14 x i8]* @.str38536, i32 0, i32 0)) ; [#uses=1] + %22 = icmp ne i32 %21, 0 ; [#uses=1] + br label %23 + +; <label>:23 ; preds = %18, %9 + %24 = phi i1 [ true, %9 ], [ %22, %18 ] ; [#uses=0] + %25 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %26 = load i8** %25, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %28 = getelementptr inbounds [8192 x i8]* %27, i32 0, i32 0 ; [#uses=1] + %29 = getelementptr inbounds i8* %28, i32 8192 ; [#uses=1] + %30 = icmp ult i8* %26, %29 ; [#uses=1] + br i1 %30, label %34, label %31 + +; <label>:31 ; preds = %23 + %32 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %33 = icmp ne i8* %32, null ; [#uses=1] + br label %34 + +; <label>:34 ; preds = %31, %23 + %35 = phi i1 [ true, %23 ], [ %33, %31 ] ; [#uses=0] + %36 = load i32* %c, align 4 ; [#uses=1] + %37 = trunc i32 %36 to i8 ; [#uses=1] + %38 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %39 = load i8** %38, align 4 ; [#uses=2] + %40 = getelementptr inbounds i8* %39, i32 1 ; [#uses=1] + store i8* %40, i8** %38, align 4 + store i8 %37, i8* %39 + br label %41 + +; <label>:41 ; preds = %34 + %42 = load i32* %i, align 4 ; [#uses=1] + %43 = add nsw i32 %42, 1 ; [#uses=1] + store i32 %43, i32* %i, align 4 + br label %5 + +; <label>:44 ; preds = %5 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8str_dumpP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 6) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %3, i32 1) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = bitcast %struct.luaL_Buffer* %b to i8* ; [#uses=1] + %7 = call i32 @_Z8lua_dumpP9lua_StatePFiS0_PKvjPvES3_(%struct.lua_State* %5, i32 (%struct.lua_State*, i8*, i32, i8*)* @_Z6writerP9lua_StatePKvjPv, i8* %6) ; [#uses=1] + %8 = icmp ne i32 %7, 0 ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %10, i8* getelementptr inbounds ([30 x i8]* @.str37535, i32 0, i32 0)) ; [#uses=0] + br label %12 + +; <label>:12 ; preds = %9, %0 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8str_findP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z12str_find_auxP9lua_Statei(%struct.lua_State* %2, i32 1) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z10str_formatP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %arg = alloca i32, align 4 ; [#uses=11] + %sfl = alloca i32, align 4 ; [#uses=2] + %strfrmt = alloca i8*, align 4 ; [#uses=15] + %strfrmt_end = alloca i8*, align 4 ; [#uses=2] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=13] + %form = alloca [18 x i8], align 1 ; [#uses=9] + %buff = alloca [512 x i8], align 1 ; [#uses=7] + %l = alloca i32, align 4 ; [#uses=2] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 1, i32* %arg, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = load i32* %arg, align 4 ; [#uses=1] + %5 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 %4, i32* %sfl) ; [#uses=1] + store i8* %5, i8** %strfrmt, align 4 + %6 = load i8** %strfrmt, align 4 ; [#uses=1] + %7 = load i32* %sfl, align 4 ; [#uses=1] + %8 = getelementptr inbounds i8* %6, i32 %7 ; [#uses=1] + store i8* %8, i8** %strfrmt_end, align 4 + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %9, %struct.luaL_Buffer* %b) + br label %10 + +; <label>:10 ; preds = %138, %118, %105, %0 + %11 = load i8** %strfrmt, align 4 ; [#uses=1] + %12 = load i8** %strfrmt_end, align 4 ; [#uses=1] + %13 = icmp ult i8* %11, %12 ; [#uses=1] + br i1 %13, label %14, label %139 + +; <label>:14 ; preds = %10 + %15 = load i8** %strfrmt, align 4 ; [#uses=1] + %16 = load i8* %15 ; [#uses=1] + %17 = sext i8 %16 to i32 ; [#uses=1] + %18 = icmp ne i32 %17, 37 ; [#uses=1] + br i1 %18, label %19, label %37 + +; <label>:19 ; preds = %14 + %20 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %21 = load i8** %20, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %23 = getelementptr inbounds [8192 x i8]* %22, i32 0, i32 0 ; [#uses=1] + %24 = getelementptr inbounds i8* %23, i32 8192 ; [#uses=1] + %25 = icmp ult i8* %21, %24 ; [#uses=1] + br i1 %25, label %29, label %26 + +; <label>:26 ; preds = %19 + %27 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %28 = icmp ne i8* %27, null ; [#uses=1] + br label %29 + +; <label>:29 ; preds = %26, %19 + %30 = phi i1 [ true, %19 ], [ %28, %26 ] ; [#uses=0] + %31 = load i8** %strfrmt, align 4 ; [#uses=2] + %32 = getelementptr inbounds i8* %31, i32 1 ; [#uses=1] + store i8* %32, i8** %strfrmt, align 4 + %33 = load i8* %31 ; [#uses=1] + %34 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %35 = load i8** %34, align 4 ; [#uses=2] + %36 = getelementptr inbounds i8* %35, i32 1 ; [#uses=1] + store i8* %36, i8** %34, align 4 + store i8 %33, i8* %35 + br label %138 + +; <label>:37 ; preds = %14 + %38 = load i8** %strfrmt, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=2] + store i8* %39, i8** %strfrmt, align 4 + %40 = load i8* %39 ; [#uses=1] + %41 = sext i8 %40 to i32 ; [#uses=1] + %42 = icmp eq i32 %41, 37 ; [#uses=1] + br i1 %42, label %43, label %61 + +; <label>:43 ; preds = %37 + %44 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %45 = load i8** %44, align 4 ; [#uses=1] + %46 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %47 = getelementptr inbounds [8192 x i8]* %46, i32 0, i32 0 ; [#uses=1] + %48 = getelementptr inbounds i8* %47, i32 8192 ; [#uses=1] + %49 = icmp ult i8* %45, %48 ; [#uses=1] + br i1 %49, label %53, label %50 + +; <label>:50 ; preds = %43 + %51 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %52 = icmp ne i8* %51, null ; [#uses=1] + br label %53 + +; <label>:53 ; preds = %50, %43 + %54 = phi i1 [ true, %43 ], [ %52, %50 ] ; [#uses=0] + %55 = load i8** %strfrmt, align 4 ; [#uses=2] + %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] + store i8* %56, i8** %strfrmt, align 4 + %57 = load i8* %55 ; [#uses=1] + %58 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %59 = load i8** %58, align 4 ; [#uses=2] + %60 = getelementptr inbounds i8* %59, i32 1 ; [#uses=1] + store i8* %60, i8** %58, align 4 + store i8 %57, i8* %59 + br label %137 + +; <label>:61 ; preds = %37 + %62 = load i32* %arg, align 4 ; [#uses=1] + %63 = add nsw i32 %62, 1 ; [#uses=1] + store i32 %63, i32* %arg, align 4 + %64 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %65 = load i8** %strfrmt, align 4 ; [#uses=1] + %66 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %67 = call i8* @_Z10scanformatP9lua_StatePKcPc(%struct.lua_State* %64, i8* %65, i8* %66) ; [#uses=1] + store i8* %67, i8** %strfrmt, align 4 + %68 = load i8** %strfrmt, align 4 ; [#uses=2] + %69 = getelementptr inbounds i8* %68, i32 1 ; [#uses=1] + store i8* %69, i8** %strfrmt, align 4 + %70 = load i8* %68 ; [#uses=1] + %71 = sext i8 %70 to i32 ; [#uses=1] + switch i32 %71, label %126 [ + i32 99, label %72 + i32 100, label %80 + i32 105, label %80 + i32 111, label %89 + i32 117, label %89 + i32 120, label %89 + i32 88, label %89 + i32 101, label %98 + i32 69, label %98 + i32 102, label %98 + i32 103, label %98 + i32 71, label %98 + i32 113, label %105 + i32 115, label %108 + ] + +; <label>:72 ; preds = %61 + %73 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %74 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %75 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %76 = load i32* %arg, align 4 ; [#uses=1] + %77 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %75, i32 %76) ; [#uses=1] + %78 = fptosi double %77 to i32 ; [#uses=1] + %79 = call i32 (i8*, i8*, ...)* @sprintf(i8* %73, i8* %74, i32 %78) ; [#uses=0] + br label %133 + +; <label>:80 ; preds = %61, %61 + %81 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + call void @_Z9addintlenPc(i8* %81) + %82 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %83 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %84 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %85 = load i32* %arg, align 4 ; [#uses=1] + %86 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %84, i32 %85) ; [#uses=1] + %87 = fptosi double %86 to i32 ; [#uses=1] + %88 = call i32 (i8*, i8*, ...)* @sprintf(i8* %82, i8* %83, i32 %87) ; [#uses=0] + br label %133 + +; <label>:89 ; preds = %61, %61, %61, %61 + %90 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + call void @_Z9addintlenPc(i8* %90) + %91 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %92 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %93 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %94 = load i32* %arg, align 4 ; [#uses=1] + %95 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %93, i32 %94) ; [#uses=1] + %96 = fptoui double %95 to i32 ; [#uses=1] + %97 = call i32 (i8*, i8*, ...)* @sprintf(i8* %91, i8* %92, i32 %96) ; [#uses=0] + br label %133 + +; <label>:98 ; preds = %61, %61, %61, %61, %61 + %99 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %100 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %101 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %102 = load i32* %arg, align 4 ; [#uses=1] + %103 = call double @_Z16luaL_checknumberP9lua_Statei(%struct.lua_State* %101, i32 %102) ; [#uses=1] + %104 = call i32 (i8*, i8*, ...)* @sprintf(i8* %99, i8* %100, double %103) ; [#uses=0] + br label %133 + +; <label>:105 ; preds = %61 + %106 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %107 = load i32* %arg, align 4 ; [#uses=1] + call void @_Z9addquotedP9lua_StateP11luaL_Bufferi(%struct.lua_State* %106, %struct.luaL_Buffer* %b, i32 %107) + br label %10 + +; <label>:108 ; preds = %61 + %109 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %110 = load i32* %arg, align 4 ; [#uses=1] + %111 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %109, i32 %110, i32* %l) ; [#uses=1] + store i8* %111, i8** %s, align 4 + %112 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %113 = call i8* @strchr(i8* %112, i32 46) ; [#uses=1] + %114 = icmp ne i8* %113, null ; [#uses=1] + br i1 %114, label %121, label %115 + +; <label>:115 ; preds = %108 + %116 = load i32* %l, align 4 ; [#uses=1] + %117 = icmp uge i32 %116, 100 ; [#uses=1] + br i1 %117, label %118, label %121 + +; <label>:118 ; preds = %115 + %119 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %120 = load i32* %arg, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %119, i32 %120) + call void @_Z13luaL_addvalueP11luaL_Buffer(%struct.luaL_Buffer* %b) + br label %10 + +; <label>:121 ; preds = %115, %108 + %122 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %123 = getelementptr inbounds [18 x i8]* %form, i32 0, i32 0 ; [#uses=1] + %124 = load i8** %s, align 4 ; [#uses=1] + %125 = call i32 (i8*, i8*, ...)* @sprintf(i8* %122, i8* %123, i8* %124) ; [#uses=0] + br label %133 + +; <label>:126 ; preds = %61 + %127 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %128 = load i8** %strfrmt, align 4 ; [#uses=1] + %129 = getelementptr inbounds i8* %128, i32 -1 ; [#uses=1] + %130 = load i8* %129 ; [#uses=1] + %131 = sext i8 %130 to i32 ; [#uses=1] + %132 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %127, i8* getelementptr inbounds ([34 x i8]* @.str30528, i32 0, i32 0), i32 %131) ; [#uses=1] + store i32 %132, i32* %1 + br label %140 + +; <label>:133 ; preds = %121, %98, %89, %80, %72 + %134 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %135 = getelementptr inbounds [512 x i8]* %buff, i32 0, i32 0 ; [#uses=1] + %136 = call i32 @strlen(i8* %135) ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %134, i32 %136) + br label %137 + +; <label>:137 ; preds = %133, %53 + br label %138 + +; <label>:138 ; preds = %137, %29 + br label %10 + +; <label>:139 ; preds = %10 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + store i32 1, i32* %1 + br label %140 + +; <label>:140 ; preds = %139, %126 + %141 = load i32* %1 ; [#uses=1] + ret i32 %141 +} + +; [#uses=1] +define internal i32 @_Z11gfind_nodefP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %2, i8* getelementptr inbounds ([46 x i8]* @.str29527, i32 0, i32 0)) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z6gmatchP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %4, i32 2, i32* null) ; [#uses=0] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %6, i32 2) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %7, i32 0) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %8, i32 (%struct.lua_State*)* @_Z10gmatch_auxP9lua_State, i32 3) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z8str_gsubP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %srcl = alloca i32, align 4 ; [#uses=3] + %src = alloca i8*, align 4 ; [#uses=12] + %p = alloca i8*, align 4 ; [#uses=5] + %tr = alloca i32, align 4 ; [#uses=5] + %max_s = alloca i32, align 4 ; [#uses=2] + %anchor = alloca i32, align 4 ; [#uses=2] + %n = alloca i32, align 4 ; [#uses=5] + %ms = alloca %struct.MatchState, align 4 ; [#uses=8] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=8] + %e = alloca i8*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %srcl) ; [#uses=1] + store i8* %3, i8** %src, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %4, i32 2, i32* null) ; [#uses=1] + store i8* %5, i8** %p, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %6, i32 3) ; [#uses=1] + store i32 %7, i32* %tr, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i32* %srcl, align 4 ; [#uses=1] + %10 = add i32 %9, 1 ; [#uses=1] + %11 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %8, i32 4, i32 %10) ; [#uses=1] + store i32 %11, i32* %max_s, align 4 + %12 = load i8** %p, align 4 ; [#uses=1] + %13 = load i8* %12 ; [#uses=1] + %14 = sext i8 %13 to i32 ; [#uses=1] + %15 = icmp eq i32 %14, 94 ; [#uses=1] + br i1 %15, label %16, label %19 + +; <label>:16 ; preds = %0 + %17 = load i8** %p, align 4 ; [#uses=1] + %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] + store i8* %18, i8** %p, align 4 + br label %20 + +; <label>:19 ; preds = %0 + br label %20 + +; <label>:20 ; preds = %19, %16 + %21 = phi i32 [ 1, %16 ], [ 0, %19 ] ; [#uses=1] + store i32 %21, i32* %anchor, align 4 + store i32 0, i32* %n, align 4 + %22 = load i32* %tr, align 4 ; [#uses=1] + %23 = icmp eq i32 %22, 3 ; [#uses=1] + br i1 %23, label %37, label %24 + +; <label>:24 ; preds = %20 + %25 = load i32* %tr, align 4 ; [#uses=1] + %26 = icmp eq i32 %25, 4 ; [#uses=1] + br i1 %26, label %37, label %27 + +; <label>:27 ; preds = %24 + %28 = load i32* %tr, align 4 ; [#uses=1] + %29 = icmp eq i32 %28, 6 ; [#uses=1] + br i1 %29, label %37, label %30 + +; <label>:30 ; preds = %27 + %31 = load i32* %tr, align 4 ; [#uses=1] + %32 = icmp eq i32 %31, 5 ; [#uses=1] + br i1 %32, label %37, label %33 + +; <label>:33 ; preds = %30 + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %35 = call i32 @_Z13luaL_argerrorP9lua_StateiPKc(%struct.lua_State* %34, i32 3, i8* getelementptr inbounds ([31 x i8]* @.str27525, i32 0, i32 0)) ; [#uses=1] + %36 = icmp ne i32 %35, 0 ; [#uses=1] + br label %37 + +; <label>:37 ; preds = %33, %30, %27, %24, %20 + %38 = phi i1 [ true, %30 ], [ true, %27 ], [ true, %24 ], [ true, %20 ], [ %36, %33 ] ; [#uses=0] + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %39, %struct.luaL_Buffer* %b) + %40 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 2 ; [#uses=1] + store %struct.lua_State* %40, %struct.lua_State** %41, align 4 + %42 = load i8** %src, align 4 ; [#uses=1] + %43 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 0 ; [#uses=1] + store i8* %42, i8** %43, align 4 + %44 = load i8** %src, align 4 ; [#uses=1] + %45 = load i32* %srcl, align 4 ; [#uses=1] + %46 = getelementptr inbounds i8* %44, i32 %45 ; [#uses=1] + %47 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + store i8* %46, i8** %47, align 4 + br label %48 + +; <label>:48 ; preds = %102, %37 + %49 = load i32* %n, align 4 ; [#uses=1] + %50 = load i32* %max_s, align 4 ; [#uses=1] + %51 = icmp slt i32 %49, %50 ; [#uses=1] + br i1 %51, label %52, label %103 + +; <label>:52 ; preds = %48 + %53 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 3 ; [#uses=1] + store i32 0, i32* %53, align 4 + %54 = load i8** %src, align 4 ; [#uses=1] + %55 = load i8** %p, align 4 ; [#uses=1] + %56 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %54, i8* %55) ; [#uses=1] + store i8* %56, i8** %e, align 4 + %57 = load i8** %e, align 4 ; [#uses=1] + %58 = icmp ne i8* %57, null ; [#uses=1] + br i1 %58, label %59, label %64 + +; <label>:59 ; preds = %52 + %60 = load i32* %n, align 4 ; [#uses=1] + %61 = add nsw i32 %60, 1 ; [#uses=1] + store i32 %61, i32* %n, align 4 + %62 = load i8** %src, align 4 ; [#uses=1] + %63 = load i8** %e, align 4 ; [#uses=1] + call void @_Z9add_valueP10MatchStateP11luaL_BufferPKcS4_(%struct.MatchState* %ms, %struct.luaL_Buffer* %b, i8* %62, i8* %63) + br label %64 + +; <label>:64 ; preds = %59, %52 + %65 = load i8** %e, align 4 ; [#uses=1] + %66 = icmp ne i8* %65, null ; [#uses=1] + br i1 %66, label %67, label %73 + +; <label>:67 ; preds = %64 + %68 = load i8** %e, align 4 ; [#uses=1] + %69 = load i8** %src, align 4 ; [#uses=1] + %70 = icmp ugt i8* %68, %69 ; [#uses=1] + br i1 %70, label %71, label %73 + +; <label>:71 ; preds = %67 + %72 = load i8** %e, align 4 ; [#uses=1] + store i8* %72, i8** %src, align 4 + br label %98 + +; <label>:73 ; preds = %67, %64 + %74 = load i8** %src, align 4 ; [#uses=1] + %75 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + %76 = load i8** %75, align 4 ; [#uses=1] + %77 = icmp ult i8* %74, %76 ; [#uses=1] + br i1 %77, label %78, label %96 + +; <label>:78 ; preds = %73 + %79 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %80 = load i8** %79, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %82 = getelementptr inbounds [8192 x i8]* %81, i32 0, i32 0 ; [#uses=1] + %83 = getelementptr inbounds i8* %82, i32 8192 ; [#uses=1] + %84 = icmp ult i8* %80, %83 ; [#uses=1] + br i1 %84, label %88, label %85 + +; <label>:85 ; preds = %78 + %86 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %87 = icmp ne i8* %86, null ; [#uses=1] + br label %88 + +; <label>:88 ; preds = %85, %78 + %89 = phi i1 [ true, %78 ], [ %87, %85 ] ; [#uses=0] + %90 = load i8** %src, align 4 ; [#uses=2] + %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] + store i8* %91, i8** %src, align 4 + %92 = load i8* %90 ; [#uses=1] + %93 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %94 = load i8** %93, align 4 ; [#uses=2] + %95 = getelementptr inbounds i8* %94, i32 1 ; [#uses=1] + store i8* %95, i8** %93, align 4 + store i8 %92, i8* %94 + br label %97 + +; <label>:96 ; preds = %73 + br label %103 + +; <label>:97 ; preds = %88 + br label %98 + +; <label>:98 ; preds = %97, %71 + %99 = load i32* %anchor, align 4 ; [#uses=1] + %100 = icmp ne i32 %99, 0 ; [#uses=1] + br i1 %100, label %101, label %102 + +; <label>:101 ; preds = %98 + br label %103 + +; <label>:102 ; preds = %98 + br label %48 + +; <label>:103 ; preds = %101, %96, %48 + %104 = load i8** %src, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + %106 = load i8** %105, align 4 ; [#uses=1] + %107 = load i8** %src, align 4 ; [#uses=1] + %108 = ptrtoint i8* %106 to i32 ; [#uses=1] + %109 = ptrtoint i8* %107 to i32 ; [#uses=1] + %110 = sub i32 %108, %109 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %104, i32 %110) + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + %111 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %112 = load i32* %n, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %111, i32 %112) + ret i32 2 +} + +; [#uses=1] +define internal i32 @_Z7str_lenP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %l, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %4, i32 %5) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9str_lowerP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=6] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + store i32 0, i32* %i, align 4 + br label %5 + +; <label>:5 ; preds = %31, %0 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load i32* %l, align 4 ; [#uses=1] + %8 = icmp ult i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %34 + +; <label>:9 ; preds = %5 + %10 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %13 = getelementptr inbounds [8192 x i8]* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds i8* %13, i32 8192 ; [#uses=1] + %15 = icmp ult i8* %11, %14 ; [#uses=1] + br i1 %15, label %19, label %16 + +; <label>:16 ; preds = %9 + %17 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %18 = icmp ne i8* %17, null ; [#uses=1] + br label %19 + +; <label>:19 ; preds = %16, %9 + %20 = phi i1 [ true, %9 ], [ %18, %16 ] ; [#uses=0] + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = load i8** %s, align 4 ; [#uses=1] + %23 = getelementptr inbounds i8* %22, i32 %21 ; [#uses=1] + %24 = load i8* %23 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = call i32 @tolower(i32 %25) nounwind ; [#uses=1] + %27 = trunc i32 %26 to i8 ; [#uses=1] + %28 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %29 = load i8** %28, align 4 ; [#uses=2] + %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] + store i8* %30, i8** %28, align 4 + store i8 %27, i8* %29 + br label %31 + +; <label>:31 ; preds = %19 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = add i32 %32, 1 ; [#uses=1] + store i32 %33, i32* %i, align 4 + br label %5 + +; <label>:34 ; preds = %5 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9str_matchP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z12str_find_auxP9lua_Statei(%struct.lua_State* %2, i32 0) ; [#uses=1] + ret i32 %3 +} + +; [#uses=1] +define internal i32 @_Z7str_repP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %l = alloca i32, align 4 ; [#uses=2] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=3] + %s = alloca i8*, align 4 ; [#uses=2] + %n = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %4, i32 2) ; [#uses=1] + store i32 %5, i32* %n, align 4 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %6, %struct.luaL_Buffer* %b) + br label %7 + +; <label>:7 ; preds = %11, %0 + %8 = load i32* %n, align 4 ; [#uses=2] + %9 = add nsw i32 %8, -1 ; [#uses=1] + store i32 %9, i32* %n, align 4 + %10 = icmp sgt i32 %8, 0 ; [#uses=1] + br i1 %10, label %11, label %14 + +; <label>:11 ; preds = %7 + %12 = load i8** %s, align 4 ; [#uses=1] + %13 = load i32* %l, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %b, i8* %12, i32 %13) + br label %7 + +; <label>:14 ; preds = %7 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z11str_reverseP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=4] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=6] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + br label %5 + +; <label>:5 ; preds = %19, %0 + %6 = load i32* %l, align 4 ; [#uses=2] + %7 = add i32 %6, -1 ; [#uses=1] + store i32 %7, i32* %l, align 4 + %8 = icmp ne i32 %6, 0 ; [#uses=1] + br i1 %8, label %9, label %28 + +; <label>:9 ; preds = %5 + %10 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %13 = getelementptr inbounds [8192 x i8]* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds i8* %13, i32 8192 ; [#uses=1] + %15 = icmp ult i8* %11, %14 ; [#uses=1] + br i1 %15, label %19, label %16 + +; <label>:16 ; preds = %9 + %17 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %18 = icmp ne i8* %17, null ; [#uses=1] + br label %19 + +; <label>:19 ; preds = %16, %9 + %20 = phi i1 [ true, %9 ], [ %18, %16 ] ; [#uses=0] + %21 = load i32* %l, align 4 ; [#uses=1] + %22 = load i8** %s, align 4 ; [#uses=1] + %23 = getelementptr inbounds i8* %22, i32 %21 ; [#uses=1] + %24 = load i8* %23 ; [#uses=1] + %25 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %26 = load i8** %25, align 4 ; [#uses=2] + %27 = getelementptr inbounds i8* %26, i32 1 ; [#uses=1] + store i8* %27, i8** %25, align 4 + store i8 %24, i8* %26 + br label %5 + +; <label>:28 ; preds = %5 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z7str_subP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %l = alloca i32, align 4 ; [#uses=5] + %s = alloca i8*, align 4 ; [#uses=2] + %start = alloca i32, align 4 ; [#uses=6] + %end = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z17luaL_checkintegerP9lua_Statei(%struct.lua_State* %4, i32 2) ; [#uses=1] + %6 = load i32* %l, align 4 ; [#uses=1] + %7 = call i32 @_Z8posrelatij(i32 %5, i32 %6) ; [#uses=1] + store i32 %7, i32* %start, align 4 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %8, i32 3, i32 -1) ; [#uses=1] + %10 = load i32* %l, align 4 ; [#uses=1] + %11 = call i32 @_Z8posrelatij(i32 %9, i32 %10) ; [#uses=1] + store i32 %11, i32* %end, align 4 + %12 = load i32* %start, align 4 ; [#uses=1] + %13 = icmp slt i32 %12, 1 ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %0 + store i32 1, i32* %start, align 4 + br label %15 + +; <label>:15 ; preds = %14, %0 + %16 = load i32* %end, align 4 ; [#uses=1] + %17 = load i32* %l, align 4 ; [#uses=1] + %18 = icmp sgt i32 %16, %17 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %15 + %20 = load i32* %l, align 4 ; [#uses=1] + store i32 %20, i32* %end, align 4 + br label %21 + +; <label>:21 ; preds = %19, %15 + %22 = load i32* %start, align 4 ; [#uses=1] + %23 = load i32* %end, align 4 ; [#uses=1] + %24 = icmp sle i32 %22, %23 ; [#uses=1] + br i1 %24, label %25, label %35 + +; <label>:25 ; preds = %21 + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %27 = load i8** %s, align 4 ; [#uses=1] + %28 = load i32* %start, align 4 ; [#uses=1] + %29 = getelementptr inbounds i8* %27, i32 %28 ; [#uses=1] + %30 = getelementptr inbounds i8* %29, i32 -1 ; [#uses=1] + %31 = load i32* %end, align 4 ; [#uses=1] + %32 = load i32* %start, align 4 ; [#uses=1] + %33 = sub nsw i32 %31, %32 ; [#uses=1] + %34 = add nsw i32 %33, 1 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %26, i8* %30, i32 %34) + br label %37 + +; <label>:35 ; preds = %21 + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %36, i8* getelementptr inbounds ([1 x i8]* @.str16514, i32 0, i32 0), i32 0) + br label %37 + +; <label>:37 ; preds = %35, %25 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z9str_upperP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + %b = alloca %struct.luaL_Buffer, align 4 ; [#uses=6] + %s = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* %l) ; [#uses=1] + store i8* %3, i8** %s, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_buffinitP9lua_StateP11luaL_Buffer(%struct.lua_State* %4, %struct.luaL_Buffer* %b) + store i32 0, i32* %i, align 4 + br label %5 + +; <label>:5 ; preds = %31, %0 + %6 = load i32* %i, align 4 ; [#uses=1] + %7 = load i32* %l, align 4 ; [#uses=1] + %8 = icmp ult i32 %6, %7 ; [#uses=1] + br i1 %8, label %9, label %34 + +; <label>:9 ; preds = %5 + %10 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=1] + %11 = load i8** %10, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 3 ; [#uses=1] + %13 = getelementptr inbounds [8192 x i8]* %12, i32 0, i32 0 ; [#uses=1] + %14 = getelementptr inbounds i8* %13, i32 8192 ; [#uses=1] + %15 = icmp ult i8* %11, %14 ; [#uses=1] + br i1 %15, label %19, label %16 + +; <label>:16 ; preds = %9 + %17 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %b) ; [#uses=1] + %18 = icmp ne i8* %17, null ; [#uses=1] + br label %19 + +; <label>:19 ; preds = %16, %9 + %20 = phi i1 [ true, %9 ], [ %18, %16 ] ; [#uses=0] + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = load i8** %s, align 4 ; [#uses=1] + %23 = getelementptr inbounds i8* %22, i32 %21 ; [#uses=1] + %24 = load i8* %23 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = call i32 @toupper(i32 %25) nounwind ; [#uses=1] + %27 = trunc i32 %26 to i8 ; [#uses=1] + %28 = getelementptr inbounds %struct.luaL_Buffer* %b, i32 0, i32 0 ; [#uses=2] + %29 = load i8** %28, align 4 ; [#uses=2] + %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] + store i8* %30, i8** %28, align 4 + store i8 %27, i8* %29 + br label %31 + +; <label>:31 ; preds = %19 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = add i32 %32, 1 ; [#uses=1] + store i32 %33, i32* %i, align 4 + br label %5 + +; <label>:34 ; preds = %5 + call void @_Z15luaL_pushresultP11luaL_Buffer(%struct.luaL_Buffer* %b) + ret i32 1 +} + +; [#uses=1] +define i32 @_Z14luaopen_stringP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %2, i8* getelementptr inbounds ([7 x i8]* @.str15513, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([16 x %struct.luaL_Reg]* @_ZL6strlib, i32 0, i32 0)) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %3, i32 -1, i8* getelementptr inbounds ([7 x i8]* @.str6504, i32 0, i32 0)) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %4, i32 -2, i8* getelementptr inbounds ([6 x i8]* @.str5503, i32 0, i32 0)) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15createmetatableP9lua_State(%struct.lua_State* %5) + ret i32 1 +} + +; [#uses=1] +define internal void @_Z15createmetatableP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=9] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %2, i32 0, i32 1) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %3, i8* getelementptr inbounds ([1 x i8]* @.str16514, i32 0, i32 0), i32 0) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %4, i32 -2) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %5, i32 -2) ; [#uses=0] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %7, i32 -2) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %8, i32 -2) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %9, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str17515, i32 0, i32 0)) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %10, i32 -2) + ret void +} + +; [#uses=1] +declare i32 @toupper(i32) nounwind + +; [#uses=5] +define internal i32 @_Z8posrelatij(i32 %pos, i32 %len) nounwind { + %1 = alloca i32, align 4 ; [#uses=6] + %2 = alloca i32, align 4 ; [#uses=2] + store i32 %pos, i32* %1, align 4 + store i32 %len, i32* %2, align 4 + %3 = load i32* %1, align 4 ; [#uses=1] + %4 = icmp slt i32 %3, 0 ; [#uses=1] + br i1 %4, label %5, label %10 + +; <label>:5 ; preds = %0 + %6 = load i32* %2, align 4 ; [#uses=1] + %7 = add nsw i32 %6, 1 ; [#uses=1] + %8 = load i32* %1, align 4 ; [#uses=1] + %9 = add nsw i32 %8, %7 ; [#uses=1] + store i32 %9, i32* %1, align 4 + br label %10 + +; <label>:10 ; preds = %5, %0 + %11 = load i32* %1, align 4 ; [#uses=1] + %12 = icmp sge i32 %11, 0 ; [#uses=1] + %13 = load i32* %1, align 4 ; [#uses=1] + %14 = select i1 %12, i32 %13, i32 0 ; [#uses=1] + ret i32 %14 +} + +; [#uses=2] +define internal i32 @_Z12str_find_auxP9lua_Statei(%struct.lua_State* %L, i32 %find) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=11] + %3 = alloca i32, align 4 ; [#uses=3] + %l1 = alloca i32, align 4 ; [#uses=6] + %l2 = alloca i32, align 4 ; [#uses=3] + %s = alloca i8*, align 4 ; [#uses=9] + %p = alloca i8*, align 4 ; [#uses=7] + %init = alloca i32, align 4 ; [#uses=8] + %s2 = alloca i8*, align 4 ; [#uses=4] + %ms = alloca %struct.MatchState, align 4 ; [#uses=8] + %anchor = alloca i32, align 4 ; [#uses=2] + %s1 = alloca i8*, align 4 ; [#uses=6] + %res = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i32 %find, i32* %3, align 4 + %4 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %5 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %4, i32 1, i32* %l1) ; [#uses=1] + store i8* %5, i8** %s, align 4 + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %7 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %6, i32 2, i32* %l2) ; [#uses=1] + store i8* %7, i8** %p, align 4 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = call i32 @_Z15luaL_optintegerP9lua_Stateii(%struct.lua_State* %8, i32 3, i32 1) ; [#uses=1] + %10 = load i32* %l1, align 4 ; [#uses=1] + %11 = call i32 @_Z8posrelatij(i32 %9, i32 %10) ; [#uses=1] + %12 = sub nsw i32 %11, 1 ; [#uses=1] + store i32 %12, i32* %init, align 4 + %13 = load i32* %init, align 4 ; [#uses=1] + %14 = icmp slt i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %16 + +; <label>:15 ; preds = %0 + store i32 0, i32* %init, align 4 + br label %23 + +; <label>:16 ; preds = %0 + %17 = load i32* %init, align 4 ; [#uses=1] + %18 = load i32* %l1, align 4 ; [#uses=1] + %19 = icmp ugt i32 %17, %18 ; [#uses=1] + br i1 %19, label %20, label %22 + +; <label>:20 ; preds = %16 + %21 = load i32* %l1, align 4 ; [#uses=1] + store i32 %21, i32* %init, align 4 + br label %22 + +; <label>:22 ; preds = %20, %16 + br label %23 + +; <label>:23 ; preds = %22, %15 + %24 = load i32* %3, align 4 ; [#uses=1] + %25 = icmp ne i32 %24, 0 ; [#uses=1] + br i1 %25, label %26, label %63 + +; <label>:26 ; preds = %23 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %27, i32 4) ; [#uses=1] + %29 = icmp ne i32 %28, 0 ; [#uses=1] + br i1 %29, label %34, label %30 + +; <label>:30 ; preds = %26 + %31 = load i8** %p, align 4 ; [#uses=1] + %32 = call i8* @strpbrk(i8* %31, i8* getelementptr inbounds ([11 x i8]* @.str18516, i32 0, i32 0)) ; [#uses=1] + %33 = icmp eq i8* %32, null ; [#uses=1] + br i1 %33, label %34, label %63 + +; <label>:34 ; preds = %30, %26 + %35 = load i8** %s, align 4 ; [#uses=1] + %36 = load i32* %init, align 4 ; [#uses=1] + %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] + %38 = load i32* %l1, align 4 ; [#uses=1] + %39 = load i32* %init, align 4 ; [#uses=1] + %40 = sub i32 %38, %39 ; [#uses=1] + %41 = load i8** %p, align 4 ; [#uses=1] + %42 = load i32* %l2, align 4 ; [#uses=1] + %43 = call i8* @_Z8lmemfindPKcjS0_j(i8* %37, i32 %40, i8* %41, i32 %42) ; [#uses=1] + store i8* %43, i8** %s2, align 4 + %44 = load i8** %s2, align 4 ; [#uses=1] + %45 = icmp ne i8* %44, null ; [#uses=1] + br i1 %45, label %46, label %62 + +; <label>:46 ; preds = %34 + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = load i8** %s2, align 4 ; [#uses=1] + %49 = load i8** %s, align 4 ; [#uses=1] + %50 = ptrtoint i8* %48 to i32 ; [#uses=1] + %51 = ptrtoint i8* %49 to i32 ; [#uses=1] + %52 = sub i32 %50, %51 ; [#uses=1] + %53 = add nsw i32 %52, 1 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %47, i32 %53) + %54 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %55 = load i8** %s2, align 4 ; [#uses=1] + %56 = load i8** %s, align 4 ; [#uses=1] + %57 = ptrtoint i8* %55 to i32 ; [#uses=1] + %58 = ptrtoint i8* %56 to i32 ; [#uses=1] + %59 = sub i32 %57, %58 ; [#uses=1] + %60 = load i32* %l2, align 4 ; [#uses=1] + %61 = add i32 %59, %60 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %54, i32 %61) + store i32 2, i32* %1 + br label %130 + +; <label>:62 ; preds = %34 + br label %128 + +; <label>:63 ; preds = %30, %23 + %64 = load i8** %p, align 4 ; [#uses=1] + %65 = load i8* %64 ; [#uses=1] + %66 = sext i8 %65 to i32 ; [#uses=1] + %67 = icmp eq i32 %66, 94 ; [#uses=1] + br i1 %67, label %68, label %71 + +; <label>:68 ; preds = %63 + %69 = load i8** %p, align 4 ; [#uses=1] + %70 = getelementptr inbounds i8* %69, i32 1 ; [#uses=1] + store i8* %70, i8** %p, align 4 + br label %72 + +; <label>:71 ; preds = %63 + br label %72 + +; <label>:72 ; preds = %71, %68 + %73 = phi i32 [ 1, %68 ], [ 0, %71 ] ; [#uses=1] + store i32 %73, i32* %anchor, align 4 + %74 = load i8** %s, align 4 ; [#uses=1] + %75 = load i32* %init, align 4 ; [#uses=1] + %76 = getelementptr inbounds i8* %74, i32 %75 ; [#uses=1] + store i8* %76, i8** %s1, align 4 + %77 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 2 ; [#uses=1] + store %struct.lua_State* %77, %struct.lua_State** %78, align 4 + %79 = load i8** %s, align 4 ; [#uses=1] + %80 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 0 ; [#uses=1] + store i8* %79, i8** %80, align 4 + %81 = load i8** %s, align 4 ; [#uses=1] + %82 = load i32* %l1, align 4 ; [#uses=1] + %83 = getelementptr inbounds i8* %81, i32 %82 ; [#uses=1] + %84 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + store i8* %83, i8** %84, align 4 + br label %85 + +; <label>:85 ; preds = %125, %72 + %86 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 3 ; [#uses=1] + store i32 0, i32* %86, align 4 + %87 = load i8** %s1, align 4 ; [#uses=1] + %88 = load i8** %p, align 4 ; [#uses=1] + %89 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %87, i8* %88) ; [#uses=2] + store i8* %89, i8** %res, align 4 + %90 = icmp ne i8* %89, null ; [#uses=1] + br i1 %90, label %91, label %114 + +; <label>:91 ; preds = %85 + %92 = load i32* %3, align 4 ; [#uses=1] + %93 = icmp ne i32 %92, 0 ; [#uses=1] + br i1 %93, label %94, label %110 + +; <label>:94 ; preds = %91 + %95 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %96 = load i8** %s1, align 4 ; [#uses=1] + %97 = load i8** %s, align 4 ; [#uses=1] + %98 = ptrtoint i8* %96 to i32 ; [#uses=1] + %99 = ptrtoint i8* %97 to i32 ; [#uses=1] + %100 = sub i32 %98, %99 ; [#uses=1] + %101 = add nsw i32 %100, 1 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %95, i32 %101) + %102 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %103 = load i8** %res, align 4 ; [#uses=1] + %104 = load i8** %s, align 4 ; [#uses=1] + %105 = ptrtoint i8* %103 to i32 ; [#uses=1] + %106 = ptrtoint i8* %104 to i32 ; [#uses=1] + %107 = sub i32 %105, %106 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %102, i32 %107) + %108 = call i32 @_Z13push_capturesP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* null, i8* null) ; [#uses=1] + %109 = add nsw i32 %108, 2 ; [#uses=1] + store i32 %109, i32* %1 + br label %130 + +; <label>:110 ; preds = %91 + %111 = load i8** %s1, align 4 ; [#uses=1] + %112 = load i8** %res, align 4 ; [#uses=1] + %113 = call i32 @_Z13push_capturesP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %111, i8* %112) ; [#uses=1] + store i32 %113, i32* %1 + br label %130 + +; <label>:114 ; preds = %85 + br label %115 + +; <label>:115 ; preds = %114 + %116 = load i8** %s1, align 4 ; [#uses=2] + %117 = getelementptr inbounds i8* %116, i32 1 ; [#uses=1] + store i8* %117, i8** %s1, align 4 + %118 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + %119 = load i8** %118, align 4 ; [#uses=1] + %120 = icmp ult i8* %116, %119 ; [#uses=1] + br i1 %120, label %121, label %125 + +; <label>:121 ; preds = %115 + %122 = load i32* %anchor, align 4 ; [#uses=1] + %123 = icmp ne i32 %122, 0 ; [#uses=1] + %124 = xor i1 %123, true ; [#uses=1] + br label %125 + +; <label>:125 ; preds = %121, %115 + %126 = phi i1 [ false, %115 ], [ %124, %121 ] ; [#uses=1] + br i1 %126, label %85, label %127 + +; <label>:127 ; preds = %125 + br label %128 + +; <label>:128 ; preds = %127, %62 + %129 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %129) + store i32 1, i32* %1 + br label %130 + +; <label>:130 ; preds = %128, %110, %94, %46 + %131 = load i32* %1 ; [#uses=1] + ret i32 %131 +} + +; [#uses=1] +declare i8* @strpbrk(i8*, i8*) nounwind readonly + +; [#uses=1] +define internal i8* @_Z8lmemfindPKcjS0_j(i8* %s1, i32 %l1, i8* %s2, i32 %l2) nounwind { + %1 = alloca i8*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=5] + %3 = alloca i32, align 4 ; [#uses=8] + %4 = alloca i8*, align 4 ; [#uses=3] + %5 = alloca i32, align 4 ; [#uses=7] + %init = alloca i8*, align 4 ; [#uses=7] + store i8* %s1, i8** %2, align 4 + store i32 %l1, i32* %3, align 4 + store i8* %s2, i8** %4, align 4 + store i32 %l2, i32* %5, align 4 + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %10 + +; <label>:8 ; preds = %0 + %9 = load i8** %2, align 4 ; [#uses=1] + store i8* %9, i8** %1 + br label %57 + +; <label>:10 ; preds = %0 + %11 = load i32* %5, align 4 ; [#uses=1] + %12 = load i32* %3, align 4 ; [#uses=1] + %13 = icmp ugt i32 %11, %12 ; [#uses=1] + br i1 %13, label %14, label %15 + +; <label>:14 ; preds = %10 + store i8* null, i8** %1 + br label %57 + +; <label>:15 ; preds = %10 + %16 = load i32* %5, align 4 ; [#uses=1] + %17 = add i32 %16, -1 ; [#uses=1] + store i32 %17, i32* %5, align 4 + %18 = load i32* %3, align 4 ; [#uses=1] + %19 = load i32* %5, align 4 ; [#uses=1] + %20 = sub i32 %18, %19 ; [#uses=1] + store i32 %20, i32* %3, align 4 + br label %21 + +; <label>:21 ; preds = %55, %15 + %22 = load i32* %3, align 4 ; [#uses=1] + %23 = icmp ugt i32 %22, 0 ; [#uses=1] + br i1 %23, label %24, label %32 + +; <label>:24 ; preds = %21 + %25 = load i8** %2, align 4 ; [#uses=1] + %26 = load i8** %4, align 4 ; [#uses=1] + %27 = load i8* %26 ; [#uses=1] + %28 = sext i8 %27 to i32 ; [#uses=1] + %29 = load i32* %3, align 4 ; [#uses=1] + %30 = call i8* @memchr(i8* %25, i32 %28, i32 %29) ; [#uses=2] + store i8* %30, i8** %init, align 4 + %31 = icmp ne i8* %30, null ; [#uses=1] + br label %32 + +; <label>:32 ; preds = %24, %21 + %33 = phi i1 [ false, %21 ], [ %31, %24 ] ; [#uses=1] + br i1 %33, label %34, label %56 + +; <label>:34 ; preds = %32 + %35 = load i8** %init, align 4 ; [#uses=1] + %36 = getelementptr inbounds i8* %35, i32 1 ; [#uses=1] + store i8* %36, i8** %init, align 4 + %37 = load i8** %init, align 4 ; [#uses=1] + %38 = load i8** %4, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=1] + %40 = load i32* %5, align 4 ; [#uses=1] + %41 = call i32 @memcmp(i8* %37, i8* %39, i32 %40) nounwind readonly ; [#uses=1] + %42 = icmp eq i32 %41, 0 ; [#uses=1] + br i1 %42, label %43, label %46 + +; <label>:43 ; preds = %34 + %44 = load i8** %init, align 4 ; [#uses=1] + %45 = getelementptr inbounds i8* %44, i32 -1 ; [#uses=1] + store i8* %45, i8** %1 + br label %57 + +; <label>:46 ; preds = %34 + %47 = load i8** %init, align 4 ; [#uses=1] + %48 = load i8** %2, align 4 ; [#uses=1] + %49 = ptrtoint i8* %47 to i32 ; [#uses=1] + %50 = ptrtoint i8* %48 to i32 ; [#uses=1] + %51 = sub i32 %49, %50 ; [#uses=1] + %52 = load i32* %3, align 4 ; [#uses=1] + %53 = sub i32 %52, %51 ; [#uses=1] + store i32 %53, i32* %3, align 4 + %54 = load i8** %init, align 4 ; [#uses=1] + store i8* %54, i8** %2, align 4 + br label %55 + +; <label>:55 ; preds = %46 + br label %21 + +; <label>:56 ; preds = %32 + store i8* null, i8** %1 + br label %57 + +; <label>:57 ; preds = %56, %43, %14, %8 + %58 = load i8** %1 ; [#uses=1] + ret i8* %58 +} + +; [#uses=8] +define internal i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %s, i8* %p) { + %1 = alloca i8*, align 4 ; [#uses=14] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=16] + %3 = alloca i8*, align 4 ; [#uses=24] + %4 = alloca i8*, align 4 ; [#uses=29] + %ep = alloca i8*, align 4 ; [#uses=4] + %previous = alloca i8, align 1 ; [#uses=2] + %ep1 = alloca i8*, align 4 ; [#uses=9] + %m = alloca i32, align 4 ; [#uses=4] + %res = alloca i8*, align 4 ; [#uses=2] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %p, i8** %4, align 4 + br label %5 + +; <label>:5 ; preds = %208, %176, %115, %95, %47, %0 + %6 = load i8** %4, align 4 ; [#uses=1] + %7 = load i8* %6 ; [#uses=1] + %8 = sext i8 %7 to i32 ; [#uses=1] + switch i32 %8, label %139 [ + i32 40, label %9 + i32 41, label %27 + i32 37, label %33 + i32 0, label %119 + i32 36, label %121 + ] + +; <label>:9 ; preds = %5 + %10 = load i8** %4, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] + %12 = load i8* %11 ; [#uses=1] + %13 = sext i8 %12 to i32 ; [#uses=1] + %14 = icmp eq i32 %13, 41 ; [#uses=1] + br i1 %14, label %15, label %21 + +; <label>:15 ; preds = %9 + %16 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %17 = load i8** %3, align 4 ; [#uses=1] + %18 = load i8** %4, align 4 ; [#uses=1] + %19 = getelementptr inbounds i8* %18, i32 2 ; [#uses=1] + %20 = call i8* @_Z13start_captureP10MatchStatePKcS2_i(%struct.MatchState* %16, i8* %17, i8* %19, i32 -2) ; [#uses=1] + store i8* %20, i8** %1 + br label %212 + +; <label>:21 ; preds = %9 + %22 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %23 = load i8** %3, align 4 ; [#uses=1] + %24 = load i8** %4, align 4 ; [#uses=1] + %25 = getelementptr inbounds i8* %24, i32 1 ; [#uses=1] + %26 = call i8* @_Z13start_captureP10MatchStatePKcS2_i(%struct.MatchState* %22, i8* %23, i8* %25, i32 -1) ; [#uses=1] + store i8* %26, i8** %1 + br label %212 + +; <label>:27 ; preds = %5 + %28 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %29 = load i8** %3, align 4 ; [#uses=1] + %30 = load i8** %4, align 4 ; [#uses=1] + %31 = getelementptr inbounds i8* %30, i32 1 ; [#uses=1] + %32 = call i8* @_Z11end_captureP10MatchStatePKcS2_(%struct.MatchState* %28, i8* %29, i8* %31) ; [#uses=1] + store i8* %32, i8** %1 + br label %212 + +; <label>:33 ; preds = %5 + %34 = load i8** %4, align 4 ; [#uses=1] + %35 = getelementptr inbounds i8* %34, i32 1 ; [#uses=1] + %36 = load i8* %35 ; [#uses=1] + %37 = sext i8 %36 to i32 ; [#uses=1] + switch i32 %37, label %97 [ + i32 98, label %38 + i32 102, label %50 + ] + +; <label>:38 ; preds = %33 + %39 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %40 = load i8** %3, align 4 ; [#uses=1] + %41 = load i8** %4, align 4 ; [#uses=1] + %42 = getelementptr inbounds i8* %41, i32 2 ; [#uses=1] + %43 = call i8* @_Z12matchbalanceP10MatchStatePKcS2_(%struct.MatchState* %39, i8* %40, i8* %42) ; [#uses=1] + store i8* %43, i8** %3, align 4 + %44 = load i8** %3, align 4 ; [#uses=1] + %45 = icmp eq i8* %44, null ; [#uses=1] + br i1 %45, label %46, label %47 + +; <label>:46 ; preds = %38 + store i8* null, i8** %1 + br label %212 + +; <label>:47 ; preds = %38 + %48 = load i8** %4, align 4 ; [#uses=1] + %49 = getelementptr inbounds i8* %48, i32 4 ; [#uses=1] + store i8* %49, i8** %4, align 4 + br label %5 + +; <label>:50 ; preds = %33 + %51 = load i8** %4, align 4 ; [#uses=1] + %52 = getelementptr inbounds i8* %51, i32 2 ; [#uses=1] + store i8* %52, i8** %4, align 4 + %53 = load i8** %4, align 4 ; [#uses=1] + %54 = load i8* %53 ; [#uses=1] + %55 = sext i8 %54 to i32 ; [#uses=1] + %56 = icmp ne i32 %55, 91 ; [#uses=1] + br i1 %56, label %57, label %62 + +; <label>:57 ; preds = %50 + %58 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %59 = getelementptr inbounds %struct.MatchState* %58, i32 0, i32 2 ; [#uses=1] + %60 = load %struct.lua_State** %59, align 4 ; [#uses=1] + %61 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %60, i8* getelementptr inbounds ([35 x i8]* @.str22520, i32 0, i32 0)) ; [#uses=0] + br label %62 + +; <label>:62 ; preds = %57, %50 + %63 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %64 = load i8** %4, align 4 ; [#uses=1] + %65 = call i8* @_Z8classendP10MatchStatePKc(%struct.MatchState* %63, i8* %64) ; [#uses=1] + store i8* %65, i8** %ep, align 4 + %66 = load i8** %3, align 4 ; [#uses=1] + %67 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %68 = getelementptr inbounds %struct.MatchState* %67, i32 0, i32 0 ; [#uses=1] + %69 = load i8** %68, align 4 ; [#uses=1] + %70 = icmp eq i8* %66, %69 ; [#uses=1] + br i1 %70, label %71, label %72 + +; <label>:71 ; preds = %62 + br label %76 + +; <label>:72 ; preds = %62 + %73 = load i8** %3, align 4 ; [#uses=1] + %74 = getelementptr inbounds i8* %73, i32 -1 ; [#uses=1] + %75 = load i8* %74 ; [#uses=1] + br label %76 + +; <label>:76 ; preds = %72, %71 + %77 = phi i8 [ 0, %71 ], [ %75, %72 ] ; [#uses=1] + store i8 %77, i8* %previous, align 1 + %78 = load i8* %previous, align 1 ; [#uses=1] + %79 = zext i8 %78 to i32 ; [#uses=1] + %80 = load i8** %4, align 4 ; [#uses=1] + %81 = load i8** %ep, align 4 ; [#uses=1] + %82 = getelementptr inbounds i8* %81, i32 -1 ; [#uses=1] + %83 = call i32 @_Z17matchbracketclassiPKcS0_(i32 %79, i8* %80, i8* %82) ; [#uses=1] + %84 = icmp ne i32 %83, 0 ; [#uses=1] + br i1 %84, label %94, label %85 + +; <label>:85 ; preds = %76 + %86 = load i8** %3, align 4 ; [#uses=1] + %87 = load i8* %86 ; [#uses=1] + %88 = zext i8 %87 to i32 ; [#uses=1] + %89 = load i8** %4, align 4 ; [#uses=1] + %90 = load i8** %ep, align 4 ; [#uses=1] + %91 = getelementptr inbounds i8* %90, i32 -1 ; [#uses=1] + %92 = call i32 @_Z17matchbracketclassiPKcS0_(i32 %88, i8* %89, i8* %91) ; [#uses=1] + %93 = icmp ne i32 %92, 0 ; [#uses=1] + br i1 %93, label %95, label %94 + +; <label>:94 ; preds = %85, %76 + store i8* null, i8** %1 + br label %212 + +; <label>:95 ; preds = %85 + %96 = load i8** %ep, align 4 ; [#uses=1] + store i8* %96, i8** %4, align 4 + br label %5 + +; <label>:97 ; preds = %33 + %98 = load i8** %4, align 4 ; [#uses=1] + %99 = getelementptr inbounds i8* %98, i32 1 ; [#uses=1] + %100 = load i8* %99 ; [#uses=1] + %101 = zext i8 %100 to i32 ; [#uses=1] + %102 = call i32 @isdigit(i32 %101) nounwind ; [#uses=1] + %103 = icmp ne i32 %102, 0 ; [#uses=1] + br i1 %103, label %104, label %118 + +; <label>:104 ; preds = %97 + %105 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %106 = load i8** %3, align 4 ; [#uses=1] + %107 = load i8** %4, align 4 ; [#uses=1] + %108 = getelementptr inbounds i8* %107, i32 1 ; [#uses=1] + %109 = load i8* %108 ; [#uses=1] + %110 = zext i8 %109 to i32 ; [#uses=1] + %111 = call i8* @_Z13match_captureP10MatchStatePKci(%struct.MatchState* %105, i8* %106, i32 %110) ; [#uses=1] + store i8* %111, i8** %3, align 4 + %112 = load i8** %3, align 4 ; [#uses=1] + %113 = icmp eq i8* %112, null ; [#uses=1] + br i1 %113, label %114, label %115 + +; <label>:114 ; preds = %104 + store i8* null, i8** %1 + br label %212 + +; <label>:115 ; preds = %104 + %116 = load i8** %4, align 4 ; [#uses=1] + %117 = getelementptr inbounds i8* %116, i32 2 ; [#uses=1] + store i8* %117, i8** %4, align 4 + br label %5 + +; <label>:118 ; preds = %97 + br label %140 + +; <label>:119 ; preds = %5 + %120 = load i8** %3, align 4 ; [#uses=1] + store i8* %120, i8** %1 + br label %212 + +; <label>:121 ; preds = %5 + %122 = load i8** %4, align 4 ; [#uses=1] + %123 = getelementptr inbounds i8* %122, i32 1 ; [#uses=1] + %124 = load i8* %123 ; [#uses=1] + %125 = sext i8 %124 to i32 ; [#uses=1] + %126 = icmp eq i32 %125, 0 ; [#uses=1] + br i1 %126, label %127, label %138 + +; <label>:127 ; preds = %121 + %128 = load i8** %3, align 4 ; [#uses=1] + %129 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %130 = getelementptr inbounds %struct.MatchState* %129, i32 0, i32 1 ; [#uses=1] + %131 = load i8** %130, align 4 ; [#uses=1] + %132 = icmp eq i8* %128, %131 ; [#uses=1] + br i1 %132, label %133, label %135 + +; <label>:133 ; preds = %127 + %134 = load i8** %3, align 4 ; [#uses=1] + br label %136 + +; <label>:135 ; preds = %127 + br label %136 + +; <label>:136 ; preds = %135, %133 + %137 = phi i8* [ %134, %133 ], [ null, %135 ] ; [#uses=1] + store i8* %137, i8** %1 + br label %212 + +; <label>:138 ; preds = %121 + br label %140 + +; <label>:139 ; preds = %5 + br label %140 + +; <label>:140 ; preds = %139, %138, %118 + %141 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %142 = load i8** %4, align 4 ; [#uses=1] + %143 = call i8* @_Z8classendP10MatchStatePKc(%struct.MatchState* %141, i8* %142) ; [#uses=1] + store i8* %143, i8** %ep1, align 4 + %144 = load i8** %3, align 4 ; [#uses=1] + %145 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %146 = getelementptr inbounds %struct.MatchState* %145, i32 0, i32 1 ; [#uses=1] + %147 = load i8** %146, align 4 ; [#uses=1] + %148 = icmp ult i8* %144, %147 ; [#uses=1] + br i1 %148, label %149, label %157 + +; <label>:149 ; preds = %140 + %150 = load i8** %3, align 4 ; [#uses=1] + %151 = load i8* %150 ; [#uses=1] + %152 = zext i8 %151 to i32 ; [#uses=1] + %153 = load i8** %4, align 4 ; [#uses=1] + %154 = load i8** %ep1, align 4 ; [#uses=1] + %155 = call i32 @_Z11singlematchiPKcS0_(i32 %152, i8* %153, i8* %154) ; [#uses=1] + %156 = icmp ne i32 %155, 0 ; [#uses=1] + br label %157 + +; <label>:157 ; preds = %149, %140 + %158 = phi i1 [ false, %140 ], [ %156, %149 ] ; [#uses=1] + %159 = zext i1 %158 to i32 ; [#uses=1] + store i32 %159, i32* %m, align 4 + %160 = load i8** %ep1, align 4 ; [#uses=1] + %161 = load i8* %160 ; [#uses=1] + %162 = sext i8 %161 to i32 ; [#uses=1] + switch i32 %162, label %204 [ + i32 63, label %163 + i32 42, label %179 + i32 43, label %185 + i32 45, label %198 + ] + +; <label>:163 ; preds = %157 + %164 = load i32* %m, align 4 ; [#uses=1] + %165 = icmp ne i32 %164, 0 ; [#uses=1] + br i1 %165, label %166, label %176 + +; <label>:166 ; preds = %163 + %167 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %168 = load i8** %3, align 4 ; [#uses=1] + %169 = getelementptr inbounds i8* %168, i32 1 ; [#uses=1] + %170 = load i8** %ep1, align 4 ; [#uses=1] + %171 = getelementptr inbounds i8* %170, i32 1 ; [#uses=1] + %172 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %167, i8* %169, i8* %171) ; [#uses=2] + store i8* %172, i8** %res, align 4 + %173 = icmp ne i8* %172, null ; [#uses=1] + br i1 %173, label %174, label %176 + +; <label>:174 ; preds = %166 + %175 = load i8** %res, align 4 ; [#uses=1] + store i8* %175, i8** %1 + br label %212 + +; <label>:176 ; preds = %166, %163 + %177 = load i8** %ep1, align 4 ; [#uses=1] + %178 = getelementptr inbounds i8* %177, i32 1 ; [#uses=1] + store i8* %178, i8** %4, align 4 + br label %5 + +; <label>:179 ; preds = %157 + %180 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %181 = load i8** %3, align 4 ; [#uses=1] + %182 = load i8** %4, align 4 ; [#uses=1] + %183 = load i8** %ep1, align 4 ; [#uses=1] + %184 = call i8* @_Z10max_expandP10MatchStatePKcS2_S2_(%struct.MatchState* %180, i8* %181, i8* %182, i8* %183) ; [#uses=1] + store i8* %184, i8** %1 + br label %212 + +; <label>:185 ; preds = %157 + %186 = load i32* %m, align 4 ; [#uses=1] + %187 = icmp ne i32 %186, 0 ; [#uses=1] + br i1 %187, label %188, label %195 + +; <label>:188 ; preds = %185 + %189 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %190 = load i8** %3, align 4 ; [#uses=1] + %191 = getelementptr inbounds i8* %190, i32 1 ; [#uses=1] + %192 = load i8** %4, align 4 ; [#uses=1] + %193 = load i8** %ep1, align 4 ; [#uses=1] + %194 = call i8* @_Z10max_expandP10MatchStatePKcS2_S2_(%struct.MatchState* %189, i8* %191, i8* %192, i8* %193) ; [#uses=1] + br label %196 + +; <label>:195 ; preds = %185 + br label %196 + +; <label>:196 ; preds = %195, %188 + %197 = phi i8* [ %194, %188 ], [ null, %195 ] ; [#uses=1] + store i8* %197, i8** %1 + br label %212 + +; <label>:198 ; preds = %157 + %199 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %200 = load i8** %3, align 4 ; [#uses=1] + %201 = load i8** %4, align 4 ; [#uses=1] + %202 = load i8** %ep1, align 4 ; [#uses=1] + %203 = call i8* @_Z10min_expandP10MatchStatePKcS2_S2_(%struct.MatchState* %199, i8* %200, i8* %201, i8* %202) ; [#uses=1] + store i8* %203, i8** %1 + br label %212 + +; <label>:204 ; preds = %157 + %205 = load i32* %m, align 4 ; [#uses=1] + %206 = icmp ne i32 %205, 0 ; [#uses=1] + br i1 %206, label %208, label %207 + +; <label>:207 ; preds = %204 + store i8* null, i8** %1 + br label %212 + +; <label>:208 ; preds = %204 + %209 = load i8** %3, align 4 ; [#uses=1] + %210 = getelementptr inbounds i8* %209, i32 1 ; [#uses=1] + store i8* %210, i8** %3, align 4 + %211 = load i8** %ep1, align 4 ; [#uses=1] + store i8* %211, i8** %4, align 4 + br label %5 + +; <label>:212 ; preds = %207, %198, %196, %179, %174, %136, %119, %114, %94, %46, %27, %21, %15 + %213 = load i8** %1 ; [#uses=1] + ret i8* %213 +} + +; [#uses=4] +define internal i32 @_Z13push_capturesP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %s, i8* %e) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=5] + %2 = alloca i8*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + %nlevels = alloca i32, align 4 ; [#uses=4] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store i8* %s, i8** %2, align 4 + store i8* %e, i8** %3, align 4 + %4 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %5 = getelementptr inbounds %struct.MatchState* %4, i32 0, i32 3 ; [#uses=1] + %6 = load i32* %5, align 4 ; [#uses=1] + %7 = icmp eq i32 %6, 0 ; [#uses=1] + br i1 %7, label %8, label %12 + +; <label>:8 ; preds = %0 + %9 = load i8** %2, align 4 ; [#uses=1] + %10 = icmp ne i8* %9, null ; [#uses=1] + br i1 %10, label %11, label %12 + +; <label>:11 ; preds = %8 + br label %16 + +; <label>:12 ; preds = %8, %0 + %13 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.MatchState* %13, i32 0, i32 3 ; [#uses=1] + %15 = load i32* %14, align 4 ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %12, %11 + %17 = phi i32 [ 1, %11 ], [ %15, %12 ] ; [#uses=1] + store i32 %17, i32* %nlevels, align 4 + %18 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.MatchState* %18, i32 0, i32 2 ; [#uses=1] + %20 = load %struct.lua_State** %19, align 4 ; [#uses=1] + %21 = load i32* %nlevels, align 4 ; [#uses=1] + call void @_Z15luaL_checkstackP9lua_StateiPKc(%struct.lua_State* %20, i32 %21, i8* getelementptr inbounds ([18 x i8]* @.str19517, i32 0, i32 0)) + store i32 0, i32* %i, align 4 + br label %22 + +; <label>:22 ; preds = %31, %16 + %23 = load i32* %i, align 4 ; [#uses=1] + %24 = load i32* %nlevels, align 4 ; [#uses=1] + %25 = icmp slt i32 %23, %24 ; [#uses=1] + br i1 %25, label %26, label %34 + +; <label>:26 ; preds = %22 + %27 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %28 = load i32* %i, align 4 ; [#uses=1] + %29 = load i8** %2, align 4 ; [#uses=1] + %30 = load i8** %3, align 4 ; [#uses=1] + call void @_Z15push_onecaptureP10MatchStateiPKcS2_(%struct.MatchState* %27, i32 %28, i8* %29, i8* %30) + br label %31 + +; <label>:31 ; preds = %26 + %32 = load i32* %i, align 4 ; [#uses=1] + %33 = add nsw i32 %32, 1 ; [#uses=1] + store i32 %33, i32* %i, align 4 + br label %22 + +; <label>:34 ; preds = %22 + %35 = load i32* %nlevels, align 4 ; [#uses=1] + ret i32 %35 +} + +; [#uses=3] +define internal void @_Z15push_onecaptureP10MatchStateiPKcS2_(%struct.MatchState* %ms, i32 %i, i8* %s, i8* %e) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=11] + %2 = alloca i32, align 4 ; [#uses=6] + %3 = alloca i8*, align 4 ; [#uses=3] + %4 = alloca i8*, align 4 ; [#uses=2] + %l = alloca i32, align 4 ; [#uses=4] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store i32 %i, i32* %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %e, i8** %4, align 4 + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds %struct.MatchState* %6, i32 0, i32 3 ; [#uses=1] + %8 = load i32* %7, align 4 ; [#uses=1] + %9 = icmp sge i32 %5, %8 ; [#uses=1] + br i1 %9, label %10, label %29 + +; <label>:10 ; preds = %0 + %11 = load i32* %2, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %23 + +; <label>:13 ; preds = %10 + %14 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.MatchState* %14, i32 0, i32 2 ; [#uses=1] + %16 = load %struct.lua_State** %15, align 4 ; [#uses=1] + %17 = load i8** %3, align 4 ; [#uses=1] + %18 = load i8** %4, align 4 ; [#uses=1] + %19 = load i8** %3, align 4 ; [#uses=1] + %20 = ptrtoint i8* %18 to i32 ; [#uses=1] + %21 = ptrtoint i8* %19 to i32 ; [#uses=1] + %22 = sub i32 %20, %21 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %16, i8* %17, i32 %22) + br label %28 + +; <label>:23 ; preds = %10 + %24 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.MatchState* %24, i32 0, i32 2 ; [#uses=1] + %26 = load %struct.lua_State** %25, align 4 ; [#uses=1] + %27 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %26, i8* getelementptr inbounds ([22 x i8]* @.str20518, i32 0, i32 0)) ; [#uses=0] + br label %28 + +; <label>:28 ; preds = %23, %13 + br label %75 + +; <label>:29 ; preds = %0 + %30 = load i32* %2, align 4 ; [#uses=1] + %31 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %32 = getelementptr inbounds %struct.MatchState* %31, i32 0, i32 4 ; [#uses=1] + %33 = getelementptr inbounds [32 x %struct.LoadS]* %32, i32 0, i32 %30 ; [#uses=1] + %34 = getelementptr inbounds %struct.LoadS* %33, i32 0, i32 1 ; [#uses=1] + %35 = load i32* %34, align 4 ; [#uses=1] + store i32 %35, i32* %l, align 4 + %36 = load i32* %l, align 4 ; [#uses=1] + %37 = icmp eq i32 %36, -1 ; [#uses=1] + br i1 %37, label %38, label %43 + +; <label>:38 ; preds = %29 + %39 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.MatchState* %39, i32 0, i32 2 ; [#uses=1] + %41 = load %struct.lua_State** %40, align 4 ; [#uses=1] + %42 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %41, i8* getelementptr inbounds ([19 x i8]* @.str21519, i32 0, i32 0)) ; [#uses=0] + br label %43 + +; <label>:43 ; preds = %38, %29 + %44 = load i32* %l, align 4 ; [#uses=1] + %45 = icmp eq i32 %44, -2 ; [#uses=1] + br i1 %45, label %46, label %63 + +; <label>:46 ; preds = %43 + %47 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %48 = getelementptr inbounds %struct.MatchState* %47, i32 0, i32 2 ; [#uses=1] + %49 = load %struct.lua_State** %48, align 4 ; [#uses=1] + %50 = load i32* %2, align 4 ; [#uses=1] + %51 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %52 = getelementptr inbounds %struct.MatchState* %51, i32 0, i32 4 ; [#uses=1] + %53 = getelementptr inbounds [32 x %struct.LoadS]* %52, i32 0, i32 %50 ; [#uses=1] + %54 = getelementptr inbounds %struct.LoadS* %53, i32 0, i32 0 ; [#uses=1] + %55 = load i8** %54, align 4 ; [#uses=1] + %56 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %57 = getelementptr inbounds %struct.MatchState* %56, i32 0, i32 0 ; [#uses=1] + %58 = load i8** %57, align 4 ; [#uses=1] + %59 = ptrtoint i8* %55 to i32 ; [#uses=1] + %60 = ptrtoint i8* %58 to i32 ; [#uses=1] + %61 = sub i32 %59, %60 ; [#uses=1] + %62 = add nsw i32 %61, 1 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %49, i32 %62) + br label %74 + +; <label>:63 ; preds = %43 + %64 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %65 = getelementptr inbounds %struct.MatchState* %64, i32 0, i32 2 ; [#uses=1] + %66 = load %struct.lua_State** %65, align 4 ; [#uses=1] + %67 = load i32* %2, align 4 ; [#uses=1] + %68 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.MatchState* %68, i32 0, i32 4 ; [#uses=1] + %70 = getelementptr inbounds [32 x %struct.LoadS]* %69, i32 0, i32 %67 ; [#uses=1] + %71 = getelementptr inbounds %struct.LoadS* %70, i32 0, i32 0 ; [#uses=1] + %72 = load i8** %71, align 4 ; [#uses=1] + %73 = load i32* %l, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %66, i8* %72, i32 %73) + br label %74 + +; <label>:74 ; preds = %63, %46 + br label %75 + +; <label>:75 ; preds = %74, %28 + ret void +} + +; [#uses=2] +define internal i8* @_Z13start_captureP10MatchStatePKcS2_i(%struct.MatchState* %ms, i8* %s, i8* %p, i32 %what) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=8] + %2 = alloca i8*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i32, align 4 ; [#uses=2] + %res = alloca i8*, align 4 ; [#uses=2] + %level = alloca i32, align 4 ; [#uses=5] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store i8* %s, i8** %2, align 4 + store i8* %p, i8** %3, align 4 + store i32 %what, i32* %4, align 4 + %5 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.MatchState* %5, i32 0, i32 3 ; [#uses=1] + %7 = load i32* %6, align 4 ; [#uses=1] + store i32 %7, i32* %level, align 4 + %8 = load i32* %level, align 4 ; [#uses=1] + %9 = icmp sge i32 %8, 32 ; [#uses=1] + br i1 %9, label %10, label %15 + +; <label>:10 ; preds = %0 + %11 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %12 = getelementptr inbounds %struct.MatchState* %11, i32 0, i32 2 ; [#uses=1] + %13 = load %struct.lua_State** %12, align 4 ; [#uses=1] + %14 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %13, i8* getelementptr inbounds ([18 x i8]* @.str19517, i32 0, i32 0)) ; [#uses=0] + br label %15 + +; <label>:15 ; preds = %10, %0 + %16 = load i8** %2, align 4 ; [#uses=1] + %17 = load i32* %level, align 4 ; [#uses=1] + %18 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.MatchState* %18, i32 0, i32 4 ; [#uses=1] + %20 = getelementptr inbounds [32 x %struct.LoadS]* %19, i32 0, i32 %17 ; [#uses=1] + %21 = getelementptr inbounds %struct.LoadS* %20, i32 0, i32 0 ; [#uses=1] + store i8* %16, i8** %21, align 4 + %22 = load i32* %4, align 4 ; [#uses=1] + %23 = load i32* %level, align 4 ; [#uses=1] + %24 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.MatchState* %24, i32 0, i32 4 ; [#uses=1] + %26 = getelementptr inbounds [32 x %struct.LoadS]* %25, i32 0, i32 %23 ; [#uses=1] + %27 = getelementptr inbounds %struct.LoadS* %26, i32 0, i32 1 ; [#uses=1] + store i32 %22, i32* %27, align 4 + %28 = load i32* %level, align 4 ; [#uses=1] + %29 = add nsw i32 %28, 1 ; [#uses=1] + %30 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %31 = getelementptr inbounds %struct.MatchState* %30, i32 0, i32 3 ; [#uses=1] + store i32 %29, i32* %31, align 4 + %32 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %33 = load i8** %2, align 4 ; [#uses=1] + %34 = load i8** %3, align 4 ; [#uses=1] + %35 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %32, i8* %33, i8* %34) ; [#uses=2] + store i8* %35, i8** %res, align 4 + %36 = icmp eq i8* %35, null ; [#uses=1] + br i1 %36, label %37, label %42 + +; <label>:37 ; preds = %15 + %38 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %39 = getelementptr inbounds %struct.MatchState* %38, i32 0, i32 3 ; [#uses=2] + %40 = load i32* %39, align 4 ; [#uses=1] + %41 = add nsw i32 %40, -1 ; [#uses=1] + store i32 %41, i32* %39, align 4 + br label %42 + +; <label>:42 ; preds = %37, %15 + %43 = load i8** %res, align 4 ; [#uses=1] + ret i8* %43 +} + +; [#uses=1] +define internal i8* @_Z11end_captureP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %s, i8* %p) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=6] + %2 = alloca i8*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=2] + %l = alloca i32, align 4 ; [#uses=4] + %res = alloca i8*, align 4 ; [#uses=2] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store i8* %s, i8** %2, align 4 + store i8* %p, i8** %3, align 4 + %4 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %5 = call i32 @_Z16capture_to_closeP10MatchState(%struct.MatchState* %4) ; [#uses=1] + store i32 %5, i32* %l, align 4 + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = load i32* %l, align 4 ; [#uses=1] + %8 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %9 = getelementptr inbounds %struct.MatchState* %8, i32 0, i32 4 ; [#uses=1] + %10 = getelementptr inbounds [32 x %struct.LoadS]* %9, i32 0, i32 %7 ; [#uses=1] + %11 = getelementptr inbounds %struct.LoadS* %10, i32 0, i32 0 ; [#uses=1] + %12 = load i8** %11, align 4 ; [#uses=1] + %13 = ptrtoint i8* %6 to i32 ; [#uses=1] + %14 = ptrtoint i8* %12 to i32 ; [#uses=1] + %15 = sub i32 %13, %14 ; [#uses=1] + %16 = load i32* %l, align 4 ; [#uses=1] + %17 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %18 = getelementptr inbounds %struct.MatchState* %17, i32 0, i32 4 ; [#uses=1] + %19 = getelementptr inbounds [32 x %struct.LoadS]* %18, i32 0, i32 %16 ; [#uses=1] + %20 = getelementptr inbounds %struct.LoadS* %19, i32 0, i32 1 ; [#uses=1] + store i32 %15, i32* %20, align 4 + %21 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %22 = load i8** %2, align 4 ; [#uses=1] + %23 = load i8** %3, align 4 ; [#uses=1] + %24 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %21, i8* %22, i8* %23) ; [#uses=2] + store i8* %24, i8** %res, align 4 + %25 = icmp eq i8* %24, null ; [#uses=1] + br i1 %25, label %26, label %32 + +; <label>:26 ; preds = %0 + %27 = load i32* %l, align 4 ; [#uses=1] + %28 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %29 = getelementptr inbounds %struct.MatchState* %28, i32 0, i32 4 ; [#uses=1] + %30 = getelementptr inbounds [32 x %struct.LoadS]* %29, i32 0, i32 %27 ; [#uses=1] + %31 = getelementptr inbounds %struct.LoadS* %30, i32 0, i32 1 ; [#uses=1] + store i32 -1, i32* %31, align 4 + br label %32 + +; <label>:32 ; preds = %26, %0 + %33 = load i8** %res, align 4 ; [#uses=1] + ret i8* %33 +} + +; [#uses=1] +define internal i8* @_Z12matchbalanceP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %s, i8* %p) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=7] + %4 = alloca i8*, align 4 ; [#uses=6] + %b = alloca i32, align 4 ; [#uses=2] + %e = alloca i32, align 4 ; [#uses=2] + %cont = alloca i32, align 4 ; [#uses=5] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %p, i8** %4, align 4 + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = load i8* %5 ; [#uses=1] + %7 = sext i8 %6 to i32 ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %15, label %9 + +; <label>:9 ; preds = %0 + %10 = load i8** %4, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] + %12 = load i8* %11 ; [#uses=1] + %13 = sext i8 %12 to i32 ; [#uses=1] + %14 = icmp eq i32 %13, 0 ; [#uses=1] + br i1 %14, label %15, label %20 + +; <label>:15 ; preds = %9, %0 + %16 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.MatchState* %16, i32 0, i32 2 ; [#uses=1] + %18 = load %struct.lua_State** %17, align 4 ; [#uses=1] + %19 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %18, i8* getelementptr inbounds ([19 x i8]* @.str25523, i32 0, i32 0)) ; [#uses=0] + br label %20 + +; <label>:20 ; preds = %15, %9 + %21 = load i8** %3, align 4 ; [#uses=1] + %22 = load i8* %21 ; [#uses=1] + %23 = sext i8 %22 to i32 ; [#uses=1] + %24 = load i8** %4, align 4 ; [#uses=1] + %25 = load i8* %24 ; [#uses=1] + %26 = sext i8 %25 to i32 ; [#uses=1] + %27 = icmp ne i32 %23, %26 ; [#uses=1] + br i1 %27, label %28, label %29 + +; <label>:28 ; preds = %20 + store i8* null, i8** %1 + br label %71 + +; <label>:29 ; preds = %20 + %30 = load i8** %4, align 4 ; [#uses=1] + %31 = load i8* %30 ; [#uses=1] + %32 = sext i8 %31 to i32 ; [#uses=1] + store i32 %32, i32* %b, align 4 + %33 = load i8** %4, align 4 ; [#uses=1] + %34 = getelementptr inbounds i8* %33, i32 1 ; [#uses=1] + %35 = load i8* %34 ; [#uses=1] + %36 = sext i8 %35 to i32 ; [#uses=1] + store i32 %36, i32* %e, align 4 + store i32 1, i32* %cont, align 4 + br label %37 + +; <label>:37 ; preds = %68, %29 + %38 = load i8** %3, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=2] + store i8* %39, i8** %3, align 4 + %40 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %41 = getelementptr inbounds %struct.MatchState* %40, i32 0, i32 1 ; [#uses=1] + %42 = load i8** %41, align 4 ; [#uses=1] + %43 = icmp ult i8* %39, %42 ; [#uses=1] + br i1 %43, label %44, label %69 + +; <label>:44 ; preds = %37 + %45 = load i8** %3, align 4 ; [#uses=1] + %46 = load i8* %45 ; [#uses=1] + %47 = sext i8 %46 to i32 ; [#uses=1] + %48 = load i32* %e, align 4 ; [#uses=1] + %49 = icmp eq i32 %47, %48 ; [#uses=1] + br i1 %49, label %50, label %58 + +; <label>:50 ; preds = %44 + %51 = load i32* %cont, align 4 ; [#uses=1] + %52 = add nsw i32 %51, -1 ; [#uses=2] + store i32 %52, i32* %cont, align 4 + %53 = icmp eq i32 %52, 0 ; [#uses=1] + br i1 %53, label %54, label %57 + +; <label>:54 ; preds = %50 + %55 = load i8** %3, align 4 ; [#uses=1] + %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] + store i8* %56, i8** %1 + br label %71 + +; <label>:57 ; preds = %50 + br label %68 + +; <label>:58 ; preds = %44 + %59 = load i8** %3, align 4 ; [#uses=1] + %60 = load i8* %59 ; [#uses=1] + %61 = sext i8 %60 to i32 ; [#uses=1] + %62 = load i32* %b, align 4 ; [#uses=1] + %63 = icmp eq i32 %61, %62 ; [#uses=1] + br i1 %63, label %64, label %67 + +; <label>:64 ; preds = %58 + %65 = load i32* %cont, align 4 ; [#uses=1] + %66 = add nsw i32 %65, 1 ; [#uses=1] + store i32 %66, i32* %cont, align 4 + br label %67 + +; <label>:67 ; preds = %64, %58 + br label %68 + +; <label>:68 ; preds = %67, %57 + br label %37 + +; <label>:69 ; preds = %37 + br label %70 + +; <label>:70 ; preds = %69 + store i8* null, i8** %1 + br label %71 + +; <label>:71 ; preds = %70, %54, %28 + %72 = load i8** %1 ; [#uses=1] + ret i8* %72 +} + +; [#uses=2] +define internal i8* @_Z8classendP10MatchStatePKc(%struct.MatchState* %ms, i8* %p) { + %1 = alloca i8*, align 4 ; [#uses=4] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=17] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %p, i8** %3, align 4 + %4 = load i8** %3, align 4 ; [#uses=2] + %5 = getelementptr inbounds i8* %4, i32 1 ; [#uses=1] + store i8* %5, i8** %3, align 4 + %6 = load i8* %4 ; [#uses=1] + %7 = sext i8 %6 to i32 ; [#uses=1] + switch i32 %7, label %63 [ + i32 37, label %8 + i32 91, label %21 + ] + +; <label>:8 ; preds = %0 + %9 = load i8** %3, align 4 ; [#uses=1] + %10 = load i8* %9 ; [#uses=1] + %11 = sext i8 %10 to i32 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %18 + +; <label>:13 ; preds = %8 + %14 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.MatchState* %14, i32 0, i32 2 ; [#uses=1] + %16 = load %struct.lua_State** %15, align 4 ; [#uses=1] + %17 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %16, i8* getelementptr inbounds ([35 x i8]* @.str23521, i32 0, i32 0)) ; [#uses=0] + br label %18 + +; <label>:18 ; preds = %13, %8 + %19 = load i8** %3, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] + store i8* %20, i8** %1 + br label %65 + +; <label>:21 ; preds = %0 + %22 = load i8** %3, align 4 ; [#uses=1] + %23 = load i8* %22 ; [#uses=1] + %24 = sext i8 %23 to i32 ; [#uses=1] + %25 = icmp eq i32 %24, 94 ; [#uses=1] + br i1 %25, label %26, label %29 + +; <label>:26 ; preds = %21 + %27 = load i8** %3, align 4 ; [#uses=1] + %28 = getelementptr inbounds i8* %27, i32 1 ; [#uses=1] + store i8* %28, i8** %3, align 4 + br label %29 + +; <label>:29 ; preds = %26, %21 + br label %30 + +; <label>:30 ; preds = %55, %29 + %31 = load i8** %3, align 4 ; [#uses=1] + %32 = load i8* %31 ; [#uses=1] + %33 = sext i8 %32 to i32 ; [#uses=1] + %34 = icmp eq i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %40 + +; <label>:35 ; preds = %30 + %36 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %37 = getelementptr inbounds %struct.MatchState* %36, i32 0, i32 2 ; [#uses=1] + %38 = load %struct.lua_State** %37, align 4 ; [#uses=1] + %39 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %38, i8* getelementptr inbounds ([32 x i8]* @.str24522, i32 0, i32 0)) ; [#uses=0] + br label %40 + +; <label>:40 ; preds = %35, %30 + %41 = load i8** %3, align 4 ; [#uses=2] + %42 = getelementptr inbounds i8* %41, i32 1 ; [#uses=1] + store i8* %42, i8** %3, align 4 + %43 = load i8* %41 ; [#uses=1] + %44 = sext i8 %43 to i32 ; [#uses=1] + %45 = icmp eq i32 %44, 37 ; [#uses=1] + br i1 %45, label %46, label %54 + +; <label>:46 ; preds = %40 + %47 = load i8** %3, align 4 ; [#uses=1] + %48 = load i8* %47 ; [#uses=1] + %49 = sext i8 %48 to i32 ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + br i1 %50, label %51, label %54 + +; <label>:51 ; preds = %46 + %52 = load i8** %3, align 4 ; [#uses=1] + %53 = getelementptr inbounds i8* %52, i32 1 ; [#uses=1] + store i8* %53, i8** %3, align 4 + br label %54 + +; <label>:54 ; preds = %51, %46, %40 + br label %55 + +; <label>:55 ; preds = %54 + %56 = load i8** %3, align 4 ; [#uses=1] + %57 = load i8* %56 ; [#uses=1] + %58 = sext i8 %57 to i32 ; [#uses=1] + %59 = icmp ne i32 %58, 93 ; [#uses=1] + br i1 %59, label %30, label %60 + +; <label>:60 ; preds = %55 + %61 = load i8** %3, align 4 ; [#uses=1] + %62 = getelementptr inbounds i8* %61, i32 1 ; [#uses=1] + store i8* %62, i8** %1 + br label %65 + +; <label>:63 ; preds = %0 + %64 = load i8** %3, align 4 ; [#uses=1] + store i8* %64, i8** %1 + br label %65 + +; <label>:65 ; preds = %63, %60, %18 + %66 = load i8** %1 ; [#uses=1] + ret i8* %66 +} + +; [#uses=3] +define internal i32 @_Z17matchbracketclassiPKcS0_(i32 %c, i8* %p, i8* %ec) nounwind { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=5] + %3 = alloca i8*, align 4 ; [#uses=17] + %4 = alloca i8*, align 4 ; [#uses=3] + %sig = alloca i32, align 4 ; [#uses=6] + store i32 %c, i32* %2, align 4 + store i8* %p, i8** %3, align 4 + store i8* %ec, i8** %4, align 4 + store i32 1, i32* %sig, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = getelementptr inbounds i8* %5, i32 1 ; [#uses=1] + %7 = load i8* %6 ; [#uses=1] + %8 = sext i8 %7 to i32 ; [#uses=1] + %9 = icmp eq i32 %8, 94 ; [#uses=1] + br i1 %9, label %10, label %13 + +; <label>:10 ; preds = %0 + store i32 0, i32* %sig, align 4 + %11 = load i8** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 1 ; [#uses=1] + store i8* %12, i8** %3, align 4 + br label %13 + +; <label>:13 ; preds = %10, %0 + br label %14 + +; <label>:14 ; preds = %75, %13 + %15 = load i8** %3, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8* %15, i32 1 ; [#uses=2] + store i8* %16, i8** %3, align 4 + %17 = load i8** %4, align 4 ; [#uses=1] + %18 = icmp ult i8* %16, %17 ; [#uses=1] + br i1 %18, label %19, label %76 + +; <label>:19 ; preds = %14 + %20 = load i8** %3, align 4 ; [#uses=1] + %21 = load i8* %20 ; [#uses=1] + %22 = sext i8 %21 to i32 ; [#uses=1] + %23 = icmp eq i32 %22, 37 ; [#uses=1] + br i1 %23, label %24, label %36 + +; <label>:24 ; preds = %19 + %25 = load i8** %3, align 4 ; [#uses=1] + %26 = getelementptr inbounds i8* %25, i32 1 ; [#uses=1] + store i8* %26, i8** %3, align 4 + %27 = load i32* %2, align 4 ; [#uses=1] + %28 = load i8** %3, align 4 ; [#uses=1] + %29 = load i8* %28 ; [#uses=1] + %30 = zext i8 %29 to i32 ; [#uses=1] + %31 = call i32 @_Z11match_classii(i32 %27, i32 %30) ; [#uses=1] + %32 = icmp ne i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %35 + +; <label>:33 ; preds = %24 + %34 = load i32* %sig, align 4 ; [#uses=1] + store i32 %34, i32* %1 + br label %81 + +; <label>:35 ; preds = %24 + br label %75 + +; <label>:36 ; preds = %19 + %37 = load i8** %3, align 4 ; [#uses=1] + %38 = getelementptr inbounds i8* %37, i32 1 ; [#uses=1] + %39 = load i8* %38 ; [#uses=1] + %40 = sext i8 %39 to i32 ; [#uses=1] + %41 = icmp eq i32 %40, 45 ; [#uses=1] + br i1 %41, label %42, label %65 + +; <label>:42 ; preds = %36 + %43 = load i8** %3, align 4 ; [#uses=1] + %44 = getelementptr inbounds i8* %43, i32 2 ; [#uses=1] + %45 = load i8** %4, align 4 ; [#uses=1] + %46 = icmp ult i8* %44, %45 ; [#uses=1] + br i1 %46, label %47, label %65 + +; <label>:47 ; preds = %42 + %48 = load i8** %3, align 4 ; [#uses=1] + %49 = getelementptr inbounds i8* %48, i32 2 ; [#uses=1] + store i8* %49, i8** %3, align 4 + %50 = load i8** %3, align 4 ; [#uses=1] + %51 = getelementptr inbounds i8* %50, i32 -2 ; [#uses=1] + %52 = load i8* %51 ; [#uses=1] + %53 = zext i8 %52 to i32 ; [#uses=1] + %54 = load i32* %2, align 4 ; [#uses=1] + %55 = icmp sle i32 %53, %54 ; [#uses=1] + br i1 %55, label %56, label %64 + +; <label>:56 ; preds = %47 + %57 = load i32* %2, align 4 ; [#uses=1] + %58 = load i8** %3, align 4 ; [#uses=1] + %59 = load i8* %58 ; [#uses=1] + %60 = zext i8 %59 to i32 ; [#uses=1] + %61 = icmp sle i32 %57, %60 ; [#uses=1] + br i1 %61, label %62, label %64 + +; <label>:62 ; preds = %56 + %63 = load i32* %sig, align 4 ; [#uses=1] + store i32 %63, i32* %1 + br label %81 + +; <label>:64 ; preds = %56, %47 + br label %74 + +; <label>:65 ; preds = %42, %36 + %66 = load i8** %3, align 4 ; [#uses=1] + %67 = load i8* %66 ; [#uses=1] + %68 = zext i8 %67 to i32 ; [#uses=1] + %69 = load i32* %2, align 4 ; [#uses=1] + %70 = icmp eq i32 %68, %69 ; [#uses=1] + br i1 %70, label %71, label %73 + +; <label>:71 ; preds = %65 + %72 = load i32* %sig, align 4 ; [#uses=1] + store i32 %72, i32* %1 + br label %81 + +; <label>:73 ; preds = %65 + br label %74 + +; <label>:74 ; preds = %73, %64 + br label %75 + +; <label>:75 ; preds = %74, %35 + br label %14 + +; <label>:76 ; preds = %14 + %77 = load i32* %sig, align 4 ; [#uses=1] + %78 = icmp ne i32 %77, 0 ; [#uses=1] + %79 = xor i1 %78, true ; [#uses=1] + %80 = zext i1 %79 to i32 ; [#uses=1] + store i32 %80, i32* %1 + br label %81 + +; <label>:81 ; preds = %76, %71, %62, %33 + %82 = load i32* %1 ; [#uses=1] + ret i32 %82 +} + +; [#uses=1] +define internal i8* @_Z13match_captureP10MatchStatePKci(%struct.MatchState* %ms, i8* %s, i32 %l) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=5] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i32, align 4 ; [#uses=5] + %len = alloca i32, align 4 ; [#uses=4] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %s, i8** %3, align 4 + store i32 %l, i32* %4, align 4 + %5 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %6 = load i32* %4, align 4 ; [#uses=1] + %7 = call i32 @_Z13check_captureP10MatchStatei(%struct.MatchState* %5, i32 %6) ; [#uses=1] + store i32 %7, i32* %4, align 4 + %8 = load i32* %4, align 4 ; [#uses=1] + %9 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.MatchState* %9, i32 0, i32 4 ; [#uses=1] + %11 = getelementptr inbounds [32 x %struct.LoadS]* %10, i32 0, i32 %8 ; [#uses=1] + %12 = getelementptr inbounds %struct.LoadS* %11, i32 0, i32 1 ; [#uses=1] + %13 = load i32* %12, align 4 ; [#uses=1] + store i32 %13, i32* %len, align 4 + %14 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %15 = getelementptr inbounds %struct.MatchState* %14, i32 0, i32 1 ; [#uses=1] + %16 = load i8** %15, align 4 ; [#uses=1] + %17 = load i8** %3, align 4 ; [#uses=1] + %18 = ptrtoint i8* %16 to i32 ; [#uses=1] + %19 = ptrtoint i8* %17 to i32 ; [#uses=1] + %20 = sub i32 %18, %19 ; [#uses=1] + %21 = load i32* %len, align 4 ; [#uses=1] + %22 = icmp uge i32 %20, %21 ; [#uses=1] + br i1 %22, label %23, label %38 + +; <label>:23 ; preds = %0 + %24 = load i32* %4, align 4 ; [#uses=1] + %25 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %26 = getelementptr inbounds %struct.MatchState* %25, i32 0, i32 4 ; [#uses=1] + %27 = getelementptr inbounds [32 x %struct.LoadS]* %26, i32 0, i32 %24 ; [#uses=1] + %28 = getelementptr inbounds %struct.LoadS* %27, i32 0, i32 0 ; [#uses=1] + %29 = load i8** %28, align 4 ; [#uses=1] + %30 = load i8** %3, align 4 ; [#uses=1] + %31 = load i32* %len, align 4 ; [#uses=1] + %32 = call i32 @memcmp(i8* %29, i8* %30, i32 %31) nounwind readonly ; [#uses=1] + %33 = icmp eq i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %38 + +; <label>:34 ; preds = %23 + %35 = load i8** %3, align 4 ; [#uses=1] + %36 = load i32* %len, align 4 ; [#uses=1] + %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] + store i8* %37, i8** %1 + br label %39 + +; <label>:38 ; preds = %23, %0 + store i8* null, i8** %1 + br label %39 + +; <label>:39 ; preds = %38, %34 + %40 = load i8** %1 ; [#uses=1] + ret i8* %40 +} + +; [#uses=3] +define internal i32 @_Z11singlematchiPKcS0_(i32 %c, i8* %p, i8* %ep) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca i32, align 4 ; [#uses=4] + %3 = alloca i8*, align 4 ; [#uses=5] + %4 = alloca i8*, align 4 ; [#uses=2] + store i32 %c, i32* %2, align 4 + store i8* %p, i8** %3, align 4 + store i8* %ep, i8** %4, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = load i8* %5 ; [#uses=1] + %7 = sext i8 %6 to i32 ; [#uses=1] + switch i32 %7, label %22 [ + i32 46, label %8 + i32 37, label %9 + i32 91, label %16 + ] + +; <label>:8 ; preds = %0 + store i32 1, i32* %1 + br label %29 + +; <label>:9 ; preds = %0 + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = load i8** %3, align 4 ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 1 ; [#uses=1] + %13 = load i8* %12 ; [#uses=1] + %14 = zext i8 %13 to i32 ; [#uses=1] + %15 = call i32 @_Z11match_classii(i32 %10, i32 %14) ; [#uses=1] + store i32 %15, i32* %1 + br label %29 + +; <label>:16 ; preds = %0 + %17 = load i32* %2, align 4 ; [#uses=1] + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = load i8** %4, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8* %19, i32 -1 ; [#uses=1] + %21 = call i32 @_Z17matchbracketclassiPKcS0_(i32 %17, i8* %18, i8* %20) ; [#uses=1] + store i32 %21, i32* %1 + br label %29 + +; <label>:22 ; preds = %0 + %23 = load i8** %3, align 4 ; [#uses=1] + %24 = load i8* %23 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = load i32* %2, align 4 ; [#uses=1] + %27 = icmp eq i32 %25, %26 ; [#uses=1] + %28 = zext i1 %27 to i32 ; [#uses=1] + store i32 %28, i32* %1 + br label %29 + +; <label>:29 ; preds = %22, %16, %9, %8 + %30 = load i32* %1 ; [#uses=1] + ret i32 %30 +} + +; [#uses=2] +define internal i8* @_Z10max_expandP10MatchStatePKcS2_S2_(%struct.MatchState* %ms, i8* %s, i8* %p, i8* %ep) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i8*, align 4 ; [#uses=2] + %5 = alloca i8*, align 4 ; [#uses=3] + %i = alloca i32, align 4 ; [#uses=9] + %res = alloca i8*, align 4 ; [#uses=3] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %p, i8** %4, align 4 + store i8* %ep, i8** %5, align 4 + store i32 0, i32* %i, align 4 + br label %6 + +; <label>:6 ; preds = %26, %0 + %7 = load i8** %3, align 4 ; [#uses=1] + %8 = load i32* %i, align 4 ; [#uses=1] + %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] + %10 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.MatchState* %10, i32 0, i32 1 ; [#uses=1] + %12 = load i8** %11, align 4 ; [#uses=1] + %13 = icmp ult i8* %9, %12 ; [#uses=1] + br i1 %13, label %14, label %24 + +; <label>:14 ; preds = %6 + %15 = load i8** %3, align 4 ; [#uses=1] + %16 = load i32* %i, align 4 ; [#uses=1] + %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] + %18 = load i8* %17 ; [#uses=1] + %19 = zext i8 %18 to i32 ; [#uses=1] + %20 = load i8** %4, align 4 ; [#uses=1] + %21 = load i8** %5, align 4 ; [#uses=1] + %22 = call i32 @_Z11singlematchiPKcS0_(i32 %19, i8* %20, i8* %21) ; [#uses=1] + %23 = icmp ne i32 %22, 0 ; [#uses=1] + br label %24 + +; <label>:24 ; preds = %14, %6 + %25 = phi i1 [ false, %6 ], [ %23, %14 ] ; [#uses=1] + br i1 %25, label %26, label %29 + +; <label>:26 ; preds = %24 + %27 = load i32* %i, align 4 ; [#uses=1] + %28 = add nsw i32 %27, 1 ; [#uses=1] + store i32 %28, i32* %i, align 4 + br label %6 + +; <label>:29 ; preds = %24 + br label %30 + +; <label>:30 ; preds = %45, %29 + %31 = load i32* %i, align 4 ; [#uses=1] + %32 = icmp sge i32 %31, 0 ; [#uses=1] + br i1 %32, label %33, label %48 + +; <label>:33 ; preds = %30 + %34 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %35 = load i8** %3, align 4 ; [#uses=1] + %36 = load i32* %i, align 4 ; [#uses=1] + %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] + %38 = load i8** %5, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=1] + %40 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %34, i8* %37, i8* %39) ; [#uses=1] + store i8* %40, i8** %res, align 4 + %41 = load i8** %res, align 4 ; [#uses=1] + %42 = icmp ne i8* %41, null ; [#uses=1] + br i1 %42, label %43, label %45 + +; <label>:43 ; preds = %33 + %44 = load i8** %res, align 4 ; [#uses=1] + store i8* %44, i8** %1 + br label %49 + +; <label>:45 ; preds = %33 + %46 = load i32* %i, align 4 ; [#uses=1] + %47 = add nsw i32 %46, -1 ; [#uses=1] + store i32 %47, i32* %i, align 4 + br label %30 + +; <label>:48 ; preds = %30 + store i8* null, i8** %1 + br label %49 + +; <label>:49 ; preds = %48, %43 + %50 = load i8** %1 ; [#uses=1] + ret i8* %50 +} + +; [#uses=1] +define internal i8* @_Z10min_expandP10MatchStatePKcS2_S2_(%struct.MatchState* %ms, i8* %s, i8* %p, i8* %ep) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=6] + %4 = alloca i8*, align 4 ; [#uses=2] + %5 = alloca i8*, align 4 ; [#uses=3] + %res = alloca i8*, align 4 ; [#uses=3] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %p, i8** %4, align 4 + store i8* %ep, i8** %5, align 4 + br label %6 + +; <label>:6 ; preds = %35, %0 + %7 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %8 = load i8** %3, align 4 ; [#uses=1] + %9 = load i8** %5, align 4 ; [#uses=1] + %10 = getelementptr inbounds i8* %9, i32 1 ; [#uses=1] + %11 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %7, i8* %8, i8* %10) ; [#uses=1] + store i8* %11, i8** %res, align 4 + %12 = load i8** %res, align 4 ; [#uses=1] + %13 = icmp ne i8* %12, null ; [#uses=1] + br i1 %13, label %14, label %16 + +; <label>:14 ; preds = %6 + %15 = load i8** %res, align 4 ; [#uses=1] + store i8* %15, i8** %1 + br label %36 + +; <label>:16 ; preds = %6 + %17 = load i8** %3, align 4 ; [#uses=1] + %18 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.MatchState* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i8** %19, align 4 ; [#uses=1] + %21 = icmp ult i8* %17, %20 ; [#uses=1] + br i1 %21, label %22, label %33 + +; <label>:22 ; preds = %16 + %23 = load i8** %3, align 4 ; [#uses=1] + %24 = load i8* %23 ; [#uses=1] + %25 = zext i8 %24 to i32 ; [#uses=1] + %26 = load i8** %4, align 4 ; [#uses=1] + %27 = load i8** %5, align 4 ; [#uses=1] + %28 = call i32 @_Z11singlematchiPKcS0_(i32 %25, i8* %26, i8* %27) ; [#uses=1] + %29 = icmp ne i32 %28, 0 ; [#uses=1] + br i1 %29, label %30, label %33 + +; <label>:30 ; preds = %22 + %31 = load i8** %3, align 4 ; [#uses=1] + %32 = getelementptr inbounds i8* %31, i32 1 ; [#uses=1] + store i8* %32, i8** %3, align 4 + br label %34 + +; <label>:33 ; preds = %22, %16 + store i8* null, i8** %1 + br label %36 + +; <label>:34 ; preds = %30 + br label %35 + +; <label>:35 ; preds = %34 + br label %6 + +; <label>:36 ; preds = %33, %14 + %37 = load i8** %1 ; [#uses=1] + ret i8* %37 +} + +; [#uses=2] +define internal i32 @_Z11match_classii(i32 %c, i32 %cl) nounwind { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca i32, align 4 ; [#uses=12] + %3 = alloca i32, align 4 ; [#uses=4] + %res = alloca i32, align 4 ; [#uses=12] + store i32 %c, i32* %2, align 4 + store i32 %cl, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = call i32 @tolower(i32 %4) nounwind ; [#uses=1] + switch i32 %5, label %37 [ + i32 97, label %6 + i32 99, label %9 + i32 100, label %12 + i32 108, label %15 + i32 112, label %18 + i32 115, label %21 + i32 117, label %24 + i32 119, label %27 + i32 120, label %30 + i32 122, label %33 + ] + +; <label>:6 ; preds = %0 + %7 = load i32* %2, align 4 ; [#uses=1] + %8 = call i32 @isalpha(i32 %7) nounwind ; [#uses=1] + store i32 %8, i32* %res, align 4 + br label %42 + +; <label>:9 ; preds = %0 + %10 = load i32* %2, align 4 ; [#uses=1] + %11 = call i32 @iscntrl(i32 %10) nounwind ; [#uses=1] + store i32 %11, i32* %res, align 4 + br label %42 + +; <label>:12 ; preds = %0 + %13 = load i32* %2, align 4 ; [#uses=1] + %14 = call i32 @isdigit(i32 %13) nounwind ; [#uses=1] + store i32 %14, i32* %res, align 4 + br label %42 + +; <label>:15 ; preds = %0 + %16 = load i32* %2, align 4 ; [#uses=1] + %17 = call i32 @islower(i32 %16) nounwind ; [#uses=1] + store i32 %17, i32* %res, align 4 + br label %42 + +; <label>:18 ; preds = %0 + %19 = load i32* %2, align 4 ; [#uses=1] + %20 = call i32 @ispunct(i32 %19) nounwind ; [#uses=1] + store i32 %20, i32* %res, align 4 + br label %42 + +; <label>:21 ; preds = %0 + %22 = load i32* %2, align 4 ; [#uses=1] + %23 = call i32 @isspace(i32 %22) nounwind ; [#uses=1] + store i32 %23, i32* %res, align 4 + br label %42 + +; <label>:24 ; preds = %0 + %25 = load i32* %2, align 4 ; [#uses=1] + %26 = call i32 @isupper(i32 %25) nounwind ; [#uses=1] + store i32 %26, i32* %res, align 4 + br label %42 + +; <label>:27 ; preds = %0 + %28 = load i32* %2, align 4 ; [#uses=1] + %29 = call i32 @isalnum(i32 %28) nounwind ; [#uses=1] + store i32 %29, i32* %res, align 4 + br label %42 + +; <label>:30 ; preds = %0 + %31 = load i32* %2, align 4 ; [#uses=1] + %32 = call i32 @isxdigit(i32 %31) nounwind ; [#uses=1] + store i32 %32, i32* %res, align 4 + br label %42 + +; <label>:33 ; preds = %0 + %34 = load i32* %2, align 4 ; [#uses=1] + %35 = icmp eq i32 %34, 0 ; [#uses=1] + %36 = zext i1 %35 to i32 ; [#uses=1] + store i32 %36, i32* %res, align 4 + br label %42 + +; <label>:37 ; preds = %0 + %38 = load i32* %3, align 4 ; [#uses=1] + %39 = load i32* %2, align 4 ; [#uses=1] + %40 = icmp eq i32 %38, %39 ; [#uses=1] + %41 = zext i1 %40 to i32 ; [#uses=1] + store i32 %41, i32* %1 + br label %55 + +; <label>:42 ; preds = %33, %30, %27, %24, %21, %18, %15, %12, %9, %6 + %43 = load i32* %3, align 4 ; [#uses=1] + %44 = call i32 @islower(i32 %43) nounwind ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %46, label %48 + +; <label>:46 ; preds = %42 + %47 = load i32* %res, align 4 ; [#uses=1] + br label %53 + +; <label>:48 ; preds = %42 + %49 = load i32* %res, align 4 ; [#uses=1] + %50 = icmp ne i32 %49, 0 ; [#uses=1] + %51 = xor i1 %50, true ; [#uses=1] + %52 = zext i1 %51 to i32 ; [#uses=1] + br label %53 + +; <label>:53 ; preds = %48, %46 + %54 = phi i32 [ %47, %46 ], [ %52, %48 ] ; [#uses=1] + store i32 %54, i32* %1 + br label %55 + +; <label>:55 ; preds = %53, %37 + %56 = load i32* %1 ; [#uses=1] + ret i32 %56 +} + +; [#uses=2] +declare i32 @tolower(i32) nounwind + +; [#uses=2] +declare i32 @islower(i32) nounwind + +; [#uses=1] +declare i32 @ispunct(i32) nounwind + +; [#uses=1] +declare i32 @isupper(i32) nounwind + +; [#uses=1] +declare i32 @isxdigit(i32) nounwind + +; [#uses=1] +define internal i32 @_Z13check_captureP10MatchStatei(%struct.MatchState* %ms, i32 %l) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=4] + %3 = alloca i32, align 4 ; [#uses=7] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + store i32 %l, i32* %3, align 4 + %4 = load i32* %3, align 4 ; [#uses=1] + %5 = sub nsw i32 %4, 49 ; [#uses=1] + store i32 %5, i32* %3, align 4 + %6 = load i32* %3, align 4 ; [#uses=1] + %7 = icmp slt i32 %6, 0 ; [#uses=1] + br i1 %7, label %22, label %8 + +; <label>:8 ; preds = %0 + %9 = load i32* %3, align 4 ; [#uses=1] + %10 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.MatchState* %10, i32 0, i32 3 ; [#uses=1] + %12 = load i32* %11, align 4 ; [#uses=1] + %13 = icmp sge i32 %9, %12 ; [#uses=1] + br i1 %13, label %22, label %14 + +; <label>:14 ; preds = %8 + %15 = load i32* %3, align 4 ; [#uses=1] + %16 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %17 = getelementptr inbounds %struct.MatchState* %16, i32 0, i32 4 ; [#uses=1] + %18 = getelementptr inbounds [32 x %struct.LoadS]* %17, i32 0, i32 %15 ; [#uses=1] + %19 = getelementptr inbounds %struct.LoadS* %18, i32 0, i32 1 ; [#uses=1] + %20 = load i32* %19, align 4 ; [#uses=1] + %21 = icmp eq i32 %20, -1 ; [#uses=1] + br i1 %21, label %22, label %27 + +; <label>:22 ; preds = %14, %8, %0 + %23 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %24 = getelementptr inbounds %struct.MatchState* %23, i32 0, i32 2 ; [#uses=1] + %25 = load %struct.lua_State** %24, align 4 ; [#uses=1] + %26 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %25, i8* getelementptr inbounds ([22 x i8]* @.str20518, i32 0, i32 0)) ; [#uses=1] + store i32 %26, i32* %1 + br label %29 + +; <label>:27 ; preds = %14 + %28 = load i32* %3, align 4 ; [#uses=1] + store i32 %28, i32* %1 + br label %29 + +; <label>:29 ; preds = %27, %22 + %30 = load i32* %1 ; [#uses=1] + ret i32 %30 +} + +; [#uses=1] +define internal i32 @_Z16capture_to_closeP10MatchState(%struct.MatchState* %ms) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.MatchState*, align 4 ; [#uses=4] + %level = alloca i32, align 4 ; [#uses=8] + store %struct.MatchState* %ms, %struct.MatchState** %2, align 4 + %3 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.MatchState* %3, i32 0, i32 3 ; [#uses=1] + %5 = load i32* %4, align 4 ; [#uses=1] + store i32 %5, i32* %level, align 4 + %6 = load i32* %level, align 4 ; [#uses=1] + %7 = add nsw i32 %6, -1 ; [#uses=1] + store i32 %7, i32* %level, align 4 + br label %8 + +; <label>:8 ; preds = %22, %0 + %9 = load i32* %level, align 4 ; [#uses=1] + %10 = icmp sge i32 %9, 0 ; [#uses=1] + br i1 %10, label %11, label %25 + +; <label>:11 ; preds = %8 + %12 = load i32* %level, align 4 ; [#uses=1] + %13 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.MatchState* %13, i32 0, i32 4 ; [#uses=1] + %15 = getelementptr inbounds [32 x %struct.LoadS]* %14, i32 0, i32 %12 ; [#uses=1] + %16 = getelementptr inbounds %struct.LoadS* %15, i32 0, i32 1 ; [#uses=1] + %17 = load i32* %16, align 4 ; [#uses=1] + %18 = icmp eq i32 %17, -1 ; [#uses=1] + br i1 %18, label %19, label %21 + +; <label>:19 ; preds = %11 + %20 = load i32* %level, align 4 ; [#uses=1] + store i32 %20, i32* %1 + br label %30 + +; <label>:21 ; preds = %11 + br label %22 + +; <label>:22 ; preds = %21 + %23 = load i32* %level, align 4 ; [#uses=1] + %24 = add nsw i32 %23, -1 ; [#uses=1] + store i32 %24, i32* %level, align 4 + br label %8 + +; <label>:25 ; preds = %8 + %26 = load %struct.MatchState** %2, align 4 ; [#uses=1] + %27 = getelementptr inbounds %struct.MatchState* %26, i32 0, i32 2 ; [#uses=1] + %28 = load %struct.lua_State** %27, align 4 ; [#uses=1] + %29 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %28, i8* getelementptr inbounds ([24 x i8]* @.str26524, i32 0, i32 0)) ; [#uses=1] + store i32 %29, i32* %1 + br label %30 + +; <label>:30 ; preds = %25, %19 + %31 = load i32* %1 ; [#uses=1] + ret i32 %31 +} + +; [#uses=1] +declare i8* @memchr(i8*, i32, i32) nounwind readonly + +; [#uses=1] +define internal void @_Z9add_valueP10MatchStateP11luaL_BufferPKcS4_(%struct.MatchState* %ms, %struct.luaL_Buffer* %b, i8* %s, i8* %e) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=5] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=3] + %3 = alloca i8*, align 4 ; [#uses=6] + %4 = alloca i8*, align 4 ; [#uses=5] + %L = alloca %struct.lua_State*, align 4 ; [#uses=12] + %n = alloca i32, align 4 ; [#uses=2] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store %struct.luaL_Buffer* %b, %struct.luaL_Buffer** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %e, i8** %4, align 4 + %5 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.MatchState* %5, i32 0, i32 2 ; [#uses=1] + %7 = load %struct.lua_State** %6, align 4 ; [#uses=1] + store %struct.lua_State* %7, %struct.lua_State** %L, align 4 + %8 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %9 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %8, i32 3) ; [#uses=1] + switch i32 %9, label %28 [ + i32 3, label %10 + i32 4, label %10 + i32 6, label %15 + i32 5, label %23 + ] + +; <label>:10 ; preds = %0, %0 + %11 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %12 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %13 = load i8** %3, align 4 ; [#uses=1] + %14 = load i8** %4, align 4 ; [#uses=1] + call void @_Z5add_sP10MatchStateP11luaL_BufferPKcS4_(%struct.MatchState* %11, %struct.luaL_Buffer* %12, i8* %13, i8* %14) + br label %55 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %16, i32 3) + %17 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %18 = load i8** %3, align 4 ; [#uses=1] + %19 = load i8** %4, align 4 ; [#uses=1] + %20 = call i32 @_Z13push_capturesP10MatchStatePKcS2_(%struct.MatchState* %17, i8* %18, i8* %19) ; [#uses=1] + store i32 %20, i32* %n, align 4 + %21 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %22 = load i32* %n, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %21, i32 %22, i32 1) + br label %28 + +; <label>:23 ; preds = %0 + %24 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %25 = load i8** %3, align 4 ; [#uses=1] + %26 = load i8** %4, align 4 ; [#uses=1] + call void @_Z15push_onecaptureP10MatchStateiPKcS2_(%struct.MatchState* %24, i32 0, i8* %25, i8* %26) + %27 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z12lua_gettableP9lua_Statei(%struct.lua_State* %27, i32 3) + br label %28 + +; <label>:28 ; preds = %23, %15, %0 + %29 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %30 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %29, i32 -1) ; [#uses=1] + %31 = icmp ne i32 %30, 0 ; [#uses=1] + br i1 %31, label %41, label %32 + +; <label>:32 ; preds = %28 + %33 = load %struct.lua_State** %L, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %33, i32 -2) + %34 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %35 = load i8** %3, align 4 ; [#uses=1] + %36 = load i8** %4, align 4 ; [#uses=1] + %37 = load i8** %3, align 4 ; [#uses=1] + %38 = ptrtoint i8* %36 to i32 ; [#uses=1] + %39 = ptrtoint i8* %37 to i32 ; [#uses=1] + %40 = sub i32 %38, %39 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %34, i8* %35, i32 %40) + br label %53 + +; <label>:41 ; preds = %28 + %42 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %43 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %42, i32 -1) ; [#uses=1] + %44 = icmp ne i32 %43, 0 ; [#uses=1] + br i1 %44, label %52, label %45 + +; <label>:45 ; preds = %41 + %46 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %47 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %48 = load %struct.lua_State** %L, align 4 ; [#uses=1] + %49 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %48, i32 -1) ; [#uses=1] + %50 = call i8* @_Z12lua_typenameP9lua_Statei(%struct.lua_State* %47, i32 %49) ; [#uses=1] + %51 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %46, i8* getelementptr inbounds ([33 x i8]* @.str28526, i32 0, i32 0), i8* %50) ; [#uses=0] + br label %52 + +; <label>:52 ; preds = %45, %41 + br label %53 + +; <label>:53 ; preds = %52, %32 + %54 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + call void @_Z13luaL_addvalueP11luaL_Buffer(%struct.luaL_Buffer* %54) + br label %55 + +; <label>:55 ; preds = %53, %10 + ret void +} + +; [#uses=1] +define internal void @_Z5add_sP10MatchStateP11luaL_BufferPKcS4_(%struct.MatchState* %ms, %struct.luaL_Buffer* %b, i8* %s, i8* %e) { + %1 = alloca %struct.MatchState*, align 4 ; [#uses=3] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=11] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i8*, align 4 ; [#uses=3] + %l = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=12] + %news = alloca i8*, align 4 ; [#uses=7] + store %struct.MatchState* %ms, %struct.MatchState** %1, align 4 + store %struct.luaL_Buffer* %b, %struct.luaL_Buffer** %2, align 4 + store i8* %s, i8** %3, align 4 + store i8* %e, i8** %4, align 4 + %5 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %6 = getelementptr inbounds %struct.MatchState* %5, i32 0, i32 2 ; [#uses=1] + %7 = load %struct.lua_State** %6, align 4 ; [#uses=1] + %8 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %7, i32 3, i32* %l) ; [#uses=1] + store i8* %8, i8** %news, align 4 + store i32 0, i32* %i, align 4 + br label %9 + +; <label>:9 ; preds = %105, %0 + %10 = load i32* %i, align 4 ; [#uses=1] + %11 = load i32* %l, align 4 ; [#uses=1] + %12 = icmp ult i32 %10, %11 ; [#uses=1] + br i1 %12, label %13, label %108 + +; <label>:13 ; preds = %9 + %14 = load i32* %i, align 4 ; [#uses=1] + %15 = load i8** %news, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8* %15, i32 %14 ; [#uses=1] + %17 = load i8* %16 ; [#uses=1] + %18 = sext i8 %17 to i32 ; [#uses=1] + %19 = icmp ne i32 %18, 37 ; [#uses=1] + br i1 %19, label %20, label %43 + +; <label>:20 ; preds = %13 + %21 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.luaL_Buffer* %21, i32 0, i32 0 ; [#uses=1] + %23 = load i8** %22, align 4 ; [#uses=1] + %24 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %25 = getelementptr inbounds %struct.luaL_Buffer* %24, i32 0, i32 3 ; [#uses=1] + %26 = getelementptr inbounds [8192 x i8]* %25, i32 0, i32 0 ; [#uses=1] + %27 = getelementptr inbounds i8* %26, i32 8192 ; [#uses=1] + %28 = icmp ult i8* %23, %27 ; [#uses=1] + br i1 %28, label %33, label %29 + +; <label>:29 ; preds = %20 + %30 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %31 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %30) ; [#uses=1] + %32 = icmp ne i8* %31, null ; [#uses=1] + br label %33 + +; <label>:33 ; preds = %29, %20 + %34 = phi i1 [ true, %20 ], [ %32, %29 ] ; [#uses=0] + %35 = load i32* %i, align 4 ; [#uses=1] + %36 = load i8** %news, align 4 ; [#uses=1] + %37 = getelementptr inbounds i8* %36, i32 %35 ; [#uses=1] + %38 = load i8* %37 ; [#uses=1] + %39 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %40 = getelementptr inbounds %struct.luaL_Buffer* %39, i32 0, i32 0 ; [#uses=2] + %41 = load i8** %40, align 4 ; [#uses=2] + %42 = getelementptr inbounds i8* %41, i32 1 ; [#uses=1] + store i8* %42, i8** %40, align 4 + store i8 %38, i8* %41 + br label %104 + +; <label>:43 ; preds = %13 + %44 = load i32* %i, align 4 ; [#uses=1] + %45 = add i32 %44, 1 ; [#uses=1] + store i32 %45, i32* %i, align 4 + %46 = load i32* %i, align 4 ; [#uses=1] + %47 = load i8** %news, align 4 ; [#uses=1] + %48 = getelementptr inbounds i8* %47, i32 %46 ; [#uses=1] + %49 = load i8* %48 ; [#uses=1] + %50 = zext i8 %49 to i32 ; [#uses=1] + %51 = call i32 @isdigit(i32 %50) nounwind ; [#uses=1] + %52 = icmp ne i32 %51, 0 ; [#uses=1] + br i1 %52, label %76, label %53 + +; <label>:53 ; preds = %43 + %54 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %55 = getelementptr inbounds %struct.luaL_Buffer* %54, i32 0, i32 0 ; [#uses=1] + %56 = load i8** %55, align 4 ; [#uses=1] + %57 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %58 = getelementptr inbounds %struct.luaL_Buffer* %57, i32 0, i32 3 ; [#uses=1] + %59 = getelementptr inbounds [8192 x i8]* %58, i32 0, i32 0 ; [#uses=1] + %60 = getelementptr inbounds i8* %59, i32 8192 ; [#uses=1] + %61 = icmp ult i8* %56, %60 ; [#uses=1] + br i1 %61, label %66, label %62 + +; <label>:62 ; preds = %53 + %63 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %64 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %63) ; [#uses=1] + %65 = icmp ne i8* %64, null ; [#uses=1] + br label %66 + +; <label>:66 ; preds = %62, %53 + %67 = phi i1 [ true, %53 ], [ %65, %62 ] ; [#uses=0] + %68 = load i32* %i, align 4 ; [#uses=1] + %69 = load i8** %news, align 4 ; [#uses=1] + %70 = getelementptr inbounds i8* %69, i32 %68 ; [#uses=1] + %71 = load i8* %70 ; [#uses=1] + %72 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %73 = getelementptr inbounds %struct.luaL_Buffer* %72, i32 0, i32 0 ; [#uses=2] + %74 = load i8** %73, align 4 ; [#uses=2] + %75 = getelementptr inbounds i8* %74, i32 1 ; [#uses=1] + store i8* %75, i8** %73, align 4 + store i8 %71, i8* %74 + br label %103 + +; <label>:76 ; preds = %43 + %77 = load i32* %i, align 4 ; [#uses=1] + %78 = load i8** %news, align 4 ; [#uses=1] + %79 = getelementptr inbounds i8* %78, i32 %77 ; [#uses=1] + %80 = load i8* %79 ; [#uses=1] + %81 = sext i8 %80 to i32 ; [#uses=1] + %82 = icmp eq i32 %81, 48 ; [#uses=1] + br i1 %82, label %83, label %91 + +; <label>:83 ; preds = %76 + %84 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %85 = load i8** %3, align 4 ; [#uses=1] + %86 = load i8** %4, align 4 ; [#uses=1] + %87 = load i8** %3, align 4 ; [#uses=1] + %88 = ptrtoint i8* %86 to i32 ; [#uses=1] + %89 = ptrtoint i8* %87 to i32 ; [#uses=1] + %90 = sub i32 %88, %89 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %84, i8* %85, i32 %90) + br label %102 + +; <label>:91 ; preds = %76 + %92 = load %struct.MatchState** %1, align 4 ; [#uses=1] + %93 = load i32* %i, align 4 ; [#uses=1] + %94 = load i8** %news, align 4 ; [#uses=1] + %95 = getelementptr inbounds i8* %94, i32 %93 ; [#uses=1] + %96 = load i8* %95 ; [#uses=1] + %97 = sext i8 %96 to i32 ; [#uses=1] + %98 = sub nsw i32 %97, 49 ; [#uses=1] + %99 = load i8** %3, align 4 ; [#uses=1] + %100 = load i8** %4, align 4 ; [#uses=1] + call void @_Z15push_onecaptureP10MatchStateiPKcS2_(%struct.MatchState* %92, i32 %98, i8* %99, i8* %100) + %101 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + call void @_Z13luaL_addvalueP11luaL_Buffer(%struct.luaL_Buffer* %101) + br label %102 + +; <label>:102 ; preds = %91, %83 + br label %103 + +; <label>:103 ; preds = %102, %66 + br label %104 + +; <label>:104 ; preds = %103, %33 + br label %105 + +; <label>:105 ; preds = %104 + %106 = load i32* %i, align 4 ; [#uses=1] + %107 = add i32 %106, 1 ; [#uses=1] + store i32 %107, i32* %i, align 4 + br label %9 + +; <label>:108 ; preds = %9 + ret void +} + +; [#uses=1] +define internal i32 @_Z10gmatch_auxP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %ms = alloca %struct.MatchState, align 4 ; [#uses=7] + %ls = alloca i32, align 4 ; [#uses=2] + %s = alloca i8*, align 4 ; [#uses=5] + %p = alloca i8*, align 4 ; [#uses=2] + %src = alloca i8*, align 4 ; [#uses=7] + %e = alloca i8*, align 4 ; [#uses=4] + %newstart = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %3, i32 -10003, i32* %ls) ; [#uses=1] + store i8* %4, i8** %s, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %5, i32 -10004, i32* null) ; [#uses=1] + store i8* %6, i8** %p, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 2 ; [#uses=1] + store %struct.lua_State* %7, %struct.lua_State** %8, align 4 + %9 = load i8** %s, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 0 ; [#uses=1] + store i8* %9, i8** %10, align 4 + %11 = load i8** %s, align 4 ; [#uses=1] + %12 = load i32* %ls, align 4 ; [#uses=1] + %13 = getelementptr inbounds i8* %11, i32 %12 ; [#uses=1] + %14 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + store i8* %13, i8** %14, align 4 + %15 = load i8** %s, align 4 ; [#uses=1] + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %17 = call i32 @_Z13lua_tointegerP9lua_Statei(%struct.lua_State* %16, i32 -10005) ; [#uses=1] + %18 = getelementptr inbounds i8* %15, i32 %17 ; [#uses=1] + store i8* %18, i8** %src, align 4 + br label %19 + +; <label>:19 ; preds = %50, %0 + %20 = load i8** %src, align 4 ; [#uses=1] + %21 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 1 ; [#uses=1] + %22 = load i8** %21, align 4 ; [#uses=1] + %23 = icmp ule i8* %20, %22 ; [#uses=1] + br i1 %23, label %24, label %53 + +; <label>:24 ; preds = %19 + %25 = getelementptr inbounds %struct.MatchState* %ms, i32 0, i32 3 ; [#uses=1] + store i32 0, i32* %25, align 4 + %26 = load i8** %src, align 4 ; [#uses=1] + %27 = load i8** %p, align 4 ; [#uses=1] + %28 = call i8* @_Z5matchP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %26, i8* %27) ; [#uses=2] + store i8* %28, i8** %e, align 4 + %29 = icmp ne i8* %28, null ; [#uses=1] + br i1 %29, label %30, label %49 + +; <label>:30 ; preds = %24 + %31 = load i8** %e, align 4 ; [#uses=1] + %32 = load i8** %s, align 4 ; [#uses=1] + %33 = ptrtoint i8* %31 to i32 ; [#uses=1] + %34 = ptrtoint i8* %32 to i32 ; [#uses=1] + %35 = sub i32 %33, %34 ; [#uses=1] + store i32 %35, i32* %newstart, align 4 + %36 = load i8** %e, align 4 ; [#uses=1] + %37 = load i8** %src, align 4 ; [#uses=1] + %38 = icmp eq i8* %36, %37 ; [#uses=1] + br i1 %38, label %39, label %42 + +; <label>:39 ; preds = %30 + %40 = load i32* %newstart, align 4 ; [#uses=1] + %41 = add nsw i32 %40, 1 ; [#uses=1] + store i32 %41, i32* %newstart, align 4 + br label %42 + +; <label>:42 ; preds = %39, %30 + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %44 = load i32* %newstart, align 4 ; [#uses=1] + call void @_Z15lua_pushintegerP9lua_Statei(%struct.lua_State* %43, i32 %44) + %45 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %45, i32 -10005) + %46 = load i8** %src, align 4 ; [#uses=1] + %47 = load i8** %e, align 4 ; [#uses=1] + %48 = call i32 @_Z13push_capturesP10MatchStatePKcS2_(%struct.MatchState* %ms, i8* %46, i8* %47) ; [#uses=1] + store i32 %48, i32* %1 + br label %54 + +; <label>:49 ; preds = %24 + br label %50 + +; <label>:50 ; preds = %49 + %51 = load i8** %src, align 4 ; [#uses=1] + %52 = getelementptr inbounds i8* %51, i32 1 ; [#uses=1] + store i8* %52, i8** %src, align 4 + br label %19 + +; <label>:53 ; preds = %19 + store i32 0, i32* %1 + br label %54 + +; <label>:54 ; preds = %53, %42 + %55 = load i32* %1 ; [#uses=1] + ret i32 %55 +} + +; [#uses=1] +define internal i8* @_Z10scanformatP9lua_StatePKcPc(%struct.lua_State* %L, i8* %strfrmt, i8* %form) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=6] + %3 = alloca i8*, align 4 ; [#uses=7] + %p = alloca i8*, align 4 ; [#uses=25] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %strfrmt, i8** %2, align 4 + store i8* %form, i8** %3, align 4 + %4 = load i8** %2, align 4 ; [#uses=1] + store i8* %4, i8** %p, align 4 + br label %5 + +; <label>:5 ; preds = %18, %0 + %6 = load i8** %p, align 4 ; [#uses=1] + %7 = load i8* %6 ; [#uses=1] + %8 = sext i8 %7 to i32 ; [#uses=1] + %9 = icmp ne i32 %8, 0 ; [#uses=1] + br i1 %9, label %10, label %16 + +; <label>:10 ; preds = %5 + %11 = load i8** %p, align 4 ; [#uses=1] + %12 = load i8* %11 ; [#uses=1] + %13 = sext i8 %12 to i32 ; [#uses=1] + %14 = call i8* @strchr(i8* getelementptr inbounds ([6 x i8]* @.str34532, i32 0, i32 0), i32 %13) ; [#uses=1] + %15 = icmp ne i8* %14, null ; [#uses=1] + br label %16 + +; <label>:16 ; preds = %10, %5 + %17 = phi i1 [ false, %5 ], [ %15, %10 ] ; [#uses=1] + br i1 %17, label %18, label %21 + +; <label>:18 ; preds = %16 + %19 = load i8** %p, align 4 ; [#uses=1] + %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] + store i8* %20, i8** %p, align 4 + br label %5 + +; <label>:21 ; preds = %16 + %22 = load i8** %p, align 4 ; [#uses=1] + %23 = load i8** %2, align 4 ; [#uses=1] + %24 = ptrtoint i8* %22 to i32 ; [#uses=1] + %25 = ptrtoint i8* %23 to i32 ; [#uses=1] + %26 = sub i32 %24, %25 ; [#uses=1] + %27 = icmp uge i32 %26, 6 ; [#uses=1] + br i1 %27, label %28, label %31 + +; <label>:28 ; preds = %21 + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %30 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %29, i8* getelementptr inbounds ([32 x i8]* @.str35533, i32 0, i32 0)) ; [#uses=0] + br label %31 + +; <label>:31 ; preds = %28, %21 + %32 = load i8** %p, align 4 ; [#uses=1] + %33 = load i8* %32 ; [#uses=1] + %34 = zext i8 %33 to i32 ; [#uses=1] + %35 = call i32 @isdigit(i32 %34) nounwind ; [#uses=1] + %36 = icmp ne i32 %35, 0 ; [#uses=1] + br i1 %36, label %37, label %40 + +; <label>:37 ; preds = %31 + %38 = load i8** %p, align 4 ; [#uses=1] + %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=1] + store i8* %39, i8** %p, align 4 + br label %40 + +; <label>:40 ; preds = %37, %31 + %41 = load i8** %p, align 4 ; [#uses=1] + %42 = load i8* %41 ; [#uses=1] + %43 = zext i8 %42 to i32 ; [#uses=1] + %44 = call i32 @isdigit(i32 %43) nounwind ; [#uses=1] + %45 = icmp ne i32 %44, 0 ; [#uses=1] + br i1 %45, label %46, label %49 + +; <label>:46 ; preds = %40 + %47 = load i8** %p, align 4 ; [#uses=1] + %48 = getelementptr inbounds i8* %47, i32 1 ; [#uses=1] + store i8* %48, i8** %p, align 4 + br label %49 + +; <label>:49 ; preds = %46, %40 + %50 = load i8** %p, align 4 ; [#uses=1] + %51 = load i8* %50 ; [#uses=1] + %52 = sext i8 %51 to i32 ; [#uses=1] + %53 = icmp eq i32 %52, 46 ; [#uses=1] + br i1 %53, label %54, label %75 + +; <label>:54 ; preds = %49 + %55 = load i8** %p, align 4 ; [#uses=1] + %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] + store i8* %56, i8** %p, align 4 + %57 = load i8** %p, align 4 ; [#uses=1] + %58 = load i8* %57 ; [#uses=1] + %59 = zext i8 %58 to i32 ; [#uses=1] + %60 = call i32 @isdigit(i32 %59) nounwind ; [#uses=1] + %61 = icmp ne i32 %60, 0 ; [#uses=1] + br i1 %61, label %62, label %65 + +; <label>:62 ; preds = %54 + %63 = load i8** %p, align 4 ; [#uses=1] + %64 = getelementptr inbounds i8* %63, i32 1 ; [#uses=1] + store i8* %64, i8** %p, align 4 + br label %65 + +; <label>:65 ; preds = %62, %54 + %66 = load i8** %p, align 4 ; [#uses=1] + %67 = load i8* %66 ; [#uses=1] + %68 = zext i8 %67 to i32 ; [#uses=1] + %69 = call i32 @isdigit(i32 %68) nounwind ; [#uses=1] + %70 = icmp ne i32 %69, 0 ; [#uses=1] + br i1 %70, label %71, label %74 + +; <label>:71 ; preds = %65 + %72 = load i8** %p, align 4 ; [#uses=1] + %73 = getelementptr inbounds i8* %72, i32 1 ; [#uses=1] + store i8* %73, i8** %p, align 4 + br label %74 + +; <label>:74 ; preds = %71, %65 + br label %75 + +; <label>:75 ; preds = %74, %49 + %76 = load i8** %p, align 4 ; [#uses=1] + %77 = load i8* %76 ; [#uses=1] + %78 = zext i8 %77 to i32 ; [#uses=1] + %79 = call i32 @isdigit(i32 %78) nounwind ; [#uses=1] + %80 = icmp ne i32 %79, 0 ; [#uses=1] + br i1 %80, label %81, label %84 + +; <label>:81 ; preds = %75 + %82 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %83 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %82, i8* getelementptr inbounds ([45 x i8]* @.str36534, i32 0, i32 0)) ; [#uses=0] + br label %84 + +; <label>:84 ; preds = %81, %75 + %85 = load i8** %3, align 4 ; [#uses=2] + %86 = getelementptr inbounds i8* %85, i32 1 ; [#uses=1] + store i8* %86, i8** %3, align 4 + store i8 37, i8* %85 + %87 = load i8** %3, align 4 ; [#uses=1] + %88 = load i8** %2, align 4 ; [#uses=1] + %89 = load i8** %p, align 4 ; [#uses=1] + %90 = load i8** %2, align 4 ; [#uses=1] + %91 = ptrtoint i8* %89 to i32 ; [#uses=1] + %92 = ptrtoint i8* %90 to i32 ; [#uses=1] + %93 = sub i32 %91, %92 ; [#uses=1] + %94 = add nsw i32 %93, 1 ; [#uses=1] + %95 = call i8* @strncpy(i8* %87, i8* %88, i32 %94) ; [#uses=0] + %96 = load i8** %p, align 4 ; [#uses=1] + %97 = load i8** %2, align 4 ; [#uses=1] + %98 = ptrtoint i8* %96 to i32 ; [#uses=1] + %99 = ptrtoint i8* %97 to i32 ; [#uses=1] + %100 = sub i32 %98, %99 ; [#uses=1] + %101 = add nsw i32 %100, 1 ; [#uses=1] + %102 = load i8** %3, align 4 ; [#uses=1] + %103 = getelementptr inbounds i8* %102, i32 %101 ; [#uses=1] + store i8* %103, i8** %3, align 4 + %104 = load i8** %3, align 4 ; [#uses=1] + store i8 0, i8* %104 + %105 = load i8** %p, align 4 ; [#uses=1] + ret i8* %105 +} + +; [#uses=2] +define internal void @_Z9addintlenPc(i8* %form) nounwind { + %1 = alloca i8*, align 4 ; [#uses=6] + %l = alloca i32, align 4 ; [#uses=5] + %spec = alloca i8, align 1 ; [#uses=2] + store i8* %form, i8** %1, align 4 + %2 = load i8** %1, align 4 ; [#uses=1] + %3 = call i32 @strlen(i8* %2) ; [#uses=1] + store i32 %3, i32* %l, align 4 + %4 = load i32* %l, align 4 ; [#uses=1] + %5 = sub i32 %4, 1 ; [#uses=1] + %6 = load i8** %1, align 4 ; [#uses=1] + %7 = getelementptr inbounds i8* %6, i32 %5 ; [#uses=1] + %8 = load i8* %7 ; [#uses=1] + store i8 %8, i8* %spec, align 1 + %9 = load i8** %1, align 4 ; [#uses=1] + %10 = load i32* %l, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %9, i32 %10 ; [#uses=1] + %12 = getelementptr inbounds i8* %11, i32 -1 ; [#uses=1] + %13 = call i8* @strcpy(i8* %12, i8* getelementptr inbounds ([2 x i8]* @.str33531, i32 0, i32 0)) ; [#uses=0] + %14 = load i8* %spec, align 1 ; [#uses=1] + %15 = load i32* %l, align 4 ; [#uses=1] + %16 = add i32 %15, 2 ; [#uses=1] + %17 = sub i32 %16, 2 ; [#uses=1] + %18 = load i8** %1, align 4 ; [#uses=1] + %19 = getelementptr inbounds i8* %18, i32 %17 ; [#uses=1] + store i8 %14, i8* %19 + %20 = load i32* %l, align 4 ; [#uses=1] + %21 = add i32 %20, 2 ; [#uses=1] + %22 = sub i32 %21, 1 ; [#uses=1] + %23 = load i8** %1, align 4 ; [#uses=1] + %24 = getelementptr inbounds i8* %23, i32 %22 ; [#uses=1] + store i8 0, i8* %24 + ret void +} + +; [#uses=1] +define internal void @_Z9addquotedP9lua_StateP11luaL_Bufferi(%struct.lua_State* %L, %struct.luaL_Buffer* %b, i32 %arg) { +; <label>:0 + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca %struct.luaL_Buffer*, align 4 ; [#uses=23] + %3 = alloca i32, align 4 ; [#uses=2] + %l = alloca i32, align 4 ; [#uses=3] + %s = alloca i8*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.luaL_Buffer* %b, %struct.luaL_Buffer** %2, align 4 + store i32 %arg, i32* %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = load i32* %3, align 4 ; [#uses=1] + %6 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %4, i32 %5, i32* %l) ; [#uses=1] + store i8* %6, i8** %s, align 4 + %7 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %8 = getelementptr inbounds %struct.luaL_Buffer* %7, i32 0, i32 0 ; [#uses=1] + %9 = load i8** %8, align 4 ; [#uses=1] + %10 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %11 = getelementptr inbounds %struct.luaL_Buffer* %10, i32 0, i32 3 ; [#uses=1] + %12 = getelementptr inbounds [8192 x i8]* %11, i32 0, i32 0 ; [#uses=1] + %13 = getelementptr inbounds i8* %12, i32 8192 ; [#uses=1] + %14 = icmp ult i8* %9, %13 ; [#uses=1] + br i1 %14, label %19, label %15 + +; <label>:15 ; preds = %0 + %16 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %17 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %16) ; [#uses=1] + %18 = icmp ne i8* %17, null ; [#uses=1] + br label %19 + +; <label>:19 ; preds = %15, %0 + %20 = phi i1 [ true, %0 ], [ %18, %15 ] ; [#uses=0] + %21 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %22 = getelementptr inbounds %struct.luaL_Buffer* %21, i32 0, i32 0 ; [#uses=2] + %23 = load i8** %22, align 4 ; [#uses=2] + %24 = getelementptr inbounds i8* %23, i32 1 ; [#uses=1] + store i8* %24, i8** %22, align 4 + store i8 34, i8* %23 + br label %25 + +; <label>:25 ; preds = %97, %19 + %26 = load i32* %l, align 4 ; [#uses=2] + %27 = add i32 %26, -1 ; [#uses=1] + store i32 %27, i32* %l, align 4 + %28 = icmp ne i32 %26, 0 ; [#uses=1] + br i1 %28, label %29, label %100 + +; <label>:29 ; preds = %25 + %30 = load i8** %s, align 4 ; [#uses=1] + %31 = load i8* %30 ; [#uses=1] + %32 = sext i8 %31 to i32 ; [#uses=1] + switch i32 %32, label %76 [ + i32 34, label %33 + i32 92, label %33 + i32 10, label %33 + i32 13, label %72 + i32 0, label %74 + ] + +; <label>:33 ; preds = %29, %29, %29 + %34 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %35 = getelementptr inbounds %struct.luaL_Buffer* %34, i32 0, i32 0 ; [#uses=1] + %36 = load i8** %35, align 4 ; [#uses=1] + %37 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %38 = getelementptr inbounds %struct.luaL_Buffer* %37, i32 0, i32 3 ; [#uses=1] + %39 = getelementptr inbounds [8192 x i8]* %38, i32 0, i32 0 ; [#uses=1] + %40 = getelementptr inbounds i8* %39, i32 8192 ; [#uses=1] + %41 = icmp ult i8* %36, %40 ; [#uses=1] + br i1 %41, label %46, label %42 + +; <label>:42 ; preds = %33 + %43 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %44 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %43) ; [#uses=1] + %45 = icmp ne i8* %44, null ; [#uses=1] + br label %46 + +; <label>:46 ; preds = %42, %33 + %47 = phi i1 [ true, %33 ], [ %45, %42 ] ; [#uses=0] + %48 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %49 = getelementptr inbounds %struct.luaL_Buffer* %48, i32 0, i32 0 ; [#uses=2] + %50 = load i8** %49, align 4 ; [#uses=2] + %51 = getelementptr inbounds i8* %50, i32 1 ; [#uses=1] + store i8* %51, i8** %49, align 4 + store i8 92, i8* %50 + %52 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %53 = getelementptr inbounds %struct.luaL_Buffer* %52, i32 0, i32 0 ; [#uses=1] + %54 = load i8** %53, align 4 ; [#uses=1] + %55 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %56 = getelementptr inbounds %struct.luaL_Buffer* %55, i32 0, i32 3 ; [#uses=1] + %57 = getelementptr inbounds [8192 x i8]* %56, i32 0, i32 0 ; [#uses=1] + %58 = getelementptr inbounds i8* %57, i32 8192 ; [#uses=1] + %59 = icmp ult i8* %54, %58 ; [#uses=1] + br i1 %59, label %64, label %60 + +; <label>:60 ; preds = %46 + %61 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %62 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %61) ; [#uses=1] + %63 = icmp ne i8* %62, null ; [#uses=1] + br label %64 + +; <label>:64 ; preds = %60, %46 + %65 = phi i1 [ true, %46 ], [ %63, %60 ] ; [#uses=0] + %66 = load i8** %s, align 4 ; [#uses=1] + %67 = load i8* %66 ; [#uses=1] + %68 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %69 = getelementptr inbounds %struct.luaL_Buffer* %68, i32 0, i32 0 ; [#uses=2] + %70 = load i8** %69, align 4 ; [#uses=2] + %71 = getelementptr inbounds i8* %70, i32 1 ; [#uses=1] + store i8* %71, i8** %69, align 4 + store i8 %67, i8* %70 + br label %97 + +; <label>:72 ; preds = %29 + %73 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %73, i8* getelementptr inbounds ([3 x i8]* @.str31529, i32 0, i32 0), i32 2) + br label %97 + +; <label>:74 ; preds = %29 + %75 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %75, i8* getelementptr inbounds ([5 x i8]* @.str32530, i32 0, i32 0), i32 4) + br label %97 + +; <label>:76 ; preds = %29 + %77 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %78 = getelementptr inbounds %struct.luaL_Buffer* %77, i32 0, i32 0 ; [#uses=1] + %79 = load i8** %78, align 4 ; [#uses=1] + %80 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %81 = getelementptr inbounds %struct.luaL_Buffer* %80, i32 0, i32 3 ; [#uses=1] + %82 = getelementptr inbounds [8192 x i8]* %81, i32 0, i32 0 ; [#uses=1] + %83 = getelementptr inbounds i8* %82, i32 8192 ; [#uses=1] + %84 = icmp ult i8* %79, %83 ; [#uses=1] + br i1 %84, label %89, label %85 + +; <label>:85 ; preds = %76 + %86 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %87 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %86) ; [#uses=1] + %88 = icmp ne i8* %87, null ; [#uses=1] + br label %89 + +; <label>:89 ; preds = %85, %76 + %90 = phi i1 [ true, %76 ], [ %88, %85 ] ; [#uses=0] + %91 = load i8** %s, align 4 ; [#uses=1] + %92 = load i8* %91 ; [#uses=1] + %93 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %94 = getelementptr inbounds %struct.luaL_Buffer* %93, i32 0, i32 0 ; [#uses=2] + %95 = load i8** %94, align 4 ; [#uses=2] + %96 = getelementptr inbounds i8* %95, i32 1 ; [#uses=1] + store i8* %96, i8** %94, align 4 + store i8 %92, i8* %95 + br label %97 + +; <label>:97 ; preds = %89, %74, %72, %64 + %98 = load i8** %s, align 4 ; [#uses=1] + %99 = getelementptr inbounds i8* %98, i32 1 ; [#uses=1] + store i8* %99, i8** %s, align 4 + br label %25 + +; <label>:100 ; preds = %25 + %101 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %102 = getelementptr inbounds %struct.luaL_Buffer* %101, i32 0, i32 0 ; [#uses=1] + %103 = load i8** %102, align 4 ; [#uses=1] + %104 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %105 = getelementptr inbounds %struct.luaL_Buffer* %104, i32 0, i32 3 ; [#uses=1] + %106 = getelementptr inbounds [8192 x i8]* %105, i32 0, i32 0 ; [#uses=1] + %107 = getelementptr inbounds i8* %106, i32 8192 ; [#uses=1] + %108 = icmp ult i8* %103, %107 ; [#uses=1] + br i1 %108, label %113, label %109 + +; <label>:109 ; preds = %100 + %110 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %111 = call i8* @_Z15luaL_prepbufferP11luaL_Buffer(%struct.luaL_Buffer* %110) ; [#uses=1] + %112 = icmp ne i8* %111, null ; [#uses=1] + br label %113 + +; <label>:113 ; preds = %109, %100 + %114 = phi i1 [ true, %100 ], [ %112, %109 ] ; [#uses=0] + %115 = load %struct.luaL_Buffer** %2, align 4 ; [#uses=1] + %116 = getelementptr inbounds %struct.luaL_Buffer* %115, i32 0, i32 0 ; [#uses=2] + %117 = load i8** %116, align 4 ; [#uses=2] + %118 = getelementptr inbounds i8* %117, i32 1 ; [#uses=1] + store i8* %118, i8** %116, align 4 + store i8 34, i8* %117 + ret void +} + +; [#uses=1] +define internal i32 @_Z6writerP9lua_StatePKvjPv(%struct.lua_State* %L, i8* %b, i32 %size, i8* %B) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=1] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i32, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %b, i8** %2, align 4 + store i32 %size, i32* %3, align 4 + store i8* %B, i8** %4, align 4 + %5 = load i8** %4, align 4 ; [#uses=1] + %6 = bitcast i8* %5 to %struct.luaL_Buffer* ; [#uses=1] + %7 = load i8** %2, align 4 ; [#uses=1] + %8 = load i32* %3, align 4 ; [#uses=1] + call void @_Z15luaL_addlstringP11luaL_BufferPKcj(%struct.luaL_Buffer* %6, i8* %7, i32 %8) + ret i32 0 +} + +; [#uses=1] +define internal i32 @_Z10ll_loadlibP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %path = alloca i8*, align 4 ; [#uses=2] + %init = alloca i8*, align 4 ; [#uses=2] + %stat = alloca i32, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %path, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %5, i32 2, i32* null) ; [#uses=1] + store i8* %6, i8** %init, align 4 + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = load i8** %path, align 4 ; [#uses=1] + %9 = load i8** %init, align 4 ; [#uses=1] + %10 = call i32 @_Z11ll_loadfuncP9lua_StatePKcS2_(%struct.lua_State* %7, i8* %8, i8* %9) ; [#uses=1] + store i32 %10, i32* %stat, align 4 + %11 = load i32* %stat, align 4 ; [#uses=1] + %12 = icmp eq i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %14 + +; <label>:13 ; preds = %0 + store i32 1, i32* %1 + br label %24 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z11lua_pushnilP9lua_State(%struct.lua_State* %15) + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_insertP9lua_Statei(%struct.lua_State* %16, i32 -2) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i32* %stat, align 4 ; [#uses=1] + %19 = icmp eq i32 %18, 1 ; [#uses=1] + br i1 %19, label %20, label %21 + +; <label>:20 ; preds = %14 + br label %22 + +; <label>:21 ; preds = %14 + br label %22 + +; <label>:22 ; preds = %21, %20 + %23 = phi i8* [ getelementptr inbounds ([7 x i8]* @.str50588, i32 0, i32 0), %20 ], [ getelementptr inbounds ([5 x i8]* @.str51589, i32 0, i32 0), %21 ] ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %17, i8* %23) + store i32 3, i32* %1 + br label %24 + +; <label>:24 ; preds = %22, %13 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=1] +define internal i32 @_Z9ll_seeallP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z14luaL_checktypeP9lua_Stateii(%struct.lua_State* %2, i32 1, i32 5) + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = call i32 @_Z16lua_getmetatableP9lua_Statei(%struct.lua_State* %3, i32 1) ; [#uses=1] + %5 = icmp ne i32 %4, 0 ; [#uses=1] + br i1 %5, label %11, label %6 + +; <label>:6 ; preds = %0 + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %7, i32 0, i32 1) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %8, i32 -1) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %9, i32 1) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %6, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %12, i32 -10002) + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %13, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str49587, i32 0, i32 0)) + ret i32 0 +} + +; [#uses=1] +define internal i32 @_Z9ll_moduleP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=19] + %modname = alloca i8*, align 4 ; [#uses=6] + %loaded = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %modname, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = call i32 @_Z10lua_gettopP9lua_State(%struct.lua_State* %5) ; [#uses=1] + %7 = add nsw i32 %6, 1 ; [#uses=1] + store i32 %7, i32* %loaded, align 4 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %8, i32 -10000, i8* getelementptr inbounds ([8 x i8]* @.str16554, i32 0, i32 0)) + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = load i32* %loaded, align 4 ; [#uses=1] + %11 = load i8** %modname, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %9, i32 %10, i8* %11) + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %12, i32 -1) ; [#uses=1] + %14 = icmp eq i32 %13, 5 ; [#uses=1] + br i1 %14, label %30, label %15 + +; <label>:15 ; preds = %0 + %16 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %16, i32 -2) + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i8** %modname, align 4 ; [#uses=1] + %19 = call i8* @_Z14luaL_findtableP9lua_StateiPKci(%struct.lua_State* %17, i32 -10002, i8* %18, i32 1) ; [#uses=1] + %20 = icmp ne i8* %19, null ; [#uses=1] + br i1 %20, label %21, label %25 + +; <label>:21 ; preds = %15 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load i8** %modname, align 4 ; [#uses=1] + %24 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %22, i8* getelementptr inbounds ([30 x i8]* @.str43581, i32 0, i32 0), i8* %23) ; [#uses=1] + store i32 %24, i32* %1 + br label %47 + +; <label>:25 ; preds = %15 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %26, i32 -1) + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = load i32* %loaded, align 4 ; [#uses=1] + %29 = load i8** %modname, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %27, i32 %28, i8* %29) + br label %30 + +; <label>:30 ; preds = %25, %0 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %31, i32 -1, i8* getelementptr inbounds ([6 x i8]* @.str44582, i32 0, i32 0)) + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %32, i32 -1) ; [#uses=1] + %34 = icmp eq i32 %33, 0 ; [#uses=1] + br i1 %34, label %37, label %35 + +; <label>:35 ; preds = %30 + %36 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %36, i32 -2) + br label %41 + +; <label>:37 ; preds = %30 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %38, i32 -2) + %39 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %40 = load i8** %modname, align 4 ; [#uses=1] + call void @_Z7modinitP9lua_StatePKc(%struct.lua_State* %39, i8* %40) + br label %41 + +; <label>:41 ; preds = %37, %35 + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %42, i32 -1) + %43 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z7setfenvP9lua_State(%struct.lua_State* %43) + %44 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %45 = load i32* %loaded, align 4 ; [#uses=1] + %46 = sub nsw i32 %45, 1 ; [#uses=1] + call void @_Z9dooptionsP9lua_Statei(%struct.lua_State* %44, i32 %46) + store i32 0, i32* %1 + br label %47 + +; <label>:47 ; preds = %41, %21 + %48 = load i32* %1 ; [#uses=1] + ret i32 %48 +} + +; [#uses=1] +define internal i32 @_Z10ll_requireP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=33] + %name = alloca i8*, align 4 ; [#uses=10] + %i = alloca i32, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %name, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %5, i32 1) + %6 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %6, i32 -10000, i8* getelementptr inbounds ([8 x i8]* @.str16554, i32 0, i32 0)) + %7 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %8 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %7, i32 2, i8* %8) + %9 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %10 = call i32 @_Z13lua_tobooleanP9lua_Statei(%struct.lua_State* %9, i32 -1) ; [#uses=1] + %11 = icmp ne i32 %10, 0 ; [#uses=1] + br i1 %11, label %12, label %21 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %14 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %13, i32 -1) ; [#uses=1] + %15 = icmp eq i8* %14, bitcast (i32* @_ZL9sentinel_ to i8*) ; [#uses=1] + br i1 %15, label %16, label %20 + +; <label>:16 ; preds = %12 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i8** %name, align 4 ; [#uses=1] + %19 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %17, i8* getelementptr inbounds ([43 x i8]* @.str40578, i32 0, i32 0), i8* %18) ; [#uses=0] + br label %20 + +; <label>:20 ; preds = %16, %12 + store i32 1, i32* %1 + br label %89 + +; <label>:21 ; preds = %0 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %22, i32 -10001, i8* getelementptr inbounds ([8 x i8]* @.str7545, i32 0, i32 0)) + %23 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %24 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %23, i32 -1) ; [#uses=1] + %25 = icmp eq i32 %24, 5 ; [#uses=1] + br i1 %25, label %29, label %26 + +; <label>:26 ; preds = %21 + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %27, i8* getelementptr inbounds ([34 x i8]* @.str41579, i32 0, i32 0)) ; [#uses=0] + br label %29 + +; <label>:29 ; preds = %26, %21 + %30 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %30, i8* getelementptr inbounds ([1 x i8]* @.str33571, i32 0, i32 0), i32 0) + store i32 1, i32* %i, align 4 + br label %31 + +; <label>:31 ; preds = %61, %29 + %32 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %33 = load i32* %i, align 4 ; [#uses=1] + call void @_Z11lua_rawgetiP9lua_Stateii(%struct.lua_State* %32, i32 -2, i32 %33) + %34 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %35 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %34, i32 -1) ; [#uses=1] + %36 = icmp eq i32 %35, 0 ; [#uses=1] + br i1 %36, label %37, label %43 + +; <label>:37 ; preds = %31 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = load i8** %name, align 4 ; [#uses=1] + %40 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %41 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %40, i32 -2, i32* null) ; [#uses=1] + %42 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %38, i8* getelementptr inbounds ([25 x i8]* @.str42580, i32 0, i32 0), i8* %39, i8* %41) ; [#uses=0] + br label %43 + +; <label>:43 ; preds = %37, %31 + %44 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %45 = load i8** %name, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %44, i8* %45) + %46 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %46, i32 1, i32 1) + %47 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %48 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %47, i32 -1) ; [#uses=1] + %49 = icmp eq i32 %48, 6 ; [#uses=1] + br i1 %49, label %50, label %51 + +; <label>:50 ; preds = %43 + br label %64 + +; <label>:51 ; preds = %43 + %52 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %53 = call i32 @_Z12lua_isstringP9lua_Statei(%struct.lua_State* %52, i32 -1) ; [#uses=1] + %54 = icmp ne i32 %53, 0 ; [#uses=1] + br i1 %54, label %55, label %57 + +; <label>:55 ; preds = %51 + %56 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %56, i32 2) + br label %59 + +; <label>:57 ; preds = %51 + %58 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %58, i32 -2) + br label %59 + +; <label>:59 ; preds = %57, %55 + br label %60 + +; <label>:60 ; preds = %59 + br label %61 + +; <label>:61 ; preds = %60 + %62 = load i32* %i, align 4 ; [#uses=1] + %63 = add nsw i32 %62, 1 ; [#uses=1] + store i32 %63, i32* %i, align 4 + br label %31 + +; <label>:64 ; preds = %50 + %65 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z21lua_pushlightuserdataP9lua_StatePv(%struct.lua_State* %65, i8* bitcast (i32* @_ZL9sentinel_ to i8*)) + %66 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %67 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %66, i32 2, i8* %67) + %68 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %69 = load i8** %name, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %68, i8* %69) + %70 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %70, i32 1, i32 1) + %71 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %72 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %71, i32 -1) ; [#uses=1] + %73 = icmp eq i32 %72, 0 ; [#uses=1] + br i1 %73, label %77, label %74 + +; <label>:74 ; preds = %64 + %75 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %76 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %75, i32 2, i8* %76) + br label %77 + +; <label>:77 ; preds = %74, %64 + %78 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %79 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %78, i32 2, i8* %79) + %80 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %81 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %80, i32 -1) ; [#uses=1] + %82 = icmp eq i8* %81, bitcast (i32* @_ZL9sentinel_ to i8*) ; [#uses=1] + br i1 %82, label %83, label %88 + +; <label>:83 ; preds = %77 + %84 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushbooleanP9lua_Statei(%struct.lua_State* %84, i32 1) + %85 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %85, i32 -1) + %86 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %87 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %86, i32 2, i8* %87) + br label %88 + +; <label>:88 ; preds = %83, %77 + store i32 1, i32* %1 + br label %89 + +; <label>:89 ; preds = %88, %20 + %90 = load i32* %1 ; [#uses=1] + ret i32 %90 +} + +; [#uses=1] +define internal i32 @_Z14loader_preloadP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %name = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %2, i32 1, i32* null) ; [#uses=1] + store i8* %3, i8** %name, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %4, i32 -10001, i8* getelementptr inbounds ([8 x i8]* @.str18556, i32 0, i32 0)) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %5, i32 -1) ; [#uses=1] + %7 = icmp eq i32 %6, 5 ; [#uses=1] + br i1 %7, label %11, label %8 + +; <label>:8 ; preds = %0 + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %10 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %9, i8* getelementptr inbounds ([34 x i8]* @.str38576, i32 0, i32 0)) ; [#uses=0] + br label %11 + +; <label>:11 ; preds = %8, %0 + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load i8** %name, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %12, i32 -1, i8* %13) + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %14, i32 -1) ; [#uses=1] + %16 = icmp eq i32 %15, 0 ; [#uses=1] + br i1 %16, label %17, label %21 + +; <label>:17 ; preds = %11 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %name, align 4 ; [#uses=1] + %20 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %18, i8* getelementptr inbounds ([33 x i8]* @.str39577, i32 0, i32 0), i8* %19) ; [#uses=0] + br label %21 + +; <label>:21 ; preds = %17, %11 + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z10loader_LuaP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %filename = alloca i8*, align 4 ; [#uses=4] + %name = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %name, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i8** %name, align 4 ; [#uses=1] + %7 = call i8* @_Z8findfileP9lua_StatePKcS2_(%struct.lua_State* %5, i8* %6, i8* getelementptr inbounds ([5 x i8]* @.str8546, i32 0, i32 0)) ; [#uses=1] + store i8* %7, i8** %filename, align 4 + %8 = load i8** %filename, align 4 ; [#uses=1] + %9 = icmp eq i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + store i32 1, i32* %1 + br label %20 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load i8** %filename, align 4 ; [#uses=1] + %14 = call i32 @_Z13luaL_loadfileP9lua_StatePKc(%struct.lua_State* %12, i8* %13) ; [#uses=1] + %15 = icmp ne i32 %14, 0 ; [#uses=1] + br i1 %15, label %16, label %19 + +; <label>:16 ; preds = %11 + %17 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %18 = load i8** %filename, align 4 ; [#uses=1] + call void @_Z9loaderrorP9lua_StatePKc(%struct.lua_State* %17, i8* %18) + br label %19 + +; <label>:19 ; preds = %16, %11 + store i32 1, i32* %1 + br label %20 + +; <label>:20 ; preds = %19, %10 + %21 = load i32* %1 ; [#uses=1] + ret i32 %21 +} + +; [#uses=1] +define internal i32 @_Z8loader_CP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %funcname = alloca i8*, align 4 ; [#uses=2] + %name = alloca i8*, align 4 ; [#uses=3] + %filename = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %name, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i8** %name, align 4 ; [#uses=1] + %7 = call i8* @_Z8findfileP9lua_StatePKcS2_(%struct.lua_State* %5, i8* %6, i8* getelementptr inbounds ([6 x i8]* @.str11549, i32 0, i32 0)) ; [#uses=1] + store i8* %7, i8** %filename, align 4 + %8 = load i8** %filename, align 4 ; [#uses=1] + %9 = icmp eq i8* %8, null ; [#uses=1] + br i1 %9, label %10, label %11 + +; <label>:10 ; preds = %0 + store i32 1, i32* %1 + br label %24 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load i8** %name, align 4 ; [#uses=1] + %14 = call i8* @_Z10mkfuncnameP9lua_StatePKc(%struct.lua_State* %12, i8* %13) ; [#uses=1] + store i8* %14, i8** %funcname, align 4 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i8** %filename, align 4 ; [#uses=1] + %17 = load i8** %funcname, align 4 ; [#uses=1] + %18 = call i32 @_Z11ll_loadfuncP9lua_StatePKcS2_(%struct.lua_State* %15, i8* %16, i8* %17) ; [#uses=1] + %19 = icmp ne i32 %18, 0 ; [#uses=1] + br i1 %19, label %20, label %23 + +; <label>:20 ; preds = %11 + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = load i8** %filename, align 4 ; [#uses=1] + call void @_Z9loaderrorP9lua_StatePKc(%struct.lua_State* %21, i8* %22) + br label %23 + +; <label>:23 ; preds = %20, %11 + store i32 1, i32* %1 + br label %24 + +; <label>:24 ; preds = %23, %10 + %25 = load i32* %1 ; [#uses=1] + ret i32 %25 +} + +; [#uses=1] +define internal i32 @_Z12loader_CrootP9lua_State(%struct.lua_State* %L) { + %1 = alloca i32, align 4 ; [#uses=5] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=9] + %funcname = alloca i8*, align 4 ; [#uses=2] + %filename = alloca i8*, align 4 ; [#uses=5] + %name = alloca i8*, align 4 ; [#uses=6] + %p = alloca i8*, align 4 ; [#uses=3] + %stat = alloca i32, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + %3 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %4 = call i8* @_Z17luaL_checklstringP9lua_StateiPj(%struct.lua_State* %3, i32 1, i32* null) ; [#uses=1] + store i8* %4, i8** %name, align 4 + %5 = load i8** %name, align 4 ; [#uses=1] + %6 = call i8* @strchr(i8* %5, i32 46) ; [#uses=1] + store i8* %6, i8** %p, align 4 + %7 = load i8** %p, align 4 ; [#uses=1] + %8 = icmp eq i8* %7, null ; [#uses=1] + br i1 %8, label %9, label %10 + +; <label>:9 ; preds = %0 + store i32 0, i32* %1 + br label %46 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %12 = load i8** %name, align 4 ; [#uses=1] + %13 = load i8** %p, align 4 ; [#uses=1] + %14 = load i8** %name, align 4 ; [#uses=1] + %15 = ptrtoint i8* %13 to i32 ; [#uses=1] + %16 = ptrtoint i8* %14 to i32 ; [#uses=1] + %17 = sub i32 %15, %16 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %11, i8* %12, i32 %17) + %18 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %20 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %19, i32 -1, i32* null) ; [#uses=1] + %21 = call i8* @_Z8findfileP9lua_StatePKcS2_(%struct.lua_State* %18, i8* %20, i8* getelementptr inbounds ([6 x i8]* @.str11549, i32 0, i32 0)) ; [#uses=1] + store i8* %21, i8** %filename, align 4 + %22 = load i8** %filename, align 4 ; [#uses=1] + %23 = icmp eq i8* %22, null ; [#uses=1] + br i1 %23, label %24, label %25 + +; <label>:24 ; preds = %10 + store i32 1, i32* %1 + br label %46 + +; <label>:25 ; preds = %10 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load i8** %name, align 4 ; [#uses=1] + %28 = call i8* @_Z10mkfuncnameP9lua_StatePKc(%struct.lua_State* %26, i8* %27) ; [#uses=1] + store i8* %28, i8** %funcname, align 4 + %29 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %30 = load i8** %filename, align 4 ; [#uses=1] + %31 = load i8** %funcname, align 4 ; [#uses=1] + %32 = call i32 @_Z11ll_loadfuncP9lua_StatePKcS2_(%struct.lua_State* %29, i8* %30, i8* %31) ; [#uses=2] + store i32 %32, i32* %stat, align 4 + %33 = icmp ne i32 %32, 0 ; [#uses=1] + br i1 %33, label %34, label %45 + +; <label>:34 ; preds = %25 + %35 = load i32* %stat, align 4 ; [#uses=1] + %36 = icmp ne i32 %35, 2 ; [#uses=1] + br i1 %36, label %37, label %40 + +; <label>:37 ; preds = %34 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = load i8** %filename, align 4 ; [#uses=1] + call void @_Z9loaderrorP9lua_StatePKc(%struct.lua_State* %38, i8* %39) + br label %40 + +; <label>:40 ; preds = %37, %34 + %41 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %42 = load i8** %name, align 4 ; [#uses=1] + %43 = load i8** %filename, align 4 ; [#uses=1] + %44 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %41, i8* getelementptr inbounds ([30 x i8]* @.str22560, i32 0, i32 0), i8* %42, i8* %43) ; [#uses=0] + store i32 1, i32* %1 + br label %46 + +; <label>:45 ; preds = %25 + store i32 1, i32* %1 + br label %46 + +; <label>:46 ; preds = %45, %40, %24, %9 + %47 = load i32* %1 ; [#uses=1] + ret i32 %47 +} + +; [#uses=1] +define i32 @_Z15luaopen_packageP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=22] + %i = alloca i32, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z17luaL_newmetatableP9lua_StatePKc(%struct.lua_State* %2, i8* getelementptr inbounds ([9 x i8]* @.str4542, i32 0, i32 0)) ; [#uses=0] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %4, i32 (%struct.lua_State*)* @_Z4gctmP9lua_State, i32 0) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %5, i32 -2, i8* getelementptr inbounds ([5 x i8]* @.str5543, i32 0, i32 0)) + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %6, i8* getelementptr inbounds ([8 x i8]* @.str6544, i32 0, i32 0), %struct.luaL_Reg* getelementptr inbounds ([3 x %struct.luaL_Reg]* @_ZL8pk_funcs, i32 0, i32 0)) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %7, i32 -1) + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z11lua_replaceP9lua_Statei(%struct.lua_State* %8, i32 -10001) + %9 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %9, i32 0, i32 4) + store i32 0, i32* %i, align 4 + br label %10 + +; <label>:10 ; preds = %23, %0 + %11 = load i32* %i, align 4 ; [#uses=1] + %12 = getelementptr inbounds [5 x i32 (%struct.lua_State*)*]* @_ZL7loaders, i32 0, i32 %11 ; [#uses=1] + %13 = load i32 (%struct.lua_State*)** %12 ; [#uses=1] + %14 = icmp ne i32 (%struct.lua_State*)* %13, null ; [#uses=1] + br i1 %14, label %15, label %26 + +; <label>:15 ; preds = %10 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i32* %i, align 4 ; [#uses=1] + %18 = getelementptr inbounds [5 x i32 (%struct.lua_State*)*]* @_ZL7loaders, i32 0, i32 %17 ; [#uses=1] + %19 = load i32 (%struct.lua_State*)** %18 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %16, i32 (%struct.lua_State*)* %19, i32 0) + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %21 = load i32* %i, align 4 ; [#uses=1] + %22 = add nsw i32 %21, 1 ; [#uses=1] + call void @_Z11lua_rawsetiP9lua_Stateii(%struct.lua_State* %20, i32 -2, i32 %22) + br label %23 + +; <label>:23 ; preds = %15 + %24 = load i32* %i, align 4 ; [#uses=1] + %25 = add nsw i32 %24, 1 ; [#uses=1] + store i32 %25, i32* %i, align 4 + br label %10 + +; <label>:26 ; preds = %10 + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %27, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str7545, i32 0, i32 0)) + %28 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7setpathP9lua_StatePKcS2_S2_(%struct.lua_State* %28, i8* getelementptr inbounds ([5 x i8]* @.str8546, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str9547, i32 0, i32 0), i8* getelementptr inbounds ([138 x i8]* @.str10548, i32 0, i32 0)) + %29 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z7setpathP9lua_StatePKcS2_S2_(%struct.lua_State* %29, i8* getelementptr inbounds ([6 x i8]* @.str11549, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str12550, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8]* @.str13551, i32 0, i32 0)) + %30 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %30, i8* getelementptr inbounds ([10 x i8]* @.str14552, i32 0, i32 0), i32 9) + %31 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %31, i32 -2, i8* getelementptr inbounds ([7 x i8]* @.str15553, i32 0, i32 0)) + %32 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %33 = call i8* @_Z14luaL_findtableP9lua_StateiPKci(%struct.lua_State* %32, i32 -10000, i8* getelementptr inbounds ([8 x i8]* @.str16554, i32 0, i32 0), i32 2) ; [#uses=0] + %34 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %34, i32 -2, i8* getelementptr inbounds ([7 x i8]* @.str17555, i32 0, i32 0)) + %35 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_createtableP9lua_Stateii(%struct.lua_State* %35, i32 0, i32 0) + %36 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %36, i32 -2, i8* getelementptr inbounds ([8 x i8]* @.str18556, i32 0, i32 0)) + %37 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %37, i32 -10002) + %38 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13luaL_registerP9lua_StatePKcPK8luaL_Reg(%struct.lua_State* %38, i8* null, %struct.luaL_Reg* getelementptr inbounds ([3 x %struct.luaL_Reg]* @_ZL8ll_funcs, i32 0, i32 0)) + %39 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %39, i32 -2) + ret i32 1 +} + +; [#uses=1] +define internal i32 @_Z4gctmP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %lib = alloca i8**, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i8* @_Z15luaL_checkudataP9lua_StateiPKc(%struct.lua_State* %2, i32 1, i8* getelementptr inbounds ([9 x i8]* @.str4542, i32 0, i32 0)) ; [#uses=1] + %4 = bitcast i8* %3 to i8** ; [#uses=1] + store i8** %4, i8*** %lib, align 4 + %5 = load i8*** %lib, align 4 ; [#uses=1] + %6 = load i8** %5 ; [#uses=1] + %7 = icmp ne i8* %6, null ; [#uses=1] + br i1 %7, label %8, label %11 + +; <label>:8 ; preds = %0 + %9 = load i8*** %lib, align 4 ; [#uses=1] + %10 = load i8** %9 ; [#uses=1] + call void @_Z12ll_unloadlibPv(i8* %10) + br label %11 + +; <label>:11 ; preds = %8, %0 + %12 = load i8*** %lib, align 4 ; [#uses=1] + store i8* null, i8** %12 + ret i32 0 +} + +; [#uses=2] +define internal void @_Z7setpathP9lua_StatePKcS2_S2_(%struct.lua_State* %L, i8* %fieldname, i8* %envname, i8* %def) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=6] + %2 = alloca i8*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=2] + %4 = alloca i8*, align 4 ; [#uses=3] + %path = alloca i8*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %fieldname, i8** %2, align 4 + store i8* %envname, i8** %3, align 4 + store i8* %def, i8** %4, align 4 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = call i8* @getenv(i8* %5) nounwind ; [#uses=1] + store i8* %6, i8** %path, align 4 + %7 = load i8** %path, align 4 ; [#uses=1] + %8 = icmp eq i8* %7, null ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = load i8** %4, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %10, i8* %11) + br label %21 + +; <label>:12 ; preds = %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load i8** %path, align 4 ; [#uses=1] + %15 = call i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %13, i8* %14, i8* getelementptr inbounds ([3 x i8]* @.str19557, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str20558, i32 0, i32 0)) ; [#uses=1] + store i8* %15, i8** %path, align 4 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i8** %path, align 4 ; [#uses=1] + %18 = load i8** %4, align 4 ; [#uses=1] + %19 = call i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %16, i8* %17, i8* getelementptr inbounds ([2 x i8]* @.str21559, i32 0, i32 0), i8* %18) ; [#uses=0] + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %20, i32 -2) + br label %21 + +; <label>:21 ; preds = %12, %9 + %22 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %23 = load i8** %2, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %22, i32 -2, i8* %23) + ret void +} + +; [#uses=1] +define internal void @_Z12ll_unloadlibPv(i8* %lib) nounwind { + %1 = alloca i8*, align 4 ; [#uses=1] + store i8* %lib, i8** %1, align 4 + ret void +} + +; [#uses=3] +define internal i8* @_Z8findfileP9lua_StatePKcS2_(%struct.lua_State* %L, i8* %name, i8* %pname) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=13] + %3 = alloca i8*, align 4 ; [#uses=4] + %4 = alloca i8*, align 4 ; [#uses=3] + %path = alloca i8*, align 4 ; [#uses=4] + %filename = alloca i8*, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %name, i8** %3, align 4 + store i8* %pname, i8** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i8** %3, align 4 ; [#uses=1] + %7 = call i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %5, i8* %6, i8* getelementptr inbounds ([2 x i8]* @.str28566, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str31569, i32 0, i32 0)) ; [#uses=1] + store i8* %7, i8** %3, align 4 + %8 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %9 = load i8** %4, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %8, i32 -10001, i8* %9) + %10 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %11 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %10, i32 -1, i32* null) ; [#uses=1] + store i8* %11, i8** %path, align 4 + %12 = load i8** %path, align 4 ; [#uses=1] + %13 = icmp eq i8* %12, null ; [#uses=1] + br i1 %13, label %14, label %18 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %16 = load i8** %4, align 4 ; [#uses=1] + %17 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %15, i8* getelementptr inbounds ([30 x i8]* @.str32570, i32 0, i32 0), i8* %16) ; [#uses=0] + br label %18 + +; <label>:18 ; preds = %14, %0 + %19 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %19, i8* getelementptr inbounds ([1 x i8]* @.str33571, i32 0, i32 0), i32 0) + br label %20 + +; <label>:20 ; preds = %37, %18 + %21 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %22 = load i8** %path, align 4 ; [#uses=1] + %23 = call i8* @_Z16pushnexttemplateP9lua_StatePKc(%struct.lua_State* %21, i8* %22) ; [#uses=2] + store i8* %23, i8** %path, align 4 + %24 = icmp ne i8* %23, null ; [#uses=1] + br i1 %24, label %25, label %43 + +; <label>:25 ; preds = %20 + %26 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %27 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %28 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %27, i32 -1, i32* null) ; [#uses=1] + %29 = load i8** %3, align 4 ; [#uses=1] + %30 = call i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %26, i8* %28, i8* getelementptr inbounds ([2 x i8]* @.str34572, i32 0, i32 0), i8* %29) ; [#uses=1] + store i8* %30, i8** %filename, align 4 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %31, i32 -2) + %32 = load i8** %filename, align 4 ; [#uses=1] + %33 = call i32 @_Z8readablePKc(i8* %32) ; [#uses=1] + %34 = icmp ne i32 %33, 0 ; [#uses=1] + br i1 %34, label %35, label %37 + +; <label>:35 ; preds = %25 + %36 = load i8** %filename, align 4 ; [#uses=1] + store i8* %36, i8** %1 + br label %44 + +; <label>:37 ; preds = %25 + %38 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %39 = load i8** %filename, align 4 ; [#uses=1] + %40 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %38, i8* getelementptr inbounds ([15 x i8]* @.str35573, i32 0, i32 0), i8* %39) ; [#uses=0] + %41 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %41, i32 -2) + %42 = load %struct.lua_State** %2, align 4 ; [#uses=1] + call void @_Z10lua_concatP9lua_Statei(%struct.lua_State* %42, i32 2) + br label %20 + +; <label>:43 ; preds = %20 + store i8* null, i8** %1 + br label %44 + +; <label>:44 ; preds = %43, %35 + %45 = load i8** %1 ; [#uses=1] + ret i8* %45 +} + +; [#uses=2] +define internal i8* @_Z10mkfuncnameP9lua_StatePKc(%struct.lua_State* %L, i8* %modname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=4] + %funcname = alloca i8*, align 4 ; [#uses=4] + %mark = alloca i8*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %modname, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = load i8* getelementptr inbounds ([2 x i8]* @.str27565, i32 0, i32 0) ; [#uses=1] + %5 = sext i8 %4 to i32 ; [#uses=1] + %6 = call i8* @strchr(i8* %3, i32 %5) ; [#uses=1] + store i8* %6, i8** %mark, align 4 + %7 = load i8** %mark, align 4 ; [#uses=1] + %8 = icmp ne i8* %7, null ; [#uses=1] + br i1 %8, label %9, label %12 + +; <label>:9 ; preds = %0 + %10 = load i8** %mark, align 4 ; [#uses=1] + %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] + store i8* %11, i8** %2, align 4 + br label %12 + +; <label>:12 ; preds = %9, %0 + %13 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %14 = load i8** %2, align 4 ; [#uses=1] + %15 = call i8* @_Z9luaL_gsubP9lua_StatePKcS2_S2_(%struct.lua_State* %13, i8* %14, i8* getelementptr inbounds ([2 x i8]* @.str28566, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str29567, i32 0, i32 0)) ; [#uses=1] + store i8* %15, i8** %funcname, align 4 + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = load i8** %funcname, align 4 ; [#uses=1] + %18 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %16, i8* getelementptr inbounds ([11 x i8]* @.str30568, i32 0, i32 0), i8* %17) ; [#uses=1] + store i8* %18, i8** %funcname, align 4 + %19 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_removeP9lua_Statei(%struct.lua_State* %19, i32 -2) + %20 = load i8** %funcname, align 4 ; [#uses=1] + ret i8* %20 +} + +; [#uses=3] +define internal i32 @_Z11ll_loadfuncP9lua_StatePKcS2_(%struct.lua_State* %L, i8* %path, i8* %sym) { + %1 = alloca i32, align 4 ; [#uses=4] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=5] + %3 = alloca i8*, align 4 ; [#uses=3] + %4 = alloca i8*, align 4 ; [#uses=2] + %reg = alloca i8**, align 4 ; [#uses=5] + %f = alloca i32 (%struct.lua_State*)*, align 4 ; [#uses=3] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %path, i8** %3, align 4 + store i8* %sym, i8** %4, align 4 + %5 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %6 = load i8** %3, align 4 ; [#uses=1] + %7 = call i8** @_Z11ll_registerP9lua_StatePKc(%struct.lua_State* %5, i8* %6) ; [#uses=1] + store i8** %7, i8*** %reg, align 4 + %8 = load i8*** %reg, align 4 ; [#uses=1] + %9 = load i8** %8 ; [#uses=1] + %10 = icmp eq i8* %9, null ; [#uses=1] + br i1 %10, label %11, label %16 + +; <label>:11 ; preds = %0 + %12 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %13 = load i8** %3, align 4 ; [#uses=1] + %14 = call i8* @_Z7ll_loadP9lua_StatePKc(%struct.lua_State* %12, i8* %13) ; [#uses=1] + %15 = load i8*** %reg, align 4 ; [#uses=1] + store i8* %14, i8** %15 + br label %16 + +; <label>:16 ; preds = %11, %0 + %17 = load i8*** %reg, align 4 ; [#uses=1] + %18 = load i8** %17 ; [#uses=1] + %19 = icmp eq i8* %18, null ; [#uses=1] + br i1 %19, label %20, label %21 + +; <label>:20 ; preds = %16 + store i32 1, i32* %1 + br label %33 + +; <label>:21 ; preds = %16 + %22 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %23 = load i8*** %reg, align 4 ; [#uses=1] + %24 = load i8** %23 ; [#uses=1] + %25 = load i8** %4, align 4 ; [#uses=1] + %26 = call i32 (%struct.lua_State*)* (%struct.lua_State*, i8*, i8*)* @_Z6ll_symP9lua_StatePvPKc(%struct.lua_State* %22, i8* %24, i8* %25) ; [#uses=1] + store i32 (%struct.lua_State*)* %26, i32 (%struct.lua_State*)** %f, align 4 + %27 = load i32 (%struct.lua_State*)** %f, align 4 ; [#uses=1] + %28 = icmp eq i32 (%struct.lua_State*)* %27, null ; [#uses=1] + br i1 %28, label %29, label %30 + +; <label>:29 ; preds = %21 + store i32 2, i32* %1 + br label %33 + +; <label>:30 ; preds = %21 + %31 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %32 = load i32 (%struct.lua_State*)** %f, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %31, i32 (%struct.lua_State*)* %32, i32 0) + store i32 0, i32* %1 + br label %33 + +; <label>:33 ; preds = %30, %29, %20 + %34 = load i32* %1 ; [#uses=1] + ret i32 %34 +} + +; [#uses=3] +define internal void @_Z9loaderrorP9lua_StatePKc(%struct.lua_State* %L, i8* %filename) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i8*, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %filename, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %5 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %4, i32 1, i32* null) ; [#uses=1] + %6 = load i8** %2, align 4 ; [#uses=1] + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i8* @_Z13lua_tolstringP9lua_StateiPj(%struct.lua_State* %7, i32 -1, i32* null) ; [#uses=1] + %9 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %3, i8* getelementptr inbounds ([46 x i8]* @.str23561, i32 0, i32 0), i8* %5, i8* %6, i8* %8) ; [#uses=0] + ret void +} + +; [#uses=1] +define internal i8** @_Z11ll_registerP9lua_StatePKc(%struct.lua_State* %L, i8* %path) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=12] + %2 = alloca i8*, align 4 ; [#uses=3] + %plib = alloca i8**, align 4 ; [#uses=4] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %path, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %4 = load i8** %2, align 4 ; [#uses=1] + %5 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %3, i8* getelementptr inbounds ([5 x i8]* @.str25563, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str26564, i32 0, i32 0), i8* %4) ; [#uses=0] + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_gettableP9lua_Statei(%struct.lua_State* %6, i32 -10000) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %8 = call i32 @_Z8lua_typeP9lua_Statei(%struct.lua_State* %7, i32 -1) ; [#uses=1] + %9 = icmp eq i32 %8, 0 ; [#uses=1] + br i1 %9, label %14, label %10 + +; <label>:10 ; preds = %0 + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %12 = call i8* @_Z14lua_touserdataP9lua_Statei(%struct.lua_State* %11, i32 -1) ; [#uses=1] + %13 = bitcast i8* %12 to i8** ; [#uses=1] + store i8** %13, i8*** %plib, align 4 + br label %28 + +; <label>:14 ; preds = %0 + %15 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %15, i32 -2) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %17 = call i8* @_Z15lua_newuserdataP9lua_Statej(%struct.lua_State* %16, i32 4) ; [#uses=1] + %18 = bitcast i8* %17 to i8** ; [#uses=1] + store i8** %18, i8*** %plib, align 4 + %19 = load i8*** %plib, align 4 ; [#uses=1] + store i8* null, i8** %19 + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_getfieldP9lua_StateiPKc(%struct.lua_State* %20, i32 -10000, i8* getelementptr inbounds ([9 x i8]* @.str4542, i32 0, i32 0)) + %21 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %22 = call i32 @_Z16lua_setmetatableP9lua_Statei(%struct.lua_State* %21, i32 -2) ; [#uses=0] + %23 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %24 = load i8** %2, align 4 ; [#uses=1] + %25 = call i8* (%struct.lua_State*, i8*, ...)* @_Z15lua_pushfstringP9lua_StatePKcz(%struct.lua_State* %23, i8* getelementptr inbounds ([5 x i8]* @.str25563, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str26564, i32 0, i32 0), i8* %24) ; [#uses=0] + %26 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %26, i32 -2) + %27 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_settableP9lua_Statei(%struct.lua_State* %27, i32 -10000) + br label %28 + +; <label>:28 ; preds = %14, %10 + %29 = load i8*** %plib, align 4 ; [#uses=1] + ret i8** %29 +} + +; [#uses=1] +define internal i8* @_Z7ll_loadP9lua_StatePKc(%struct.lua_State* %L, i8* %path) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %path, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %3, i8* getelementptr inbounds ([59 x i8]* @.str24562, i32 0, i32 0), i32 58) + ret i8* null +} + +; [#uses=1] +define internal i32 (%struct.lua_State*)* @_Z6ll_symP9lua_StatePvPKc(%struct.lua_State* %L, i8* %lib, i8* %sym) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %2 = alloca i8*, align 4 ; [#uses=1] + %3 = alloca i8*, align 4 ; [#uses=1] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %lib, i8** %2, align 4 + store i8* %sym, i8** %3, align 4 + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %4, i8* getelementptr inbounds ([59 x i8]* @.str24562, i32 0, i32 0), i32 58) + ret i32 (%struct.lua_State*)* null +} + +; [#uses=1] +define internal i8* @_Z16pushnexttemplateP9lua_StatePKc(%struct.lua_State* %L, i8* %path) { + %1 = alloca i8*, align 4 ; [#uses=3] + %2 = alloca %struct.lua_State*, align 4 ; [#uses=2] + %3 = alloca i8*, align 4 ; [#uses=10] + %l = alloca i8*, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %2, align 4 + store i8* %path, i8** %3, align 4 + br label %4 + +; <label>:4 ; preds = %11, %0 + %5 = load i8** %3, align 4 ; [#uses=1] + %6 = load i8* %5 ; [#uses=1] + %7 = sext i8 %6 to i32 ; [#uses=1] + %8 = load i8* getelementptr inbounds ([2 x i8]* @.str37575, i32 0, i32 0) ; [#uses=1] + %9 = sext i8 %8 to i32 ; [#uses=1] + %10 = icmp eq i32 %7, %9 ; [#uses=1] + br i1 %10, label %11, label %14 + +; <label>:11 ; preds = %4 + %12 = load i8** %3, align 4 ; [#uses=1] + %13 = getelementptr inbounds i8* %12, i32 1 ; [#uses=1] + store i8* %13, i8** %3, align 4 + br label %4 + +; <label>:14 ; preds = %4 + %15 = load i8** %3, align 4 ; [#uses=1] + %16 = load i8* %15 ; [#uses=1] + %17 = sext i8 %16 to i32 ; [#uses=1] + %18 = icmp eq i32 %17, 0 ; [#uses=1] + br i1 %18, label %19, label %20 + +; <label>:19 ; preds = %14 + store i8* null, i8** %1 + br label %41 + +; <label>:20 ; preds = %14 + %21 = load i8** %3, align 4 ; [#uses=1] + %22 = load i8* getelementptr inbounds ([2 x i8]* @.str37575, i32 0, i32 0) ; [#uses=1] + %23 = sext i8 %22 to i32 ; [#uses=1] + %24 = call i8* @strchr(i8* %21, i32 %23) ; [#uses=1] + store i8* %24, i8** %l, align 4 + %25 = load i8** %l, align 4 ; [#uses=1] + %26 = icmp eq i8* %25, null ; [#uses=1] + br i1 %26, label %27, label %32 + +; <label>:27 ; preds = %20 + %28 = load i8** %3, align 4 ; [#uses=1] + %29 = load i8** %3, align 4 ; [#uses=1] + %30 = call i32 @strlen(i8* %29) ; [#uses=1] + %31 = getelementptr inbounds i8* %28, i32 %30 ; [#uses=1] + store i8* %31, i8** %l, align 4 + br label %32 + +; <label>:32 ; preds = %27, %20 + %33 = load %struct.lua_State** %2, align 4 ; [#uses=1] + %34 = load i8** %3, align 4 ; [#uses=1] + %35 = load i8** %l, align 4 ; [#uses=1] + %36 = load i8** %3, align 4 ; [#uses=1] + %37 = ptrtoint i8* %35 to i32 ; [#uses=1] + %38 = ptrtoint i8* %36 to i32 ; [#uses=1] + %39 = sub i32 %37, %38 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %33, i8* %34, i32 %39) + %40 = load i8** %l, align 4 ; [#uses=1] + store i8* %40, i8** %1 + br label %41 + +; <label>:41 ; preds = %32, %19 + %42 = load i8** %1 ; [#uses=1] + ret i8* %42 +} + +; [#uses=1] +define internal i32 @_Z8readablePKc(i8* %filename) { + %1 = alloca i32, align 4 ; [#uses=3] + %2 = alloca i8*, align 4 ; [#uses=2] + %f = alloca %struct._IO_FILE*, align 4 ; [#uses=3] + store i8* %filename, i8** %2, align 4 + %3 = load i8** %2, align 4 ; [#uses=1] + %4 = call %struct._IO_FILE* @fopen(i8* %3, i8* getelementptr inbounds ([2 x i8]* @.str36574, i32 0, i32 0)) ; [#uses=1] + store %struct._IO_FILE* %4, %struct._IO_FILE** %f, align 4 + %5 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %6 = icmp eq %struct._IO_FILE* %5, null ; [#uses=1] + br i1 %6, label %7, label %8 + +; <label>:7 ; preds = %0 + store i32 0, i32* %1 + br label %11 + +; <label>:8 ; preds = %0 + %9 = load %struct._IO_FILE** %f, align 4 ; [#uses=1] + %10 = call i32 @fclose(%struct._IO_FILE* %9) ; [#uses=0] + store i32 1, i32* %1 + br label %11 + +; <label>:11 ; preds = %8, %7 + %12 = load i32* %1 ; [#uses=1] + ret i32 %12 +} + +; [#uses=1] +define internal void @_Z7modinitP9lua_StatePKc(%struct.lua_State* %L, i8* %modname) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=7] + %2 = alloca i8*, align 4 ; [#uses=6] + %dot = alloca i8*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i8* %modname, i8** %2, align 4 + %3 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %3, i32 -1) + %4 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %4, i32 -2, i8* getelementptr inbounds ([3 x i8]* @.str47585, i32 0, i32 0)) + %5 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %6 = load i8** %2, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %5, i8* %6) + %7 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %7, i32 -2, i8* getelementptr inbounds ([6 x i8]* @.str44582, i32 0, i32 0)) + %8 = load i8** %2, align 4 ; [#uses=1] + %9 = call i8* @strrchr(i8* %8, i32 46) ; [#uses=1] + store i8* %9, i8** %dot, align 4 + %10 = load i8** %dot, align 4 ; [#uses=1] + %11 = icmp eq i8* %10, null ; [#uses=1] + br i1 %11, label %12, label %14 + +; <label>:12 ; preds = %0 + %13 = load i8** %2, align 4 ; [#uses=1] + store i8* %13, i8** %dot, align 4 + br label %17 + +; <label>:14 ; preds = %0 + %15 = load i8** %dot, align 4 ; [#uses=1] + %16 = getelementptr inbounds i8* %15, i32 1 ; [#uses=1] + store i8* %16, i8** %dot, align 4 + br label %17 + +; <label>:17 ; preds = %14, %12 + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = load i8** %2, align 4 ; [#uses=1] + %20 = load i8** %dot, align 4 ; [#uses=1] + %21 = load i8** %2, align 4 ; [#uses=1] + %22 = ptrtoint i8* %20 to i32 ; [#uses=1] + %23 = ptrtoint i8* %21 to i32 ; [#uses=1] + %24 = sub i32 %22, %23 ; [#uses=1] + call void @_Z15lua_pushlstringP9lua_StatePKcj(%struct.lua_State* %18, i8* %19, i32 %24) + %25 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z12lua_setfieldP9lua_StateiPKc(%struct.lua_State* %25, i32 -2, i8* getelementptr inbounds ([9 x i8]* @.str48586, i32 0, i32 0)) + ret void +} + +; [#uses=1] +define internal void @_Z7setfenvP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=8] + %ar = alloca %struct.lua_Debug, align 4 ; [#uses=2] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + %2 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %3 = call i32 @_Z12lua_getstackP9lua_StateiP9lua_Debug(%struct.lua_State* %2, i32 1, %struct.lua_Debug* %ar) ; [#uses=1] + %4 = icmp eq i32 %3, 0 ; [#uses=1] + br i1 %4, label %13, label %5 + +; <label>:5 ; preds = %0 + %6 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %7 = call i32 @_Z11lua_getinfoP9lua_StatePKcP9lua_Debug(%struct.lua_State* %6, i8* getelementptr inbounds ([2 x i8]* @.str45583, i32 0, i32 0), %struct.lua_Debug* %ar) ; [#uses=1] + %8 = icmp eq i32 %7, 0 ; [#uses=1] + br i1 %8, label %13, label %9 + +; <label>:9 ; preds = %5 + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %11 = call i32 @_Z15lua_iscfunctionP9lua_Statei(%struct.lua_State* %10, i32 -1) ; [#uses=1] + %12 = icmp ne i32 %11, 0 ; [#uses=1] + br i1 %12, label %13, label %16 + +; <label>:13 ; preds = %9, %5, %0 + %14 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %15 = call i32 (%struct.lua_State*, i8*, ...)* @_Z10luaL_errorP9lua_StatePKcz(%struct.lua_State* %14, i8* getelementptr inbounds ([40 x i8]* @.str46584, i32 0, i32 0)) ; [#uses=0] + br label %16 + +; <label>:16 ; preds = %13, %9 + %17 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %17, i32 -2) + %18 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %19 = call i32 @_Z11lua_setfenvP9lua_Statei(%struct.lua_State* %18, i32 -2) ; [#uses=0] + %20 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z10lua_settopP9lua_Statei(%struct.lua_State* %20, i32 -2) + ret void +} + +; [#uses=1] +define internal void @_Z9dooptionsP9lua_Statei(%struct.lua_State* %L, i32 %n) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %2 = alloca i32, align 4 ; [#uses=2] + %i = alloca i32, align 4 ; [#uses=5] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store i32 %n, i32* %2, align 4 + store i32 2, i32* %i, align 4 + br label %3 + +; <label>:3 ; preds = %12, %0 + %4 = load i32* %i, align 4 ; [#uses=1] + %5 = load i32* %2, align 4 ; [#uses=1] + %6 = icmp sle i32 %4, %5 ; [#uses=1] + br i1 %6, label %7, label %15 + +; <label>:7 ; preds = %3 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load i32* %i, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %8, i32 %9) + %10 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z13lua_pushvalueP9lua_Statei(%struct.lua_State* %10, i32 -2) + %11 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %11, i32 1, i32 0) + br label %12 + +; <label>:12 ; preds = %7 + %13 = load i32* %i, align 4 ; [#uses=1] + %14 = add nsw i32 %13, 1 ; [#uses=1] + store i32 %14, i32* %i, align 4 + br label %3 + +; <label>:15 ; preds = %3 + ret void +} + +; [#uses=1] +declare i8* @strrchr(i8*, i32) nounwind readonly + +; [#uses=1] +define void @_Z13luaL_openlibsP9lua_State(%struct.lua_State* %L) { + %1 = alloca %struct.lua_State*, align 4 ; [#uses=4] + %lib = alloca %struct.luaL_Reg*, align 4 ; [#uses=6] + store %struct.lua_State* %L, %struct.lua_State** %1, align 4 + store %struct.luaL_Reg* getelementptr inbounds ([9 x %struct.luaL_Reg]* @_ZL7lualibs, i32 0, i32 0), %struct.luaL_Reg** %lib, align 4 + br label %2 + +; <label>:2 ; preds = %17, %0 + %3 = load %struct.luaL_Reg** %lib, align 4 ; [#uses=1] + %4 = getelementptr inbounds %struct.luaL_Reg* %3, i32 0, i32 1 ; [#uses=1] + %5 = load i32 (%struct.lua_State*)** %4, align 4 ; [#uses=1] + %6 = icmp ne i32 (%struct.lua_State*)* %5, null ; [#uses=1] + br i1 %6, label %7, label %20 + +; <label>:7 ; preds = %2 + %8 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %9 = load %struct.luaL_Reg** %lib, align 4 ; [#uses=1] + %10 = getelementptr inbounds %struct.luaL_Reg* %9, i32 0, i32 1 ; [#uses=1] + %11 = load i32 (%struct.lua_State*)** %10, align 4 ; [#uses=1] + call void @_Z16lua_pushcclosureP9lua_StatePFiS0_Ei(%struct.lua_State* %8, i32 (%struct.lua_State*)* %11, i32 0) + %12 = load %struct.lua_State** %1, align 4 ; [#uses=1] + %13 = load %struct.luaL_Reg** %lib, align 4 ; [#uses=1] + %14 = getelementptr inbounds %struct.luaL_Reg* %13, i32 0, i32 0 ; [#uses=1] + %15 = load i8** %14, align 4 ; [#uses=1] + call void @_Z14lua_pushstringP9lua_StatePKc(%struct.lua_State* %12, i8* %15) + %16 = load %struct.lua_State** %1, align 4 ; [#uses=1] + call void @_Z8lua_callP9lua_Stateii(%struct.lua_State* %16, i32 1, i32 0) + br label %17 + +; <label>:17 ; preds = %7 + %18 = load %struct.luaL_Reg** %lib, align 4 ; [#uses=1] + %19 = getelementptr inbounds %struct.luaL_Reg* %18, i32 1 ; [#uses=1] + store %struct.luaL_Reg* %19, %struct.luaL_Reg** %lib, align 4 + br label %2 + +; <label>:20 ; preds = %2 + ret void +} |