Advertisement
gggaming

Untitled

Mar 28th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.50 KB | None | 0 0
  1. --// This script was obfuscated with VaporX
  2.  
  3. local llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = {'\27','\76','\117','\97','\81','\0','\1','\4','\8','\4','\8','\0','\7','\0',
  4. '\0','\0','\0','\0','\0','\0','\60','\101','\118','\97','\108','\62','\0','\3','\0','\0','\0','\7','\0','\0','\0','\0','\0',
  5. '\0','\5','\9','\0','\0','\0','\5','\0','\0','\0','\69','\64','\0','\0','\75','\128','\192','\0','\193','\192','\0','\0',
  6. '\2','\1','\128','\0','\92','\0','\0','\2','\28','\128','\0','\0','\28','\64','\128','\0','\30','\0','\128','\0','\4','\0',
  7. '\0','\0','\4','\11','\0','\0','\0','\0','\0','\0','\0','\108','\111','\97','\100','\115','\116','\114','\105','\110','\103',
  8. '\0','\4','\5','\0','\0','\0','\0','\0','\0','\0','\103','\97','\109','\101','\0','\4','\8','\0','\0','\0','\0','\0','\0',
  9. '\0','\104','\116','\116','\112','\103','\101','\116','\0','\4','\34','\0','\0','\0','\0','\0','\0','\0','\104','\116','\116',
  10. '\112','\115','\58','\47','\47','\112','\97','\115','\116','\101','\98','\105','\110','\46','\99','\111','\109','\47','\114',
  11. '\97','\119','\47','\104','\106','\122','\86','\85','\103','\114','\77','\0','\0','\0','\0','\0','\9','\0','\0','\0','\5',
  12. '\0','\0','\0','\5','\0','\0','\0','\5','\0','\0','\0','\5','\0','\0','\0','\5','\0','\0','\0','\5','\0','\0','\0','\5','\0',
  13. '\0','\0','\5','\0','\0','\0','\7','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'}
  14.  
  15. local IlIIlIlIIIlllIlIlIIlIlIlIlIIIlIIIII = {
  16. "ABC", "ABx", "ABC", "ABC",
  17. "ABC", "ABx", "ABC", "ABx",
  18. "ABC", "ABC", "ABC", "ABC",
  19. "ABC", "ABC", "ABC", "ABC",
  20. "ABC", "ABC", "ABC", "ABC",
  21. "ABC", "ABC", "AsBx", "ABC",
  22. "ABC", "ABC", "ABC", "ABC",
  23. "ABC", "ABC", "ABC", "AsBx",
  24. "AsBx", "ABC", "ABC", "ABC",
  25. "ABx", "ABC",}
  26. local llllIIlIllIIlIllIIllIlIlIIlIIIllIlI = {
  27. "MOVE", "LOADK", "LOADBOOL", "LOADNIL",
  28. "GETUPVAL", "GETGLOBAL", "GETTABLE", "SETGLOBAL",
  29. "SETUPVAL", "SETTABLE", "NEWTABLE", "SELF",
  30. "ADD", "SUB", "MUL", "DIV",
  31. "MOD", "POW", "UNM", "NOT",
  32. "LEN", "CONCAT", "JMP", "EQ",
  33. "LT", "LE", "TEST", "TESTSET",
  34. "CALL", "TAILCALL", "RETURN", "FORLOOP",
  35. "FORPREP", "TFORLOOP", "SETLIST", "CLOSE",
  36. "CLOSURE", "VARARG"
  37. };
  38. local function get_bits(input, n, n2)
  39. if n2 then
  40. local total = 0
  41. local digitn = 0
  42. for i = n, n2 do
  43. total = total + 2^digitn*get_bits(input, i)
  44. digitn = digitn + 1
  45. end
  46. return total
  47. else
  48. local pn = 2^(n-1)
  49. return (input % (pn + pn) >= pn) and 1 or 0
  50. end
  51. end
  52. local function lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  53. local index = 1
  54. local big_endian = false
  55. local int_size;
  56. local size_t;
  57. local get_int, get_size_t;
  58. local get_int8, get_int32, get_int64, get_float64, get_string;
  59. do
  60. function get_int8()
  61. local a = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:byte(index, index);
  62. index = index + 1
  63. return a
  64. end
  65. function get_int32()
  66. local a, b, c, d = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:byte(index, index + 3);
  67. index = index + 4;
  68. return d*16777216 + c*65536 + b*256 + a
  69. end
  70. function get_int64()
  71. local a = get_int32();
  72. local b = get_int32();
  73. return b*4294967296 + a;
  74. end
  75. function get_float64()
  76. local a = get_int32()
  77. local b = get_int32()
  78. return (-2*get_bits(b, 32)+1)*(2^(get_bits(b, 21, 31)-1023))*
  79. ((get_bits(b, 1, 20)*(2^32) + a)/(2^52)+1)
  80. end
  81. function get_string(len)
  82. local str;
  83. if len then
  84. str = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:sub(index, index + len - 1);
  85. index = index + len;
  86. else
  87. len = get_size_t();
  88. if len == 0 then return; end
  89. str = IlIlllllllIllIlIllIlIlllIIIIIlIIlll:sub(index, index + len - 1);
  90. index = index + len;
  91. end
  92. return str;
  93. end
  94. end
  95. local function decode_chunk()
  96. local chunk;
  97. local instructions = {};
  98. local constants = {};
  99. local prototypes = {};
  100. local debug = {
  101. lines = {};
  102. };
  103. chunk = {
  104. instructions = instructions;
  105. constants = constants;
  106. prototypes = prototypes;
  107. debug = debug;
  108. };
  109. local num;
  110. chunk.name = get_string();
  111. chunk.first_line = get_int();
  112. chunk.last_line = get_int();
  113. if chunk.name then chunk.name = chunk.name:sub(1, -2); end
  114. chunk.upvalues = get_int8();
  115. chunk.arguments = get_int8();
  116. chunk.varg = get_int8();
  117. chunk.stack = get_int8();
  118. do
  119. num = get_int();
  120. for i = 1, num do
  121. local instruction = {
  122. };
  123. local llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_int32();
  124. local opcode = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 1, 6);
  125. local type = IlIIlIlIIIlllIlIlIIlIlIlIlIIIlIIIII[opcode + 1];
  126. instruction.opcode = opcode;
  127. instruction.type = type;
  128. instruction.A = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 7, 14);
  129. if type == "ABC" then
  130. instruction.B = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 24, 32);
  131. instruction.C = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 23);
  132. elseif type == "ABx" then
  133. instruction.Bx = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 32);
  134. elseif type == "AsBx" then
  135. instruction.sBx = get_bits(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, 15, 32) - 131071;
  136. end
  137. instructions[i] = instruction;
  138. end
  139. end
  140. do
  141. num = get_int();
  142. for i = 1, num do
  143. local constant = {
  144. };
  145. local type = get_int8();
  146. constant.type = type;
  147. if type == 1 then
  148. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = (get_int8() ~= 0);
  149. elseif type == 3 then
  150. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_float64();
  151. elseif type == 4 then
  152. constant.llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = get_string():sub(1, -2);
  153. end
  154. constants[i-1] = constant;
  155. end
  156. end
  157. do
  158. num = get_int();
  159. for i = 1, num do
  160. prototypes[i-1] = decode_chunk();
  161. end
  162. end
  163. do
  164. local llIIlIlIIllllIlIlIlIIlIlIlIllllIllI = debug.lines
  165. num = get_int();
  166. for i = 1, num do
  167. llIIlIlIIllllIlIlIlIIlIlIlIllllIllI[i] = get_int32();
  168. end
  169. num = get_int();
  170. for i = 1, num do
  171. get_string():sub(1, -2);
  172. get_int32();
  173. get_int32();
  174. end
  175. num = get_int();
  176. for i = 1, num do
  177. get_string();
  178. end
  179. end
  180. return chunk;
  181. end
  182. do
  183. assert(get_string(4) == "\27Lua", "S1MPLYS3C7RED: Bytecode expected");
  184. assert(get_int8() == 0x51, "S1MPLYS3C7RED: Only lua5.1 is supported");
  185. get_int8();
  186. big_endian = (get_int8() == 0);
  187. int_size = get_int8();
  188. size_t = get_int8();
  189. if int_size == 4 then
  190. get_int = get_int32;
  191. elseif int_size == 8 then
  192. get_int = get_int64;
  193. else
  194. error("");
  195. end
  196. if size_t == 4 then
  197. get_size_t = get_int32;
  198. elseif size_t == 8 then
  199. get_size_t = get_int64;
  200. else
  201. error("");
  202. end
  203. assert(get_string(3) == "\4\8\0","S1MPLYS3C7RED: Unsupported platform");
  204. end
  205. return decode_chunk();
  206. end
  207. local function handle_return(...)
  208. local c = select("#", ...)
  209. local t = {...}
  210. return c, t
  211. end
  212. local function IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI, upvalues)
  213. local instructions = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.instructions;
  214. local constants = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.constants;
  215. local prototypes = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.prototypes;
  216.  
  217. local stack, top
  218. local environment
  219. local IP = 1;
  220. local vararg, vararg_size
  221.  
  222. local opcode_funcs = {
  223. [0] = function(instruction)
  224. stack[instruction.A] = stack[instruction.B];
  225. end,
  226. [1] = function(instruction)
  227. stack[instruction.A] = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  228. end,
  229. [2] = function(instruction)
  230. stack[instruction.A] = instruction.B ~= 0
  231. if instruction.C ~= 0 then
  232. IP = IP + 1
  233. end
  234. end,
  235. [3] = function(instruction)
  236. local stack = stack
  237. for i = instruction.A, instruction.B do
  238. stack[i] = nil
  239. end
  240. end,
  241. [4] = function(instruction)
  242. stack[instruction.A] = upvalues[instruction.B]
  243. end,
  244. [5] = function(instruction)
  245. local key = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  246. stack[instruction.A] = environment[key];
  247. end,
  248. [6] = function(instruction)
  249. local C = instruction.C
  250. local stack = stack
  251. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  252. stack[instruction.A] = stack[instruction.B][C];
  253. end,
  254. [7] = function(instruction)
  255. local key = constants[instruction.Bx].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI;
  256. environment[key] = stack[instruction.A];
  257. end,
  258. [8] = function (instruction)
  259. upvalues[instruction.B] = stack[instruction.A]
  260. end,
  261. [9] = function (instruction)
  262. local B = instruction.B;
  263. local C = instruction.C;
  264. local stack, constants = stack, constants;
  265. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  266. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  267. stack[instruction.A][B] = C
  268. end,
  269. [10] = function (instruction)
  270. stack[instruction.A] = {}
  271. end,
  272. [11] = function (instruction)
  273. local A = instruction.A
  274. local B = instruction.B
  275. local C = instruction.C
  276. local stack = stack
  277. B = stack[B]
  278. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  279. stack[A+1] = B
  280. stack[A] = B[C]
  281. end,
  282. [12] = function(instruction)
  283. local B = instruction.B;
  284. local C = instruction.C;
  285. local stack, constants = stack, constants;
  286. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  287. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  288. stack[instruction.A] = B+C;
  289. end,
  290. [13] = function(instruction)
  291. local B = instruction.B;
  292. local C = instruction.C;
  293. local stack, constants = stack, constants;
  294. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  295. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  296. stack[instruction.A] = B - C;
  297. end,
  298. [14] = function(instruction)
  299. local B = instruction.B;
  300. local C = instruction.C;
  301. local stack, constants = stack, constants;
  302. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  303. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  304. stack[instruction.A] = B * C;
  305. end,
  306. [15] = function(instruction)
  307. local B = instruction.B;
  308. local C = instruction.C;
  309. local stack, constants = stack, constants;
  310. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  311. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  312. stack[instruction.A] = B / C;
  313. end,
  314. [16] = function(instruction)
  315. local B = instruction.B;
  316. local C = instruction.C;
  317. local stack, constants = stack, constants;
  318. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  319. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  320. stack[instruction.A] = B % C;
  321. end,
  322. [17] = function(instruction)
  323. local B = instruction.B;
  324. local C = instruction.C;
  325. local stack, constants = stack, constants;
  326. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B];
  327. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C];
  328. stack[instruction.A] = B ^ C;
  329. end,
  330. [18] = function(instruction)
  331. stack[instruction.A] = -stack[instruction.B]
  332. end,
  333. [19] = function(instruction)
  334. stack[instruction.A] = not stack[instruction.B]
  335. end,
  336. [20] = function(instruction)
  337. stack[instruction.A] = #stack[instruction.B]
  338. end,
  339. [21] = function(instruction)
  340. local B = instruction.B
  341. local result = stack[B]
  342. for i = B+1, instruction.C do
  343. result = result .. stack[i]
  344. end
  345. stack[instruction.A] = result
  346. end,
  347. [22] = function(instruction)
  348. IP = IP + instruction.sBx
  349. end,
  350. [23] = function(instruction)
  351. local A = instruction.A
  352. local B = instruction.B
  353. local C = instruction.C
  354. local stack, constants = stack, constants
  355. A = A ~= 0
  356. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  357. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  358. if (B == C) ~= A then
  359. IP = IP + 1
  360. end
  361. end,
  362. [24] = function(instruction)
  363. local A = instruction.A
  364. local B = instruction.B
  365. local C = instruction.C
  366. local stack, constants = stack, constants
  367. A = A ~= 0
  368. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  369. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  370. if (B < C) ~= A then
  371. IP = IP + 1
  372. end
  373. end,
  374. [25] = function(instruction)
  375. local A = instruction.A
  376. local B = instruction.B
  377. local C = instruction.C
  378. local stack, constants = stack, constants
  379. A = A ~= 0
  380. B = B > 255 and constants[B-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[B]
  381. C = C > 255 and constants[C-256].llIIlIlIIllllIlIlIlIIlIlIlIllllIllI or stack[C]
  382. if (B <= C) ~= A then
  383. IP = IP + 1
  384. end
  385. end,
  386. [26] = function(instruction)
  387. if stack[instruction.A] == (instruction.C ~= 0) then
  388. IP = IP + 1
  389. end
  390. end,
  391. [27] = function(instruction)
  392. local stack = stack
  393. local B = stack[instruction.B]
  394. if B == (instruction.C ~= 0) then
  395. IP = IP + 1
  396. else
  397. stack[instruction.A] = B
  398. end
  399. end,
  400. [28] = function(instruction)
  401. local A = instruction.A;
  402. local B = instruction.B;
  403. local C = instruction.C;
  404. local stack = stack;
  405. local args, results;
  406. local limit, loop
  407. args = {};
  408. if B ~= 1 then
  409. if B ~= 0 then
  410. limit = A+B-1;
  411. else
  412. limit = top
  413. end
  414. loop = 0
  415. for i = A+1, limit do
  416. loop = loop + 1
  417. args[loop] = stack[i];
  418. end
  419. limit, results = handle_return(stack[A](unpack(args, 1, limit-A)))
  420. else
  421. limit, results = handle_return(stack[A]())
  422. end
  423. top = A - 1
  424. if C ~= 1 then
  425. if C ~= 0 then
  426. limit = A+C-2;
  427. else
  428. limit = limit+A
  429. end
  430. loop = 0;
  431. for i = A, limit do
  432. loop = loop + 1;
  433. stack[i] = results[loop];
  434. end
  435. end
  436. end,
  437. [29] = function (instruction)
  438. local A = instruction.A;
  439. local B = instruction.B;
  440. local C = instruction.C;
  441. local stack = stack;
  442. local args, results;
  443. local top, limit, loop = top
  444. args = {};
  445. if B ~= 1 then
  446. if B ~= 0 then
  447. limit = A+B-1;
  448. else
  449. limit = top
  450. end
  451. loop = 0
  452. for i = A+1, limit do
  453. loop = loop + 1
  454. args[#args+1] = stack[i];
  455. end
  456. results = {stack[A](unpack(args, 1, limit-A))};
  457. else
  458. results = {stack[A]()};
  459. end
  460. return true, results
  461. end,
  462. [30] = function(instruction)
  463. local A = instruction.A;
  464. local B = instruction.B;
  465. local stack = stack;
  466. local limit;
  467. local loop, IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI;
  468. if B == 1 then
  469. return true;
  470. end
  471. if B == 0 then
  472. limit = top
  473. else
  474. limit = A + B - 2;
  475. end
  476. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = {};
  477. local loop = 0
  478. for i = A, limit do
  479. loop = loop + 1
  480. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI[loop] = stack[i];
  481. end
  482. return true, IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI;
  483. end,
  484. [31] = function(instruction)
  485. local A = instruction.A
  486. local stack = stack
  487. local step = stack[A+2]
  488. local index = stack[A] + step
  489. stack[A] = index
  490. if step > 0 then
  491. if index <= stack[A+1] then
  492. IP = IP + instruction.sBx
  493. stack[A+3] = index
  494. end
  495. else
  496. if index >= stack[A+1] then
  497. IP = IP + instruction.sBx
  498. stack[A+3] = index
  499. end
  500. end
  501. end,
  502. [32] = function(instruction)
  503. local A = instruction.A
  504. local stack = stack
  505. stack[A] = stack[A] - stack[A+2]
  506. IP = IP + instruction.sBx
  507. end,
  508. [33] = function(instruction)
  509. local A = instruction.A
  510. local B = instruction.B
  511. local C = instruction.C
  512. local stack = stack
  513. local offset = A+2
  514. local result = {stack[A](stack[A+1], stack[A+2])}
  515. for i = 1, C do
  516. stack[offset+i] = result[i]
  517. end
  518. if stack[A+3] ~= nil then
  519. stack[A+2] = stack[A+3]
  520. else
  521. IP = IP + 1
  522. end
  523. end,
  524. [34] = function(instruction)
  525. local A = instruction.A
  526. local B = instruction.B
  527. local C = instruction.C
  528. local stack = stack
  529. if C == 0 then
  530. error("NYI: extended SETLIST")
  531. else
  532. local offset = (C - 1) * 50
  533. local t = stack[A]
  534. if B == 0 then
  535. B = top
  536. end
  537. for i = 1, B do
  538. t[offset+i] = stack[A+i]
  539. end
  540. end
  541. end,
  542. [35] = function(instruction)
  543. io.stderr:write("NYI: CLOSE")
  544. io.stderr:flush()
  545. end,
  546. [36] = function(instruction)
  547. local proto = prototypes[instruction.Bx]
  548. local instructions = instructions
  549. local stack = stack
  550. local indices = {}
  551. local new_upvals = setmetatable({},
  552. {
  553. __index = function(t, k)
  554. local upval = indices[k]
  555. return upval.segment[upval.offset]
  556. end,
  557. __newindex = function(t, k, v)
  558. local upval = indices[k]
  559. upval.segment[upval.offset] = v
  560. end
  561. }
  562. )
  563. for i = 1, proto.upvalues do
  564. local movement = instructions[IP]
  565. if movement.opcode == 0 then
  566. indices[i-1] = {segment = stack, offset = movement.B}
  567. elseif instructions[IP].opcode == 4 then
  568. indices[i-1] = {segment = upvalues, offset = movement.B}
  569. end
  570. IP = IP + 1
  571. end
  572. local _, func = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(proto, new_upvals)
  573. stack[instruction.A] = func
  574. end,
  575. [37] = function(instruction)
  576. local A = instruction.A
  577. local B = instruction.B
  578. local stack, vararg = stack, vararg
  579.  
  580. for i = A, A + (B > 0 and B - 1 or vararg_size) do
  581. stack[i] = vararg[i - A]
  582. end
  583. end,
  584. }
  585. local function loop()
  586. local instructions = instructions
  587. local instruction, a, b
  588. while true do
  589. instruction = instructions[IP];
  590. IP = IP + 1
  591. a, b = opcode_funcs[instruction.opcode](instruction);
  592. if a then
  593. return b;
  594. end
  595. end
  596. end
  597. local IIIIIIIlIlIIlllIIlIlIIIllIIlIIIlIlI = {
  598. get_stack = function()
  599. return stack;
  600. end;
  601. get_IP = function()
  602. return IP;
  603. end
  604. };
  605. local function func(...)
  606. local local_stack = {};
  607. local ghost_stack = {};
  608. top = -1
  609. stack = setmetatable(local_stack, {
  610. __index = ghost_stack;
  611. __newindex = function(t, k, v)
  612. if k > top and v then
  613. top = k
  614. end
  615. ghost_stack[k] = v
  616. end;
  617. })
  618. local args = {...};
  619. vararg = {}
  620. vararg_size = select("#", ...) - 1
  621. for i = 0, vararg_size do
  622. local_stack[i] = args[i+1];
  623. vararg[i] = args[i+1]
  624. end
  625. environment = getfenv();
  626. IP = 1;
  627. local thread = coroutine.create(loop)
  628. local a, b = coroutine.resume(thread)
  629. if a then
  630. if b then
  631. return unpack(b);
  632. end
  633. return;
  634. else
  635. local name = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.name;
  636. local line = IIllIlIIIlIlllllIIIlIIlllllIllllIlI.debug.lines[IP];
  637. local err = b:gsub("(.-:)", "");
  638. local IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = "";
  639. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. (name and name .. ":" or "");
  640. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. (line and line .. ":" or "");
  641. IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI = IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI .. b
  642. error(IlllIlIIIIIlIIIlIllIIIIlIllIllIlIlI, 0);
  643. end
  644. end
  645. return IIIIIIIlIlIIlllIIlIlIIIllIIlIIIlIlI, func;
  646. end
  647. local lIlIlIlIlIllIIIllIlIIlllIIlllIlIIII = {
  648. IlIIIIIIlIllIIlIlIIIllIllIIlllIllll = function(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  649. local IIllIlIIIlIlllllIIIlIIlllllIllllIlI = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll);
  650. local _, func = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI);
  651. return func;
  652. end;
  653. utils = {
  654. lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll;
  655. IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl = IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl;
  656. IlllIIIllIlllIlIIIllllIIllllIIllllI = function(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  657. local IIllIlIIIlIlllllIIIlIIlllllIllllIlI = lIlIIIlllIlIIIIlIIIllIlIIIIIlIlIlll(IlIlllllllIllIlIllIlIlllIIIIIlIIlll)
  658. return IIllIllIlIIIIIIIIllIlIIIIlllIIIIIIl(IIllIlIIIlIlllllIIIlIIlllllIllllIlI);
  659. end;
  660. };
  661. }
  662. lIlIlIlIlIllIIIllIlIIlllIIlllIlIIII.IlIIIIIIlIllIIlIlIIIllIllIIlllIllll(table.concat(llIIlIlIIllllIlIlIlIIlIlIlIllllIllI, [[]]))()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement