Advertisement
XBloits

Bruhhhhhhhhhh

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