Advertisement
dfgfregf

Untitled

Mar 26th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.80 KB | None | 0 0
  1.  
  2. local b local f local i local c={"ABC","ABx","ABC","ABC","ABC","ABx","ABC","ABx","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","AsBx","ABC","ABC","ABC","ABC","ABC","ABC","ABC","ABC","AsBx","AsBx","ABC","ABC","ABC","ABx","ABC"}local a={"MOVE","LOADK","LOADBOOL","LOADNIL","GETUPVAL","GETGLOBAL","GETTABLE","SETGLOBAL","SETUPVAL","SETTABLE","NEWTABLE","SELF","ADD","SUB","MUL","DIV","MOD","POW","UNM","NOT","LEN","CONCAT","JMP","EQ","LT","LE","TEST","TESTSET","CALL","TAILCALL","RETURN","FORLOOP","FORPREP","TFORLOOP","SETLIST","CLOSE","CLOSURE","VARARG"}local function m(b,a,c)if c then local d=0 local e=0 for a=a,c do d=d+2^e*m(b,a)e=e+1 end return d else local a=2^(a-1)return(b%(a+a)>=a)and 1 or 0 end end local function d(d)local n=1 local a=false local f local h local k,g local j,l,e,b,i do function get_int8()local a=d:byte(n,n)n=n+1 return a end function get_int32()local b,c,d,a=d:byte(n,n+3)n=n+4 return a*16777216+d*65536+c*256+b end function get_int64()local a=l()local b=l()return b*4294967296+a end function get_float64()local a=l()local b=l()return(-2*m(b,32)+1)*(2^(m(b,21,31)-1023))*((m(b,1,20)*(2^32)+a)/(2^52)+1)end function get_string(b)local a if b then a=d:sub(n,n+b-1)n=n+b else b=g()if b==0 then return end a=d:sub(n,n+b-1)n=n+b end return a end end local function d()local h local g={}local f={}local e={}local a={lines={}}h={instructions=g;constants=f;prototypes=e;debug=a}local n h.name=i()h.first_line=k()h.last_line=k()if h.name then h.name=h.name:sub(1,-2)end h.upvalues=j()h.arguments=j()h.varg=j()h.stack=j()do n=k()for a=1,n do local e={}local d=l()local b=m(d,1,6)local c=c[b+1]e.opcode=b e.type=c e.A=m(d,7,14)if c=="ABC"then e.B=m(d,24,32)e.C=m(d,15,23)elseif c=="ABx"then e.Bx=m(d,15,32)elseif c=="AsBx"then e.sBx=m(d,15,32)-131071 end g[a]=e end end do n=k()for a=1,n do local d={}local c=j()d.type=c if c==1 then d.data=(j()~=0)elseif c==3 then d.data=b()elseif c==4 then d.data=i():sub(1,-2)end f[a-1]=d end end do n=k()for a=1,n do e[a-1]=d()end end do local b=a.lines n=k()for a=1,n do b[a]=l()end n=k()for a=1,n do i():sub(1,-2)l()l()end n=k()for a=1,n do i()end end return h end do j()a=(j()==0)f=j()h=j()if f==4 then k=l elseif f==8 then k=e else error("Unsupported bytecode target platform")end if h==4 then g=l elseif h==8 then g=e else error("Unsupported bytecode target platform")end end return d()end local function c(...)local b=select("#",...)local a={...}return b,a end local function e(l,h)local d=l.instructions local n=l.constants local a=l.prototypes local p,m local g local o=1 local j,k local c={[0]=function(a)p[a.A]=p[a.B]end,[1]=function(a)p[a.A]=n[a.Bx].data end,[2]=function(a)p[a.A]=a.B~=0 if a.C~=0 then o=o+1 end end,[3]=function(a)local b=p for a=a.A,a.B do b[a]=nil end end,[4]=function(a)p[a.A]=h[a.B]end,[5]=function(b)local a=n[b.Bx].data p[b.A]=g[a]end,[6]=function(b)local c=b.C local a=p c=c>255 and n[c-256].data or a[c]a[b.A]=a[b.B][c]end,[7]=function(b)local a=n[b.Bx].data g[a]=p[b.A]end,[8]=function(a)h[a.B]=p[a.A]end,[9]=function(b)local e=b.B local d=b.C local c,a=p,n e=e>255 and a[e-256].data or c[e]d=d>255 and a[d-256].data or c[d]c[b.A][e]=d end,[10]=function(a)p[a.A]={}end,[11]=function(b)local a=b.A local c=b.B local d=b.C local b=p c=b[c]d=d>255 and n[d-256].data or b[d]b[a+1]=c b[a]=c[d]end,[12]=function(c)local e=c.B local d=c.C local b,a=p,n e=e>255 and a[e-256].data or b[e]d=d>255 and a[d-256].data or b[d]b[c.A]=e+d end,[13]=function(c)local d=c.B local e=c.C local b,a=p,n d=d>255 and a[d-256].data or b[d]e=e>255 and a[e-256].data or b[e]b[c.A]=d-e end,[14]=function(b)local d=b.B local e=b.C local c,a=p,n d=d>255 and a[d-256].data or c[d]e=e>255 and a[e-256].data or c[e]c[b.A]=d*e end,[15]=function(c)local e=c.B local d=c.C local b,a=p,n e=e>255 and a[e-256].data or b[e]d=d>255 and a[d-256].data or b[d]b[c.A]=e/d end,[16]=function(b)local d=b.B local e=b.C local c,a=p,n d=d>255 and a[d-256].data or c[d]e=e>255 and a[e-256].data or c[e]c[b.A]=d%e end,[17]=function(c)local d=c.B local e=c.C local b,a=p,n d=d>255 and a[d-256].data or b[d]e=e>255 and a[e-256].data or b[e]b[c.A]=d^e end,[18]=function(a)p[a.A]=-p[a.B]end,[19]=function(a)p[a.A]=not p[a.B]end,[20]=function(a)p[a.A]=#p[a.B]end,[21]=function(c)local a=c.B local b=p[a]for a=a+1,c.C do b=b..p[a]end p[c.A]=b end,[22]=function(a)o=o+a.sBx end,[23]=function(a)local c=a.A local d=a.B local e=a.C local a,b=p,n c=c~=0 d=d>255 and b[d-256].data or a[d]e=e>255 and b[e-256].data or a[e]if(d==e)~=c then o=o+1 end end,[24]=function(a)local c=a.A local e=a.B local d=a.C local a,b=p,n c=c~=0 e=e>255 and b[e-256].data or a[e]d=d>255 and b[d-256].data or a[d]if(e<d)~=c then o=o+1 end end,[25]=function(a)local c=a.A local e=a.B local d=a.C local b,a=p,n c=c~=0 e=e>255 and a[e-256].data or b[e]d=d>255 and a[d-256].data or b[d]if(e<=d)~=c then o=o+1 end end,[26]=function(a)if(not not p[a.A])==(a.C==0)then o=o+1 end end,[27]=function(c)local b=p local a=b[c.B]if(not not a)==(c.C==0)then o=o+1 else b[c.A]=a end end,[28]=function(a)local h=a.A local b=a.B local a=a.C local f=p local e,d local i,g e={}if b~=1 then if b~=0 then i=h+b-1 else i=m end g=0 for a=h+1,i do g=g+1 e[g]=f[a]end i,d=c(f[h](unpack(e,1,i-h)))else i,d=c(f[h]())end m=h-1 if a~=1 then if a~=0 then i=h+a-2 else i=i+h end g=0 for a=h,i do g=g+1 f[a]=d[g]end end end,[29]=function(a)local h=a.A local e=a.B local a=a.C local d=p local f,c local a,g,b=m f={}if e~=1 then if e~=0 then g=h+e-1 else g=a end b=0 for a=h+1,g do b=b+1 f[#f+1]=d[a]end c={d[h](unpack(f,1,g-h))}else c={d[h]()}end return true,c end,[30]=function(a)local c=a.A local d=a.B local b=p local e local a,f if d==1 then return true end if d==0 then e=m else e=c+d-2 end f={}local d=0 for a=c,e do d=d+1 f[d]=b[a]end return true,f end,[31]=function(b)local d=b.A local e=p local a=e[d+2]local c=e[d]+a e[d]=c if a>0 then if c<=e[d+1]then o=o+b.sBx e[d+3]=c end else if c>=e[d+1]then o=o+b.sBx e[d+3]=c end end end,[32]=function(a)local c=a.A local b=p b[c]=b[c]-b[c+2]o=o+a.sBx end,[33]=function(b)local e=b.A local a=b.B local b=b.C local d=p local a=e+2 local c={d[e](d[e+1],d[e+2])}for b=1,b do d[a+b]=c[b]end if d[e+3]~=nil then d[e+2]=d[e+3]else o=o+1 end end,[34]=function(a)local d=a.A local e=a.B local a=a.C local c=p if a==0 then error("NYI: extended SETLIST")else local b=(a-1)*50 local a=c[d]if e==0 then e=m end for e=1,e do a[b+e]=c[d+e]end end end,[35]=function(a)end,[36]=function(b)local c=a[b.Bx]local d=d local f=p local g={}local a=setmetatable({},{__index=function(a,a)local a=g[a]return a.segment[a.offset]end,__newindex=function(a,b,a)local b=g[b]b.segment[b.offset]=a end})for a=1,c.upvalues do local b=d[o]if b.opcode==0 then g[a-1]={segment=f,offset=b.B}elseif d[o].opcode==4 then g[a-1]={segment=h,offset=b.B}end o=o+1 end local a,a=e(c,a)f[b.A]=a end,[37]=function(a)local d=a.A local c=a.B local b,a=p,j for c=d,d+(c>0 and c-1 or k)do b[c]=a[c-d]end end}local function e(d)local a=l.name local c=l.debug.lines[o]local b=(d:match("^.+:(.+)")or d)local e="Error: "if a then e=a end if c then e=e.." - Line: "..c end if d and type(d)=="string"then e=e.." - Error: "..b end if i then i(tostring(c)..":"..tostring(b))else error(tostring(c)..":"..tostring(b),3)end end local function a()local a=d local g,f,d,b while true do g=a[o]o=o+1 b,f,d=pcall(function()return c[g.opcode](g)end)if not b then e(f)break elseif f then return d end end end local d={get_stack=function()return p end;get_IP=function()return o end}local function c(...)local c={}local d={}m=-1 p=setmetatable(c,{__index=d;__newindex=function(a,b,a)if b>m and a then m=b end d[b]=a end})local d={...}j={}k=select("#",...)-1 for a=0,k do c[a]=d[a+1]j[a]=d[a+1]end g=f or getfenv()o=1 local a=coroutine.create(a)local a,c=coroutine.resume(a)if a then if c then return unpack(c)end return else if b then else e(c)end end end return d,c end load_bytecode=function(b,a,c)f=a or getfenv(2)i=c local a=d(b)local a,a=e(a)return a end load_bytecode(code,getfenv())()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement