0x184f3fad8618a6f458c16bae63f70c426fe784b3

deployer: unknown relevance score: 0 status: partially_identified bytecode: 22579 bytes

DECOMPILED SOLIDITY (Heimdall)

// 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 oldsOHM = 28241916263976295045731853919025179627172794655;
    uint256 public constant oldOHM = 320887521709452751930106615377417641000281876633;
    uint256 public constant sushiRouter = 1243886618218031985084555540764507313509865327519;
    uint256 public constant timelockLength = 7000;
    uint256 public constant oldStaking = 1445484807673596812605220697737473567551959488106;
    uint256 public constant oldwsOHM = 1155854961812479471007450907353513271936710229605;
    uint256 public constant oldTreasury = 285288922601024715891181913971504364192608569064;
    uint256 public constant uniRouter = 697323163401596485410334513241460920685086001293;
    
    address public authority;
    address public newTreasury;
    mapping(bytes32 => bytes32) storage_map_d;
    bool public ohmMigrated;
    bytes32 store_c;
    uint256 public timelockEnd;
    uint256 public oldSupply;
    address public gOHM;
    address public newStaking;
    
    event TimelockStarted(uint256, uint256);
    event Funded(uint256);
    event Defunded(uint256);
    event Migrated(address, address);
    event AuthorityUpdated(address);
    
    /// @custom:selector    0xd6fa3760
    /// @custom:signature   defund(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function defund(address arg0) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000), "Timelock not complete");
        require(!(timelockEnd < block.number), "Timelock not complete");
        require(timelockEnd < block.number, "Timelock not complete");
        var_c = address(this);
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        var_c = var_b.length;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).{ value: var_e ether }Unresolved_de0e9a3e(var_c); // call
        require(!ret0.length < 0x20);
        var_c = address(this);
        require(address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).code.length);
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        var_c = 0xfd31c7d00ca47653c6ce64af53c1571f9c36566a;
        require(address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).code.length);
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).{ value: var_e ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
        var_c = var_b.length;
        var_d = 0;
        require(address(0xfd31c7d00ca47653c6ce64af53c1571f9c36566a).code.length);
        (bool success, bytes memory ret0) = address(0xfd31c7d00ca47653c6ce64af53c1571f9c36566a).{ value: var_d ether }Unresolved_9ebea88c(var_c); // call
        var_c = address(this);
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        require(!var_b.length > oldSupply);
        oldSupply = oldSupply - var_b.length;
        require(!var_b.length == 0);
        var_c = 0x31f8cc382c9898b273eff4e0b7626a6987c846e8;
        var_d = 0;
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).{ value: var_d ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
        var_c = 0;
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_00f714ce(var_c); // call
        var_c = address(this);
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c); // staticcall
        require(!(ret0.length < 0x20), "TRANSFER_FAILED");
        uint256 var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        emit Defunded(var_b.length);
        require(var_n == 0);
        require(!var_n < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        emit Defunded(var_b.length);
        require(var_b.length == 0, "TRANSFER_FAILED");
        require(var_b.length == 0, "TRANSFER_FAILED");
        emit Defunded(var_b.length);
        require(var_b.length);
        require(((var_b.length * 0x3b9aca00) / var_b.length) == 0x3b9aca00);
        var_c = 0x31f8cc382c9898b273eff4e0b7626a6987c846e8;
        var_d = var_b.length * 0x3b9aca00;
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).{ value: var_e ether }Unresolved_095ea7b3(var_c, var_d); // call
        require(!ret0.length < 0x20);
        var_c = var_b.length * 0x3b9aca00;
        var_d = address(arg0);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_00f714ce(var_c, var_d); // call
        var_c = address(this);
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c, var_d); // staticcall
        require(!ret0.length < 0x20);
        require(!(timelockEnd == 0), "Timelock not complete");
    }
    
    /// @custom:selector    0xf96a6006
    /// @custom:signature   migrateToken(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function migrateToken(address arg0) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        var_c = 0x31f8cc382c9898b273eff4e0b7626a6987c846e8;
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).excessReserves(); // staticcall
        require(!ret0.length < 0x20);
        var_c = address(arg0);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).Unresolved_1eec5a9a(var_c); // staticcall
        require(!ret0.length < 0x20);
        require(!var_b.length > var_b.length);
        var_c = address(arg0);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_0b0eee30(var_c); // call
        require(!0, "APPROVE_FAILED");
        uint256 var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "APPROVE_FAILED");
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "APPROVE_FAILED");
        var_k = var_b.length;
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_bc157ac1(var_k); // call
        require(!ret0.length < 0x20);
        require(var_n == 0);
        require(!var_n < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        var_m = var_b.length;
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_bc157ac1(var_m); // call
        require(!ret0.length < 0x20);
        require(var_b.length == 0, "APPROVE_FAILED");
        require(var_b.length == 0, "APPROVE_FAILED");
        var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        require(var_n == 0);
        require(!var_n < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        require(var_b.length == 0, "TRANSFER_FAILED");
        require(var_b.length == 0, "TRANSFER_FAILED");
        var_c = address(arg0);
        var_d = var_b.length * 0x3b9aca00;
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_0b0eee30(var_c, var_d); // call
        if (!0) {
        }
    }
    
    /// @custom:selector    0x5ed7ca5b
    /// @custom:signature   halt() public payable
    function halt() public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).policy(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(!(bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000)), "Migration has occurred");
        ohmMigrated = ((!bytes1(ohmMigrated / 0x01000000000000000000000000000000000000000000)) * 0x01000000000000000000000000000000000000000000) | (uint248(ohmMigrated));
    }
    
    /// @custom:selector    0x245c0e99
    /// @custom:signature   setgOHM(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setgOHM(address arg0) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(address(gOHM / 0x01) == 0, "Already set");
        require(!(address(arg0) == 0), "Zero address: gOHM");
        gOHM = (address(arg0) * 0x01) | (uint96(gOHM));
    }
    
    /// @custom:selector    0x7a9e5e4b
    /// @custom:signature   setAuthority(address arg0) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    function setAuthority(address arg0) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        authority = (address(arg0) * 0x01) | (uint96(authority));
        emit AuthorityUpdated(address(arg0));
    }
    
    /// @custom:selector    0xdfd9e685
    /// @custom:signature   Unresolved_dfd9e685(address arg0, uint256 arg1, address arg2, uint256 arg3, uint256 arg4) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg3 ["uint256", "bytes32", "int256"]
    /// @param              arg4 ["uint256", "bytes32", "int256"]
    function Unresolved_dfd9e685(address arg0, uint256 arg1, address arg2, uint256 arg3, uint256 arg4) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        var_c = 0x31f8cc382c9898b273eff4e0b7626a6987c846e8;
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        var_c = address(arg0);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_0b0eee30(var_c); // call
        require(arg1);
        var_c = 0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f;
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
        var_c = address(arg2);
        require(address(0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f).code.length);
        (bool success, bytes memory ret0) = address(0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f).{ value: var_e ether }Unresolved_baa2abde(var_c); // call
        require(!ret0.length < 0x40);
        var_c = address(this);
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_40c10f19(var_c); // call
        var_c = 0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f;
        require(address(arg2).code.length);
        (bool success, bytes memory ret0) = address(arg2).{ value: var_e ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
        var_c = 0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f;
        require(address(ohmMigrated / 0x01).code.length);
        (bool success, bytes memory ret0) = address(ohmMigrated / 0x01).{ value: var_e ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
        var_c = address(arg2);
        require(address(0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f).code.length);
        (bool success, bytes memory ret0) = address(0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f).{ value: var_e ether }Unresolved_e8e33700(var_c); // call
        require(!ret0.length < 0x60);
        var_c = 0x7a250d5630b4cf539739df2c5dacb4c659f2488d;
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }Unresolved_095ea7b3(var_c); // call
        require(!ret0.length < 0x20);
    }
    
    /// @custom:selector    0x3ccdbb28
    /// @custom:signature   withdrawToken(address arg0, uint256 arg1, address arg2) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["uint256", "bytes32", "int256"]
    /// @param              arg2 ["address", "uint160", "bytes20", "int160"]
    function withdrawToken(address arg0, uint256 arg1, address arg2) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(!(address(arg0) == 0), "Cannot withdraw: old-OHM");
        require(!(address(arg0) == (address(gOHM / 0x01))), "Cannot withdraw: old-OHM");
        require(!(address(arg0) == 0x383518188c0c6d7730d91b2c03a03c837814a899), "Cannot withdraw: old-OHM");
        require(!(address(arg0) == 0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f), "Cannot withdraw: old-sOHM");
        require(!(address(arg0) == 0xca76543cf381ebbb277be79574059e32108e3e65), "Cannot withdraw: old-wsOHM");
        require(arg1 > 0);
        require(!(address(arg2)) == 0);
        var_c = address(this);
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c); // staticcall
        require(!(ret0.length < 0x20), "TRANSFER_FAILED");
        require(!(arg1 > var_b.length), "TRANSFER_FAILED");
        var_d = address(arg2);
        uint256 var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(arg0).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        require(var_n == 0);
        require(!var_n < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        require(var_b.length == 0, "TRANSFER_FAILED");
        require(var_b.length == 0, "TRANSFER_FAILED");
        var_c = address(this);
        require(address(arg0).code.length);
        (bool success, bytes memory ret0) = address(arg0).Unresolved_70a08231(var_c, var_d); // staticcall
        if (!ret0.length < 0x20) {
            require(!ret0.length < 0x20);
        }
    }
    
    /// @custom:selector    0xb29c7444
    /// @custom:signature   startTimelock() public payable
    function startTimelock() public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(timelockEnd == 0, "Timelock set");
        require(!((block.number + 0x1b58) < block.number), "SafeMath: addition overflow");
        timelockEnd = block.number + 0x1b58;
        emit TimelockStarted(block.number, timelockEnd);
    }
    
    /// @custom:selector    0x0465f072
    /// @custom:signature   migrate(uint256 arg0, uint8 arg1, uint8 arg2) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["bool", "uint8", "bytes1", "int8"]
    /// @param              arg2 ["bool", "uint8", "bytes1", "int8"]
    function migrate(uint256 arg0, uint8 arg1, uint8 arg2) public payable {
        require(!(bytes1(ohmMigrated / 0x01000000000000000000000000000000000000000000)), "Shut down");
        var_b = arg0;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_73f79c04(var_b); // staticcall
        require(!(ret0.length < 0x20), "TRANSFER_FROM_FAILED");
        require(!(0 > 0x02), "TRANSFER_FROM_FAILED");
        require(!(bytes1(arg1) > 0x02), "TRANSFER_FROM_FAILED");
        require(!(bytes1(arg1) == 0), "TRANSFER_FROM_FAILED");
        require(!(0x01 > 0x02), "TRANSFER_FROM_FAILED");
        require(!(bytes1(arg1) > 0x02), "TRANSFER_FROM_FAILED");
        require(!(bytes1(arg1) == 0x01), "TRANSFER_FROM_FAILED");
        uint256 var_c = 0x20 + (0x20 + (0x20 + (0x24 + var_c)));
        require(var_c.length < 0x20, "TRANSFER_FROM_FAILED");
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).{ value: 0 ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FROM_FAILED");
        uint256 var_k = (0x20 + (0x04 + var_c)) - (0x04 + var_c);
        require(!bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000));
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).Unresolved_18160ddd(var_k); // staticcall
        require(!(ret0.length < 0x20), "TRANSFER_FAILED");
        require(!(oldSupply < var_c.length), "TRANSFER_FAILED");
        require(!(0x02 > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg2) > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg2) == 0x02), "TRANSFER_FAILED");
        var_c = 0x20 + (0x20 + (0x24 + var_c));
        require(var_c.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(gOHM / 0x01).{ value: 0 ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        require(var_s == 0);
        require(!var_s < 0x20);
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(var_c.length == 0, "TRANSFER_FAILED");
        require(var_c.length == 0, "TRANSFER_FAILED");
        require(!0x01 > 0x02);
        require(!(bytes1(arg2)) > 0x02);
        require(!(bytes1(arg2)) == 0x01);
        var_k = address(msg.sender);
        var_l = var_c.length;
        require(address(newStaking / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newStaking / 0x01).{ value: 0 ether }Unresolved_39f47693(var_k, var_l); // call
        require(!ret0.length < 0x20);
        require(!0 > 0x02);
        require(!(bytes1(arg2)) > 0x02);
        require(!(bytes1(arg2)) == 0);
        var_k = address(msg.sender);
        var_l = var_c.length;
        var_m = 0;
        var_o = 0;
        require(address(newStaking / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newStaking / 0x01).{ value: var_m ether }Unresolved_990966d5(var_k, var_l); // call
        require(!ret0.length < 0x20);
        var_k = address(msg.sender);
        var_l = var_c.length;
        require(address(gOHM / 0x01).code.length);
        (bool success, bytes memory ret0) = address(gOHM / 0x01).{ value: var_o ether }Unresolved_40c10f19(var_k, var_l); // call
        require(var_s == 0);
        require(!var_s < 0x20);
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(var_c.length == 0, "TRANSFER_FROM_FAILED");
        require(var_c.length == 0, "TRANSFER_FROM_FAILED");
        require(bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000), "Only staked until migration");
    }
    
    /// @custom:selector    0xb71a6df3
    /// @custom:signature   migrateContracts(address arg0, address arg1, address arg2, address arg3, address arg4) public payable
    /// @param              arg0 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg1 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg2 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg3 ["address", "uint160", "bytes20", "int160"]
    /// @param              arg4 ["address", "uint160", "bytes20", "int160"]
    function migrateContracts(address arg0, address arg1, address arg2, address arg3, address arg4) public payable {
        require(address(authority / 0x01).code.length);
        (bool success, bytes memory ret0) = address(authority / 0x01).governor(); // staticcall
        require(!(ret0.length < 0x20), "");
        require(address(msg.sender) == (address(var_b.length)), "");
        require(!(((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        require(0x1f < (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02), "");
        uint256 var_e = 0;
        require((0x20 + (0x20 + (0x04 + var_b))) + (((0x0100 * (!bytes1(store_c))) - 0x01) & (store_c) / 0x02) > (0x20 + (0x20 + (0x20 + (0x04 + var_b)))), "");
        require(!(bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000)), "Already migrated");
        var_c = (0x20 + (0x04 + var_b)) - (0x04 + var_b);
        ohmMigrated = (0x01 * 0x010000000000000000000000000000000000000000) | (uint248(ohmMigrated));
        ohmMigrated = (0 * 0x01000000000000000000000000000000000000000000) | (uint248(ohmMigrated));
        require(!(address(arg0)) == 0);
        newTreasury = (address(arg0) * 0x01) | (uint96(newTreasury));
        require(!(address(arg1)) == 0);
        newStaking = (address(arg1) * 0x01) | (uint96(newStaking));
        require(!(address(arg2)) == 0);
        ohmMigrated = (address(arg2) * 0x01) | (uint96(ohmMigrated));
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).Unresolved_18160ddd(var_c); // staticcall
        require(!ret0.length < 0x20);
        oldSupply = var_b.length;
        var_c = address(arg1);
        require(address(gOHM / 0x01).code.length);
        (bool success, bytes memory ret0) = address(gOHM / 0x01).{ value: var_e ether }Unresolved_1068361f(var_c); // call
        var_c = 0x31f8cc382c9898b273eff4e0b7626a6987c846e8;
        require(address(arg4).code.length);
        (bool success, bytes memory ret0) = address(arg4).Unresolved_70a08231(var_c); // staticcall
        require(!ret0.length < 0x20);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).excessReserves(); // staticcall
        require(!ret0.length < 0x20);
        var_c = address(arg4);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).Unresolved_1eec5a9a(var_c); // staticcall
        require(!ret0.length < 0x20);
        require(!var_b.length > var_b.length);
        var_c = address(arg4);
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_0b0eee30(var_c); // call
        require(!0x01, "TRANSFER_FAILED");
        uint256 var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(arg4).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        require(address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).code.length);
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).circulatingSupply(); // staticcall
        require(!ret0.length < 0x20);
        var_k = address(this);
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_40c10f19(var_k); // call
        var_k = address(newStaking / 0x01);
        require(address(ohmMigrated / 0x01).code.length);
        (bool success, bytes memory ret0) = address(ohmMigrated / 0x01).{ value: var_e ether }Unresolved_095ea7b3(var_k); // call
        require(!ret0.length < 0x20);
        var_k = address(this);
        uint256 var_m = 0;
        require(address(newStaking / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newStaking / 0x01).{ value: var_m ether }Unresolved_d866c9d8(var_k); // call
        require(!ret0.length < 0x20);
        emit Funded(var_b.length);
        emit Migrated(address(arg1), address(arg0));
        require(var_p == 0);
        require(!var_p < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        require(address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).code.length);
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).circulatingSupply(); // staticcall
        require(!ret0.length < 0x20);
        var_m = address(this);
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_40c10f19(var_m); // call
        var_m = address(newStaking / 0x01);
        require(address(ohmMigrated / 0x01).code.length);
        (bool success, bytes memory ret0) = address(ohmMigrated / 0x01).{ value: var_e ether }Unresolved_095ea7b3(var_m); // call
        require(!ret0.length < 0x20);
        var_m = address(this);
        uint256 var_r = 0;
        require(address(newStaking / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newStaking / 0x01).{ value: var_r ether }Unresolved_d866c9d8(var_m); // call
        require(!ret0.length < 0x20);
        emit Funded(var_b.length);
        emit Migrated(address(arg1), address(arg0));
        require(var_b.length == 0, "TRANSFER_FAILED");
        require(var_b.length == 0, "TRANSFER_FAILED");
        var_b = 0x20 + (0x20 + (0x24 + var_b));
        require(var_b.length < 0x20, "APPROVE_FAILED");
        (bool success, bytes memory ret0) = address(arg4).{ value: var_e ether }adfepixw(); // call
        require(ret0.length == 0, "APPROVE_FAILED");
        var_k = var_b.length;
        var_l = address(arg4);
        var_m = var_b.length;
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }deposit(var_k, var_l, var_m); // call
        require(!ret0.length < 0x20);
        require(var_p == 0);
        require(!var_p < 0x20);
        var_b = var_b + (uint248(ret0.length + 0x3f));
        var_m = var_b.length;
        var_n = address(arg4);
        require(address(newTreasury / 0x01).code.length);
        (bool success, bytes memory ret0) = address(newTreasury / 0x01).{ value: var_e ether }Unresolved_bc157ac1(var_m, var_n); // call
        require(!ret0.length < 0x20);
        require(var_b.length == 0, "APPROVE_FAILED");
        require(var_b.length == 0, "APPROVE_FAILED");
        var_c = address(arg4);
        var_d = var_b.length * 0x3b9aca00;
        require(address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).code.length);
        (bool success, bytes memory ret0) = address(0x31f8cc382c9898b273eff4e0b7626a6987c846e8).{ value: var_e ether }Unresolved_0b0eee30(var_c, var_d); // call
        if (!0x01) {
        }
    }
    
    /// @custom:selector    0xec78f90b
    /// @custom:signature   migrateAll(uint8 arg0) public payable
    /// @param              arg0 ["bool", "uint8", "bytes1", "int8"]
    function migrateAll(uint8 arg0) public payable {
        require(!(bytes1(ohmMigrated / 0x01000000000000000000000000000000000000000000)), "Shut down");
        var_b = address(msg.sender);
        require(address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).code.length);
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).Unresolved_70a08231(var_b); // staticcall
        require(!ret0.length < 0x20);
        var_b = address(msg.sender);
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_70a08231(var_b); // staticcall
        require(!ret0.length < 0x20);
        var_b = address(msg.sender);
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).Unresolved_70a08231(var_b); // staticcall
        require(!(ret0.length < 0x20), "SafeMath: addition overflow");
        require(!(var_c.length > 0), "SafeMath: addition overflow");
        require(!(var_c.length > 0), "SafeMath: addition overflow");
        require(!(var_c.length > 0), "SafeMath: addition overflow");
        require(!(var_c.length > 0), "SafeMath: addition overflow");
        require(!((0 + var_c.length) < 0), "SafeMath: addition overflow");
        var_b = 0 + var_c.length;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_73f79c04(var_b); // staticcall
        require(!ret0.length < 0x20);
        address var_d = address(msg.sender);
        uint256 var_c = 0x20 + (0x20 + (0x20 + (0x24 + var_c)));
        require(var_c.length < 0x20, "TRANSFER_FROM_FAILED");
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).{ value: 0 ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FROM_FAILED");
        require(var_n == 0);
        require(!var_n < 0x20);
        var_c = var_c + (uint248(ret0.length + 0x3f));
        require(var_c.length == 0, "TRANSFER_FROM_FAILED");
        require(var_c.length == 0, "TRANSFER_FROM_FAILED");
        var_b = address(msg.sender);
        require(address(0x383518188c0c6d7730d91b2c03a03c837814a899).code.length);
        (bool success, bytes memory ret0) = address(0x383518188c0c6d7730d91b2c03a03c837814a899).Unresolved_70a08231(var_b, var_d); // staticcall
        require(!ret0.length < 0x20);
        if (!ohmMigrated / 0x010000000000000000000000000000000000000000) {
        }
    }
    
    /// @custom:selector    0xabacbb2f
    /// @custom:signature   bridgeBack(uint256 arg0, uint8 arg1) public payable
    /// @param              arg0 ["uint256", "bytes32", "int256"]
    /// @param              arg1 ["bool", "uint8", "bytes1", "int8"]
    function bridgeBack(uint256 arg0, uint8 arg1) public payable {
        require(bytes1(ohmMigrated / 0x010000000000000000000000000000000000000000), "TRANSFER_FROM_FAILED");
        uint256 var_e = 0x20 + (0x20 + (0x20 + (0x24 + var_e)));
        require(var_e.length < 0x20, "TRANSFER_FROM_FAILED");
        (bool success, bytes memory ret0) = address(gOHM / 0x01).{ value: 0 ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FROM_FAILED");
        var_j = arg0;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_554c85a3(var_j); // staticcall
        require(!(ret0.length < 0x20), "TRANSFER_FAILED");
        require(!(0 > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg1) > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg1) == 0), "TRANSFER_FAILED");
        require(!(0x01 > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg1) > 0x02), "TRANSFER_FAILED");
        require(!(bytes1(arg1) == 0x01), "TRANSFER_FAILED");
        var_e = 0x20 + (0x20 + (0x24 + var_e));
        require(var_e.length < 0x20, "TRANSFER_FAILED");
        (bool success, bytes memory ret0) = address(0x04f2694c8fcee23e8fd0dfea1d4f5bb8c352111f).{ value: 0 ether }adfepixw(); // call
        require(ret0.length == 0, "TRANSFER_FAILED");
        require(var_r == 0);
        require(!var_r < 0x20);
        var_e = var_e + (uint248(ret0.length + 0x3f));
        require(var_e.length == 0, "TRANSFER_FAILED");
        require(var_e.length == 0, "TRANSFER_FAILED");
        require(!0x02 > 0x02);
        require(!(bytes1(arg1)) > 0x02);
        require(!(bytes1(arg1)) == 0x02);
        require(var_r == 0);
        require(!var_r < 0x20);
        var_e = var_e + (uint248(ret0.length + 0x3f));
        var_l = arg0;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).Unresolved_554c85a3(var_l); // staticcall
        require(!ret0.length < 0x20);
        require(var_e.length == 0, "TRANSFER_FROM_FAILED");
        require(var_e.length == 0, "TRANSFER_FROM_FAILED");
        address var_x = address(msg.sender);
        var_a = arg0;
        require(address(gOHM / 0x01).code.length);
        (bool success, bytes memory ret0) = address(gOHM / 0x01).{ value: 0 ether }Unresolved_9dc29fac(var_x, var_a); // call
        var_x = arg0;
        require(address(0xca76543cf381ebbb277be79574059e32108e3e65).code.length);
        (bool success, bytes memory ret0) = address(0xca76543cf381ebbb277be79574059e32108e3e65).wOHMTosOHM(var_x); // staticcall
        require(!ret0.length < 0x20);
    }
}

ABI

[
  {
    "type": "function",
    "name": "Unresolved_dfd9e685",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "address"
      },
      {
        "name": "arg3",
        "type": "uint256"
      },
      {
        "name": "arg4",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "authority",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "bridgeBack",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint8"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "defund",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "gOHM",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "halt",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "migrate",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      },
      {
        "name": "arg1",
        "type": "uint8"
      },
      {
        "name": "arg2",
        "type": "uint8"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "migrateAll",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint8"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "migrateContracts",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      },
      {
        "name": "arg2",
        "type": "address"
      },
      {
        "name": "arg3",
        "type": "address"
      },
      {
        "name": "arg4",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "migrateToken",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "newOHM",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "newStaking",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "newTreasury",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ohmMigrated",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "oldOHM",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "oldStaking",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "oldSupply",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "oldTreasury",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "oldsOHM",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "oldwsOHM",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "setAuthority",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setgOHM",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "shutdown",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "startTimelock",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "sushiRouter",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "timelockEnd",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "timelockLength",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "uniRouter",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "withdrawToken",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "uint256"
      },
      {
        "name": "arg2",
        "type": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "event",
    "name": "AuthorityUpdated",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Defunded",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Funded",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Migrated",
    "inputs": [
      {
        "name": "arg0",
        "type": "address",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TimelockStarted",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "arg1",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false
  }
]

UNKNOWN SELECTORS (1)

0x3b9aca00unknown
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)

(none)