local _ssssssssss = (function() local unpack = table.unpack local pack = table.pack local select = select local type = type local _e4JpXAHUv do local ok, e = pcall(function() return getfenv() end) _e4JpXAHUv = ok and type(e) == 'table' and e or _G end local _UHUzdxdY7 = {protos = {}, enc = false, key = 0, cache = {}} local function _ezfHHchKC(v) return v ~= nil and v ~= false end local function _uIXXQgh1P(s) if s:byte(1) == 1 then local n = #s - 1 local out = table.create(n) local seed = (57 + _UHUzdxdY7.key * 17) % 256 local inv = _UHUzdxdY7.sbox_inv for i = 1, n do local b = s:byte(i + 1) if inv then b = inv[b] end out[i] = string.char(bit32.bxor(b, seed, 92)) seed = (141 * seed + 29) % 256 end return table.concat(out) end return s end local function _RSBuAtCZD(v) if type(v) ~= 'string' or not _UHUzdxdY7.enc then return v end local c = _UHUzdxdY7.cache[v] if c ~= nil then return c end c = _uIXXQgh1P(v) _UHUzdxdY7.cache[v] = c return c end local CELL_MT = {} local function _Q9qshlNgM(v) return setmetatable({v = v}, CELL_MT) end local function cellval(v) if type(v) == 'table' and getmetatable(v) == CELL_MT then return v.v end return v end local function cellput(q, i, v) local c = q[i] if type(c) == 'table' and getmetatable(c) == CELL_MT then c.v = v else q[i] = v end end local function _iuGYKAhT5(pid, ups) return function(...) return _UHUzdxdY7._ysnQUTxgF(pid, ups, ...) end end local function _FmgptrPmZ(f, q, base, argc) local args = table.create(argc) for i = 1, argc do args[i] = cellval(q[base + i]) end return pack(f(unpack(args, 1, argc))) end function _UHUzdxdY7._ysnQUTxgF(pid, ups, ...) local p = _UHUzdxdY7.protos[pid] if not p then error('', 0) end local q = {} local rb = _UHUzdxdY7.regbase or 0 local np = p.params local nargs = select('#', ...) for i = 1, np do q[rb + i - 1] = (select(i, ...)) end local va, nva = {}, 0 if p.vararg then nva = nargs - np for i = 1, nva do va[i] = select(np + i, ...) end end local code = p.code local n = #code local pc = 1 local top = rb - 1 while pc >= 1 and pc <= n do local ins = code[pc] local op = _UHUzdxdY7.opmap and _UHUzdxdY7.opmap[ins[1]] or bit32.bxor(ins[1], _UHUzdxdY7.opkey) if op == 16 then q[ins.B] = _RSBuAtCZD(ins.K3) pc = pc + 1 elseif op == 94 then q[ins.A] = q[ins.C] <= q[ins.B] pc = pc + 1 elseif op == 134 or op == 0x108 then pc = pc + 1 elseif op == 158 then q[ins.B] = -q[ins.A] pc = pc + 1 elseif op == 0x10E then pc = pc + 1 elseif op == 173 then pc = ins.B + 1 elseif op == 0x100 then local vals = table.create(ins.B) for i = 0, ins.B - 1 do vals[i + 1] = cellval(q[ins.A + i]) end return unpack(vals, 1, ins.B) elseif op == 0x10D then local base = ins.A local limit, step = tonumber(cellval(q[base])), tonumber(cellval(q[base + 1])) local idx = tonumber(cellval(q[base + 2])) + step cellput(q, base + 2, idx) if (step > 0 and idx <= limit) or (step <= 0 and limit <= idx) then pc = ins.C + 1 else pc = pc + 1 end elseif op == 220 or op == 4 then q[ins.A] = q[ins.B] + q[ins.C] pc = pc + 1 elseif op == 43 then q[ins.B] = q[ins.C] * q[ins.A] pc = pc + 1 elseif op == 81 then q[ins.B] = q[ins.A] pc = pc + 1 elseif op == 126 then q[ins.C] = q[ins.B] - ins.K3 pc = pc + 1 elseif op == 55 then q[ins.A] = q[ins.B] == nil pc = pc + 1 elseif op == 180 then q[ins.B] = nil pc = pc + 1 elseif op == 73 then local base = ins.C q[base](q[base + 1]) pc = pc + 1 elseif op == 0x111 then q[ins.A] = q[ins.B] ^ q[ins.C] pc = pc + 1 elseif op == 65 then return elseif op == 45 then q[ins.C] = q[ins.A] % q[ins.B] pc = pc + 1 elseif op == 207 then pc = q[ins.C] ~= q[ins.B] and ins.A + 1 or pc + 1 elseif op == 165 then q[ins.B] = q[ins.A] == q[ins.C] pc = pc + 1 elseif op == 147 then q[ins.C] = q[ins.A] / q[ins.B] pc = pc + 1 elseif op == 0x105 then local c = q[ins.B] q[ins.A] = type(c) == 'table' and c.v or c pc = pc + 1 elseif op == 35 then q[ins.A] = {} pc = pc + 1 elseif op == 25 then q[ins.C][_RSBuAtCZD(ins.K3)] = q[ins.B] pc = pc + 1 elseif op == 0x107 then local base, argc, nres = ins.A, ins.B, ins.C if argc < 0 then argc = top - base if argc < 0 then argc = 0 end end local r = _FmgptrPmZ(q[base], q, base, argc) if nres < 0 then for i = 1, r.n do q[base + i - 1] = r[i] end top = base + r.n - 1 else for i = 1, nres do q[base + i - 1] = r[i] end top = base + nres - 1 end pc = pc + 1 elseif op == 157 then for i = ins.B, ins.A do q[i] = nil end pc = pc + 1 elseif op == 117 then q[ins.A] = ups[ins.B + 1].v pc = pc + 1 elseif op == 46 then local r = pack(q[ins.A]()) q[ins.A] = r[1] top = ins.A pc = pc + 1 elseif op == 49 then local caps = ins.K2 or {} local children = {} for i = 1, #caps do local desc = caps[i] local kind, idx = desc[1], desc[2] if kind == 0 then children[i] = _Q9qshlNgM(q[idx]) elseif kind == 1 then local c = q[idx] if type(c) ~= 'table' then c = _Q9qshlNgM(c) q[idx] = c end children[i] = c else children[i] = ups[idx + 1] end end local newclos = _iuGYKAhT5(ins.C, children) local target = q[ins.A] if type(target) == 'table' and getmetatable(target) == CELL_MT then target.v = newclos else q[ins.A] = newclos end for i = 1, #caps do local desc = caps[i] if desc[1] == 0 and desc[2] == ins.A then children[i].v = newclos end end pc = pc + 1 elseif op == 0x10B then q[ins.A] = math.floor(q[ins.B] / q[ins.C]) pc = pc + 1 elseif op == 148 then ups[ins.A + 1].v = q[ins.C] pc = pc + 1 elseif op == 67 then q[ins.C] = not _ezfHHchKC(q[ins.B]) pc = pc + 1 elseif op == 0x106 then local c = q[ins.A] if type(c) ~= 'table' then c = _Q9qshlNgM(nil) q[ins.A] = c end c.v = q[ins.B] pc = pc + 1 elseif op == 69 then local base, argc = ins.A, ins.B - 1 local r = _FmgptrPmZ(q[base], q, base, argc) for i = 1, r.n do q[base + i - 1] = r[i] end top = base + r.n - 1 pc = pc + 1 elseif op == 108 then q[ins.A] = q[ins.B] - q[ins.C] pc = pc + 1 elseif op == 92 then q[ins.A] = #q[ins.C] pc = pc + 1 elseif op == 98 then q[ins.B] = _e4JpXAHUv[_RSBuAtCZD(ins.K2)] pc = pc + 1 elseif op == 44 then local base, argc = ins.C, ins.B - 1 local r = _FmgptrPmZ(q[base], q, base, argc) q[base] = r[1] top = base pc = pc + 1 elseif op == 110 then q[ins.B] = q[ins.A] + ins.K2 pc = pc + 1 elseif op == 0x104 then local t = cellval(q[ins.A]) local from, cnt, idx = ins.B, ins.C, ins.K1 or 1 if cnt < 0 then cnt = top - from + 1 end for i = 0, cnt - 1 do t[idx + i] = cellval(q[from + i]) end pc = pc + 1 elseif op == 0x102 then _e4JpXAHUv[_RSBuAtCZD(ins.K2)] = q[ins.B] pc = pc + 1 elseif op == 58 then return cellval(q[ins.A]) elseif op == 41 then q[ins.B][q[ins.C]] = q[ins.A] pc = pc + 1 elseif op == 106 then local r = pack(q[ins.B](q[ins.B + 1], q[ins.B + 2])) q[ins.B] = r[1] top = ins.B pc = pc + 1 elseif op == 0x10C then local base = ins.A local limit, step = tonumber(cellval(q[base])), tonumber(cellval(q[base + 1])) local idx = tonumber(cellval(q[base + 2])) cellput(q, base, limit) cellput(q, base + 1, step) cellput(q, base + 2, idx) local go = (step > 0 and idx <= limit) or (step <= 0 and limit <= idx) pc = go and pc + 1 or ins.C + 1 elseif op == 119 then q[ins.C] = q[ins.A][q[ins.B]] pc = pc + 1 elseif op == 0x109 then local dst, src = ins.A, ins.B local cnt = top - src + 1 if cnt < 0 then cnt = 0 end for i = 0, cnt - 1 do local v = cellval(q[src + i]) local c = q[dst + i] if type(c) == 'table' and getmetatable(c) == CELL_MT then c.v = v else q[dst + i] = v end end top = dst + cnt - 1 pc = pc + 1 elseif op == 0x10A then local from = ins.A for _, r in ipairs(p.boxed or {}) do if r >= from then local c = q[r] q[r] = _Q9qshlNgM(type(c) == 'table' and c.v or c) end end pc = pc + 1 elseif op == 0x110 then q[ins.A] = _Q9qshlNgM(q[ins.A]) pc = pc + 1 elseif op == 127 then q[ins.B] = q[ins.A] ~= q[ins.C] pc = pc + 1 elseif op == 0 then q[ins.A] = q[ins.C][_RSBuAtCZD(ins.K1)] pc = pc + 1 elseif op == 171 then local r = pack(q[ins.A](q[ins.A + 1])) q[ins.A] = r[1] top = ins.A pc = pc + 1 elseif op == 208 then q[ins.B] = q[ins.A] .. q[ins.C] pc = pc + 1 elseif op == 141 then q[ins.A] = q[ins.B] > q[ins.C] pc = pc + 1 elseif op == 0x103 then local dst, cnt = ins.A, ins.B if cnt < 0 then cnt = nva end for i = 1, cnt do cellput(q, dst + i - 1, va[i]) end top = dst + cnt - 1 pc = pc + 1 elseif op == 109 then pc = q[ins.B] == _RSBuAtCZD(ins.K2) and ins.A + 1 or pc + 1 elseif op == 166 then q[ins.B] = q[ins.A] >= q[ins.C] pc = pc + 1 elseif op == 14 then pc = _ezfHHchKC(q[ins.B]) and ins.C + 1 or pc + 1 elseif op == 72 then pc = _ezfHHchKC(q[ins.B]) and pc + 1 or ins.A + 1 elseif op == 0x10F then local base, nvars = ins.A, ins.B local r = pack(cellval(q[base])(cellval(q[base + 1]), cellval(q[base + 2]))) if r[1] == nil then pc = pc + 1 else cellput(q, base + 2, r[1]) cellput(q, base + 3, r[1]) cellput(q, base + 4, r[2]) for i = 3, nvars do cellput(q, base + 2 + i, r[i]) end pc = ins.C + 1 end elseif op == 0x101 then local last = top >= ins.A and top or ins.A - 1 local vals = {} for i = ins.A, last do vals[#vals + 1] = cellval(q[i]) end return unpack(vals, 1, #vals) else error('', 0) end end end local function b_u8(s, p) return s:byte(p), p + 1 end local function b_u32(s, p) local a, b, c, d = s:byte(p, p + 3) return a + b * 256 + c * 65536 + d * 16777216, p + 4 end local function b_f64(s, p) local v, np = string.unpack('