0x22c4180d0d4fe3967abd56038a3e2a925f3c6da2
deployer: unknown
relevance score: 0
status: partially_identified
bytecode: 4460 bytes
DECOMPILED SOLIDITY (Heimdall)
VERIFY
// SPDX-License-Identifier: MIT
pragma solidity > = 0.8 . 0 ;
/// @title Decompiled Contract
/// @author Jonathan Becker <jonathan@jbecker.dev>
/// @custom:version heimdall-rs v0.9.2
///
/// @notice This contract was decompiled using the heimdall-rs decompiler.
/// It was generated directly by tracing the EVM opcodes from this contract.
/// As a result, it may not compile or even be valid solidity code.
/// Despite this, it should be obvious what each function does. Overall
/// logic should have been preserved throughout decompiling.
///
/// @custom:github You can find the open-source decompiler here:
/// https://heimdall.rs
contract DecompiledContract {
uint256 public constant unresolved_40df7b57 = 10000 ;
uint256 public constant unresolved_cf72af38 = 9971 ;
address store_b;
bytes32 store_a;
mapping ( bytes32 = > bytes32 ) storage_map_d;
mapping ( bytes32 = > bytes32 ) storage_map_c;
/// @custom:selector 0xb60c164c
/// @custom:signature Unresolved_b60c164c(uint256 arg0, address arg1) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["address", "uint160", "bytes20", "int160"]
function Unresolved_b60c164c( uint256 arg0, address arg1) public payable {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x20 ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
require ( 0 < ( arg0) ) ;
require ( ! 0 < ( arg0) ) ;
require ( ( 0 + ( arg0 + 0x20 ) ) - ( address ( 0 + ( arg0 + 0x20 ) ) ) ) ;
address var_b = address ( this) ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . Unresolved_70a08231( var_b) ; // staticcall
var_b = address ( store_b) ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . Unresolved_a9059cbb( var_b) ; // call
require ( 0x20 > ret0. length) ;
require ( ( ( var_e + 0x20 ) > 0xffffffffffffffff ) | ( ( var_e + 0x20 ) < var_e) ) ;
uint256 var_e = var_e + 0x20 ;
require ( ( ( var_e + 0x20 ) - var_e) < 0x20 ) ;
require ( var_e. length - var_e. length) ;
require ( 0x20 > ret0. length) ;
require ( ( ( var_e + 0x20 ) > 0xffffffffffffffff ) | ( ( var_e + 0x20 ) < var_e) ) ;
var_e = var_e + 0x20 ;
require ( ( ( var_e + 0x20 ) - var_e) < 0x20 ) ;
var_c = address ( store_b) ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . Unresolved_a9059cbb( var_c) ; // call
if ( 0x20 > ret0. length) {
}
}
/// @custom:selector 0x9d851408
/// @custom:signature Unresolved_9d851408(uint256 arg0, uint256 arg1) public view
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function Unresolved_9d851408 ( uint256 arg0, uint256 arg1) public view {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x40 ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( arg1 - arg1) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
require ( 0 < ( arg0) ) ;
require ( ! 0 < ( arg0) ) ;
require ( ( 0 + ( arg0 + 0x20 ) ) - ( address ( 0 + ( arg0 + 0x20 ) ) ) ) ;
}
/// @custom:selector 0x718da7ee
/// @custom:signature setReceiver(address arg0) public payable returns (uint256)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function setReceiver( address arg0) public payable returns ( uint256 ) {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x20 ) ;
require ( arg0 - ( address ( arg0) ) ) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
store_b = ( uint96 ( store_b) ) | ( address ( arg0) ) ;
return ;
}
/// @custom:selector 0x1e1bff3f
/// @custom:signature Unresolved_1e1bff3f(address arg0, uint256 arg1) public payable
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
/// @param arg1 ["uint256", "bytes32", "int256"]
function Unresolved_1e1bff3f( address arg0, uint256 arg1) public payable {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x40 ) ;
require ( arg0 - ( address ( arg0) ) ) ;
require ( arg1 - arg1) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
address var_e = address ( arg0) ;
storage_map_c[ var_e] = ( bytes1 ( arg1) ) | ( uint248 ( storage_map_c[ var_e] ) ) ;
}
/// @custom:selector 0x48c7e528
/// @custom:signature executor(address arg0) public view returns (bool)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function executor( address arg0) public view returns ( bool ) {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x20 ) ;
require ( arg0 - ( address ( arg0) ) ) ;
address var_a = address ( arg0) ;
return ! ( ! bytes1 ( storage_map_d[ var_a] ) ) ;
}
/// @custom:selector 0xd76f529c
/// @custom:signature drain(address[] arg0, address arg1) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["address", "uint160", "bytes20", "int160"]
function drain( address [ ] arg0, address arg1) public payable {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0x40 ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( arg0 > 0xffffffffffffffff ) ;
require ( arg1 - ( address ( arg1) ) ) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
require ( 0 < ( arg0) ) ;
require ( ! 0 < ( arg0) ) ;
require ( ( 0 + ( arg0 + 0x20 ) ) - ( address ( 0 + ( arg0 + 0x20 ) ) ) ) ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . token0( ) ; // staticcall
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . token1( ) ; // staticcall
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . getReserves( ) ; // staticcall
require ( 0 = = ( 0 = = ( address ( arg1) ) ) ) ;
address var_b = address ( this) ;
( bool success, bytes memory ret0) = address ( 0 ) . Unresolved_70a08231( var_b) ; // staticcall
require ( ! 0 ) ;
var_b = address ( 0 + ( arg0 + 0x20 ) ) ;
( bool success, bytes memory ret0) = address ( 0 ) . Unresolved_a9059cbb( var_b) ; // call
require ( ! address ( 0 + ( arg0 + 0x20 ) ) . code. length) ;
var_b = 0 ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . Unresolved_022c0d9f( var_b) ; // call
require ( ( ( var_g + 0 ) > 0xffffffffffffffff ) | ( ( var_g + 0 ) < var_g) ) ;
require ( 0x20 > ret0. length) ;
require ( ( ( var_g + 0x20 ) > 0xffffffffffffffff ) | ( ( var_g + 0x20 ) < var_g) ) ;
uint256 var_g = var_g + 0x20 ;
require ( ( ( var_g + 0x20 ) - var_g) < 0x20 ) ;
require ( var_g. length - var_g. length) ;
require ( 0x20 > ret0. length) ;
require ( ( ( var_g + 0x20 ) > 0xffffffffffffffff ) | ( ( var_g + 0x20 ) < var_g) ) ;
var_g = var_g + 0x20 ;
require ( ( ( var_g + 0x20 ) - var_g) < 0x20 ) ;
require ( ! 0 + ( 0x26f3 * var_g. length) ) ;
var_c = address ( 0 + ( arg0 + 0x20 ) ) ;
( bool success, bytes memory ret0) = address ( 0 ) . Unresolved_a9059cbb( var_c) ; // call
require ( ! address ( 0 + ( arg0 + 0x20 ) ) . code. length) ;
var_c = 0 ;
( bool success, bytes memory ret0) = address ( 0 + ( arg0 + 0x20 ) ) . Unresolved_022c0d9f( var_c) ; // call
if ( 0x20 > ret0. length) {
}
var_b = address ( this) ;
( bool success, bytes memory ret0) = address ( 0 ) . balanceOf( var_b) ; // staticcall
require ( ! 0 ) ;
var_b = address ( 0 + ( arg0 + 0x20 ) ) ;
( bool success, bytes memory ret0) = address ( 0 ) . many_msg_babbage( var_b) ; // call
if ( 0x20 > ret0. length) {
}
if ( 0x20 > ret0. length) {
}
if ( 0x60 > ret0. length) {
}
if ( 0x20 > ret0. length) {
}
if ( 0x20 > ret0. length) {
}
}
/// @custom:selector 0x8da3aba3
/// @custom:signature skimEth() public payable
function skimEth( ) public payable {
require ( msg. value) ;
require ( ( msg. data. length + 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc ) < 0 ) ;
require ( ! ( msg. sender = = ( address ( store_a) ) ) , "NA" ) ;
( bool success, bytes memory ret0) = address ( store_b) . transfer( address ( this) . balance) ;
require ( ! ret0. length, "ETH transfer failed" ) ;
if ( ret0. length > 0xffffffffffffffff ) {
if ( ( ( var_g + ( uint248 ( ( ( ret0. length + 0x1f ) + 0x20 ) + 0x1f ) ) ) > 0xffffffffffffffff ) | ( ( var_g + ( uint248 ( ( ( ret0. length + 0x1f ) + 0x20 ) + 0x1f ) ) ) < var_g) ) {
}
}
}
}
ABI
[
{
"type": "function",
"name": "Unresolved_1e1bff3f",
"inputs": [
{
"name": "arg0",
"type": "address"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "Unresolved_40df7b57",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "Unresolved_9d851408",
"inputs": [
{
"name": "arg0",
"type": "uint256"
},
{
"name": "arg1",
"type": "uint256"
}
],
"outputs": [],
"stateMutability": "view"
},
{
"type": "function",
"name": "Unresolved_b60c164c",
"inputs": [
{
"name": "arg0",
"type": "uint256"
},
{
"name": "arg1",
"type": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "Unresolved_cf72af38",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "drain",
"inputs": [
{
"name": "arg0",
"type": "address[]"
},
{
"name": "arg1",
"type": "address"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "function",
"name": "executor",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "setReceiver",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable"
},
{
"type": "function",
"name": "skimEth",
"inputs": [],
"outputs": [],
"stateMutability": "payable"
}
]
UNKNOWN SELECTORS (7)
0xd76f529c unknown 0x40df7b57 unknown 0xe70ccf6d unknown 0x8da3aba3 unknown 0xcf72af38 unknown 0x48c7e528 unknown 0x9d851408 unknown
These selectors are not yet in the research database — they are being
investigated and will be added as known functions once identified. They are also marked
in red in the decompiled Solidity above.
KNOWN CLUSTER ADDRESSES IN THIS BYTECODE (0)
VERIFY
CSV
on-chain verify terminal
ⓘ
Query any address live from your own browser. code/owner/symbol/supply/storage/impl read directly from the PulseChain RPC - these are live on-chain facts anyone can reproduce. An address can be a wallet (EOA) or a contract ; use code <addr> to tell them apart (no code = wallet). The trace command is different: it uses a pre-scanned dataset (not live), still being expanded block-by-block, so some addresses aren't in it yet. Nothing is sent or logged.
✕
pDAI-1$