Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.31 KB | None | 0 0
  1. contract Contract {
  2.  
  3. function main() {
  4. memory[0x40:0x60] = 0x80;
  5.  
  6. if (msg.data.length < 0x04) { revert(memory[0x00:0x00]); }
  7.  
  8. var var0 = msg.data[0x00:0x20] / 0x0100000000000000000000000000000000000000000000000000000000 & 0xffffffff;
  9.  
  10.  
  11. if (var0 == 0x2150c518) {
  12. // Dispatch table entry for getKeys()
  13. var var1 = msg.value;
  14.  
  15. if (var1) { revert(memory[0x00:0x00]); }
  16.  
  17. var1 = 0x009c;
  18. var1 = getKeys();
  19. var temp0 = memory[0x40:0x60];
  20. memory[temp0:temp0 + 0x20] = 0x20;
  21. var temp1 = var1;
  22. memory[temp0 + 0x20:temp0 + 0x20 + 0x20] = memory[temp1:temp1 + 0x20];
  23. var var2 = temp0;
  24. var var3 = var2;
  25. var var4 = var3 + 0x40;
  26. var var5 = temp1 + 0x20;
  27. var var6 = memory[temp1:temp1 + 0x20] * 0x20;
  28. var var7 = var6;
  29. var var8 = var4;
  30. var var9 = var5;
  31. var var10 = 0x00;
  32.  
  33. if (var10 >= var7) {
  34. label_00D8:
  35. var temp2 = memory[0x40:0x60];
  36. return memory[temp2:temp2 + (var6 + var4) - temp2];
  37. } else {
  38. label_00C9:
  39. var temp3 = var10;
  40. memory[temp3 + var8:temp3 + var8 + 0x20] = memory[temp3 + var9:temp3 + var9 + 0x20];
  41. var10 = temp3 + 0x20;
  42.  
  43. if (var10 >= var7) { goto label_00D8; }
  44. else { goto label_00C9; }
  45. }
  46.  
  47. } else if (var0 == 0x29092d0e) {
  48. // Dispatch table entry for remove(address)
  49. var1 = msg.value;
  50.  
  51. if (var1) { revert(memory[0x00:0x00]); }
  52.  
  53. var1 = 0x010d;
  54. var2 = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01;
  55. remove(var2);
  56. stop();
  57.  
  58. } else if (var0 == 0x2d580ef6) {
  59. // Dispatch table entry for add(address,bytes32)
  60. var1 = msg.value;
  61.  
  62. if (var1) { revert(memory[0x00:0x00]); }
  63.  
  64. var1 = 0x010d;
  65. var2 = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01;
  66. var3 = msg.data[0x24:0x44];
  67. add(var2, var3);
  68. stop();
  69.  
  70. } else if (var0 == 0x2d883a73) {
  71. // Dispatch table entry for getByIndex(uint256)
  72. var1 = msg.value;
  73.  
  74. if (var1) { revert(memory[0x00:0x00]); }
  75.  
  76. var1 = 0x014b;
  77. var2 = msg.data[0x04:0x24];
  78. var1 = getByIndex(var2);
  79.  
  80. label_014B:
  81. var temp4 = memory[0x40:0x60];
  82. memory[temp4:temp4 + 0x20] = var1;
  83. var temp5 = memory[0x40:0x60];
  84. return memory[temp5:temp5 + temp4 - temp5 + 0x20];
  85.  
  86. } else if (var0 == 0x49877038) {
  87. // Dispatch table entry for 0x49877038 (unknown)
  88. var1 = msg.value;
  89.  
  90. if (var1) { revert(memory[0x00:0x00]); }
  91.  
  92. var1 = 0x014b;
  93. var2 = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01;
  94. var1 = func_0443(var2);
  95. goto label_014B;
  96.  
  97. } else if (var0 == 0x5dbe47e8) {
  98. // Dispatch table entry for contains(address)
  99. var1 = msg.value;
  100.  
  101. if (var1) { revert(memory[0x00:0x00]); }
  102.  
  103. var1 = 0x019f;
  104. var2 = msg.data[0x04:0x24] & 0x02 ** 0xa0 - 0x01;
  105. var1 = contains(var2);
  106. var temp6 = memory[0x40:0x60];
  107. memory[temp6:temp6 + 0x20] = !!var1;
  108. var temp7 = memory[0x40:0x60];
  109. return memory[temp7:temp7 + temp6 - temp7 + 0x20];
  110.  
  111. } else if (var0 == 0x949d225d) {
  112. // Dispatch table entry for size()
  113. var1 = msg.value;
  114.  
  115. if (var1) { revert(memory[0x00:0x00]); }
  116.  
  117. var1 = 0x014b;
  118. var1 = size();
  119. goto label_014B;
  120. } else { revert(memory[0x00:0x00]); }
  121. }
  122.  
  123.  
  124. function getKeys() returns (var r0) {
  125. var var0 = 0x60;
  126. var temp0 = storage[0x01];
  127. var temp1 = memory[0x40:0x60];
  128. memory[0x40:0x60] = temp1 + temp0 * 0x20 + 0x20;
  129. var var1 = temp1;
  130. var var2 = 0x01;
  131. var var3 = temp0;
  132. memory[var1:var1 + 0x20] = var3;
  133. var var4 = var1 + 0x20;
  134. var var5 = var2;
  135. var var6 = storage[var5];
  136.  
  137. if (!var6) {
  138. label_0220:
  139. return var1;
  140. } else {
  141. var temp2 = var4;
  142. var temp3 = temp2 + var6 * 0x20;
  143. var4 = temp3;
  144. memory[0x00:0x20] = var5;
  145. var temp4 = keccak256(memory[0x00:0x20]);
  146. memory[temp2:temp2 + 0x20] = storage[temp4] & 0x02 ** 0xa0 - 0x01;
  147. var5 = temp4 + 0x01;
  148. var6 = temp2 + 0x20;
  149.  
  150. if (var4 <= var6) { goto label_0220; }
  151.  
  152. label_0202:
  153. var temp5 = var5;
  154. var temp6 = var6;
  155. memory[temp6:temp6 + 0x20] = storage[temp5] & 0x02 ** 0xa0 - 0x01;
  156. var5 = temp5 + 0x01;
  157. var6 = temp6 + 0x20;
  158.  
  159. if (var4 > var6) { goto label_0202; }
  160. else { goto label_0220; }
  161. }
  162. }
  163.  
  164.  
  165. function remove(var arg0) {
  166. memory[0x00:0x20] = arg0 & 0x02 ** 0xa0 - 0x01;
  167. memory[0x20:0x40] = 0x00;
  168. var var0 = keccak256(memory[0x00:0x40]);
  169. var var1 = 0x00;
  170. var var2 = var1;
  171.  
  172. if (!storage[var0]) { revert(memory[0x00:0x00]); }
  173.  
  174. if (storage[var0] > storage[0x01]) { revert(memory[0x00:0x00]); }
  175.  
  176. var temp0 = storage[0x01];
  177. var temp1 = ~0x00;
  178. var1 = storage[var0] + temp1;
  179. var2 = temp0 + temp1;
  180. var var3 = storage[var0];
  181. var var6 = 0x01;
  182. var var4 = 0x00;
  183. var var5 = var4;
  184. var var7 = var2;
  185.  
  186. if (var7 >= temp0) { assert(); }
  187.  
  188. memory[0x00:0x20] = var6;
  189. var temp2 = var5;
  190. memory[temp2:temp2 + 0x20] = storage[var7 + keccak256(memory[0x00:0x20])] & 0x02 ** 0xa0 - 0x01;
  191. memory[temp2 + 0x20:temp2 + 0x20 + 0x20] = var4;
  192. storage[keccak256(memory[0x00:0x00 + temp2 + 0x40])] = var3;
  193. var3 = 0x01;
  194. var4 = var2;
  195.  
  196. if (var4 >= storage[var3]) { assert(); }
  197.  
  198. memory[0x00:0x20] = var3;
  199. var temp3 = storage[keccak256(memory[0x00:0x20]) + var4];
  200. var4 = 0x01;
  201. var3 = temp3 & 0x02 ** 0xa0 - 0x01;
  202. var5 = var1;
  203.  
  204. if (var5 >= storage[var4]) { assert(); }
  205.  
  206. memory[0x00:0x20] = var4;
  207. var temp4 = keccak256(memory[0x00:0x20]) + var5;
  208. storage[temp4] = (var3 & 0x02 ** 0xa0 - 0x01) | (storage[temp4] & ~0xffffffffffffffffffffffffffffffffffffffff);
  209. var3 = storage[0x01];
  210. var5 = 0x01;
  211. var4 = 0x032b;
  212. var6 = var3 + ~0x00;
  213. func_0483(var5, var6);
  214. memory[0x00:0x20] = arg0 & 0x02 ** 0xa0 - 0x01;
  215. memory[0x20:0x40] = 0x00;
  216. var temp5 = keccak256(memory[0x00:0x40]);
  217. storage[temp5] = 0x00;
  218. storage[temp5 + 0x01] = 0x00;
  219. }
  220.  
  221.  
  222. function add(var arg0, var arg1) {
  223. memory[0x00:0x20] = arg0 & 0x02 ** 0xa0 - 0x01;
  224. memory[0x20:0x40] = 0x00;
  225. var temp0 = keccak256(memory[0x00:0x40]);
  226. storage[temp0 + 0x01] = arg1;
  227. var var0 = temp0;
  228. var var1 = 0x00;
  229.  
  230. if (var1 < storage[var0]) { return; }
  231.  
  232. var temp1 = storage[0x01];
  233. storage[0x01] = temp1 + 0x01;
  234. memory[0x00:0x20] = 0x01;
  235. var temp2 = temp1 + 0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6;
  236. storage[temp2] = (arg0 & 0x02 ** 0xa0 - 0x01) | (storage[temp2] & ~0xffffffffffffffffffffffffffffffffffffffff);
  237. storage[var0] = storage[0x01];
  238. }
  239.  
  240.  
  241. function getByIndex(var arg0) returns (var r0) {
  242. var var0 = 0x00;
  243.  
  244. if (arg0 < var0) { revert(memory[0x00:0x00]); }
  245.  
  246. if (arg0 >= storage[0x01]) { revert(memory[0x00:0x00]); }
  247.  
  248. var var1 = 0x00;
  249. var var2 = var1;
  250. var var3 = 0x01;
  251. var var4 = arg0;
  252.  
  253. if (var4 >= storage[var3]) { assert(); }
  254.  
  255. memory[0x00:0x20] = var3;
  256. var temp0 = var2;
  257. memory[temp0:temp0 + 0x20] = storage[var4 + keccak256(memory[0x00:0x20])] & 0x02 ** 0xa0 - 0x01;
  258. memory[temp0 + 0x20:temp0 + 0x20 + 0x20] = var1;
  259. return storage[keccak256(memory[0x00:0x00 + temp0 + 0x40]) + 0x01];
  260. }
  261.  
  262.  
  263. function func_0443(var arg0) returns (var r0) {
  264. memory[0x00:0x20] = arg0 & 0x02 ** 0xa0 - 0x01;
  265. memory[0x20:0x40] = 0x00;
  266. return storage[keccak256(memory[0x00:0x40]) + 0x01];
  267. }
  268.  
  269.  
  270. function contains(var arg0) returns (var r0) {
  271. memory[0x00:0x20] = arg0 & 0x02 ** 0xa0 - 0x01;
  272. memory[0x20:0x40] = 0x00;
  273. return storage[keccak256(memory[0x00:0x40])] > 0x00;
  274. }
  275.  
  276.  
  277. function size() returns (var r0) { return storage[0x01]; }
  278.  
  279.  
  280. function func_0483(var arg0, var arg1) {
  281. var temp0 = arg0;
  282. var temp1 = storage[temp0];
  283. var var0 = temp1;
  284. var temp2 = arg1;
  285. storage[temp0] = temp2;
  286.  
  287. if (var0 <= temp2) {
  288. label_04A7:
  289. return;
  290. } else {
  291. memory[0x00:0x20] = arg0;
  292. var temp3 = keccak256(memory[0x00:0x20]);
  293. var temp4 = var0;
  294. var0 = 0x04a7;
  295. var var1 = temp3 + temp4;
  296. var var2 = arg1 + temp3;
  297. var0 = func_04AC(var1, var2);
  298. goto label_04A7;
  299. }
  300. }
  301.  
  302.  
  303. function func_04AC(var arg0, var arg1) returns (var r0) {
  304. var temp0 = arg0;
  305. arg0 = 0x0228;
  306. var temp1 = arg1;
  307. var var0 = temp1;
  308. arg1 = temp0;
  309.  
  310. if (arg1 <= var0) { return func_04C6(arg1, var0); }
  311.  
  312. label_04BB:
  313. var temp2 = var0;
  314. storage[temp2] = 0x00;
  315. var0 = temp2 + 0x01;
  316.  
  317. if (arg1 > var0) { goto label_04BB; }
  318.  
  319. arg0 = func_04C6(arg1, var0);
  320. // Error: Could not resolve method call return address!
  321. }
  322.  
  323.  
  324. function func_04C6(var arg0, var arg1) returns (var r0) { return arg0; }
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement