Skip to content

Instantly share code, notes, and snippets.

@pcaversaccio
Last active September 17, 2023 14:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pcaversaccio/f97e0c972adb1ff3fc1596433a647dc1 to your computer and use it in GitHub Desktop.
Save pcaversaccio/f97e0c972adb1ff3fc1596433a647dc1 to your computer and use it in GitHub Desktop.
Decompiled contract 0x732e9b5f59C9A442Db18F7D57Dd2BBFC804281CB. I used the Dedaub Decompiler (https://library.dedaub.com/decompile).
// Decompiled by library.dedaub.com
// 2022.11.28 11:00 UTC
// Data structures and variables inferred from the use of storage instructions
uint256 owner_0_0_19; // STORAGE[0x0] bytes 0 to 19
uint256 owner_1_0_19; // STORAGE[0x1] bytes 0 to 19
function () public payable {
revert();
}
function 0x52259cdd(uint256 varg0, uint256 varg1, uint256 varg2) public payable {
require(4 + (msg.data.length - 4) - 4 >= 96);
require(varg0 == address(varg0));
require(varg1 <= 0xffffffffffffffff);
require(4 + varg1 + 31 < 4 + (msg.data.length - 4));
require(varg1.length <= 0xffffffffffffffff);
require(4 + varg1 + 32 + (varg1.length << 5) <= 4 + (msg.data.length - 4));
require(varg2 <= 0xffffffffffffffff);
require(4 + varg2 + 31 < 4 + (msg.data.length - 4));
require(varg2.length <= 0xffffffffffffffff);
require(4 + varg2 + 32 + (varg2.length << 5) <= 4 + (msg.data.length - 4));
0x73(varg2.length, 4 + varg2 + 32, varg1.length, 4 + varg1 + 32, varg0);
}
function 0xbf406e79(uint256 varg0, uint256 varg1) public payable {
require(4 + (msg.data.length - 4) - 4 >= 64);
require(varg0 == address(varg0));
require(varg1 == address(varg1));
v0 = v1 = msg.sender == owner_0_0_19;
if (msg.sender != owner_0_0_19) {
v0 = msg.sender == owner_1_0_19;
}
require(v0, Error('Not owner'));
v2 = address(varg1).call().gas(2300);
require(v2); // checks call status, propagates error data on error
v3 = address(varg0).call().gas(2300);
require(v3); // checks call status, propagates error data on error
}
function 0x73(uint256 varg0, uint256 varg1, uint256 varg2, uint256 varg3, uint256 varg4) private {
v0 = v1 = msg.sender == owner_0_0_19;
if (msg.sender != owner_0_0_19) {
v0 = v2 = msg.sender == owner_1_0_19;
}
require(v0, Error('Not owner'));
require(varg2 == varg0);
v3 = v4 = 0;
while (v3 < varg2) {
if (v3 < varg2) {
break;
}
require(v3 < varg2, Panic(50));
v5 = (v3 << 5) + varg3;
if (v5 + 32 - v5 >= 32) {
break;
}
require(v5 + 32 - v5 >= 32);
require(msg.data[v5 + 0] == address(msg.data[v5 + 0]));
require(v3 < varg0, Panic(50));
v6 = (v3 << 5) + varg1;
require(v6 + 32 - v6 >= 32);
require(msg.data[v6 + 0] == address(msg.data[v6 + 0]));
v7 = v8 = 0;
while (v7 < 100) {
MEM[MEM[64] + v7] = MEM[MEM[64] + 32 + v7];
v7 = v7 + 32;
}
if (v7 > 100) {
MEM[MEM[64] + 100] = 0;
}
v9, v10 = address(varg4).transferFrom(address(msg.data[v5 + 0]), address(msg.data[v6 + 0]), 0).gas(msg.gas);
if (RETURNDATASIZE() != 0) {
v11 = new bytes[](RETURNDATASIZE());
RETURNDATACOPY(v11.data, 0, RETURNDATASIZE());
}
require(v9);
require(v3 != 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, Panic(17));
v3 = v3 + 1;
}
return ;
}
// Note: The function selector is not present in the original solidity code.
// However, we display it for the sake of completeness.
function __function_selector__(bytes4 function_selector) public payable {
MEM[64] = 128;
require(!msg.value);
if (msg.data.length >= 4) {
if (0x52259cdd == function_selector >> 224) {
0x52259cdd();
} else if (0xbf406e79 == function_selector >> 224) {
0xbf406e79();
}
}
();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment