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 siloRepository = 1242257728561242138016514714011449050564198871197;
uint256 public constant VERSION = 1;
uint256 public constant siloAsset = 917551056842671309452305380979543736893630245704;
mapping(bytes32 => bytes32) storage_map_f;
mapping(bytes32 => bytes32) storage_map_w;
mapping(bytes32 => bytes32) storage_map_q;
mapping(bytes32 => bytes32) storage_map_al;
mapping(bytes32 => bytes32) storage_map_s;
mapping(bytes32 => bytes32) storage_map_ak;
mapping(bytes32 => bytes32) storage_map_af;
mapping(bytes32 => bytes32) storage_map_am;
mapping(bytes32 => bytes32) storage_map_ac;
mapping(bytes32 => bytes32) storage_map_j;
bytes32 store_a;
mapping(bytes32 => bytes32) storage_map_k;
mapping(bytes32 => bytes32) storage_map_i;
mapping(bytes32 => bytes32) storage_map_b;
bytes32 store_ae;
bytes32 store_g;
mapping(bytes32 => bytes32) storage_map_x;
mapping(bytes32 => bytes32) storage_map_e;
mapping(bytes32 => bytes32) storage_map_n;
mapping(bytes32 => bytes32) storage_map_o;
mapping(bytes32 => bytes32) storage_map_z;
mapping(bytes32 => bytes32) storage_map_v;
mapping(bytes32 => bytes32) storage_map_d;
mapping(bytes32 => bytes32) storage_map_ah;
mapping(bytes32 => bytes32) storage_map_ab;
mapping(bytes32 => bytes32) storage_map_h;
mapping(bytes32 => bytes32) storage_map_ad;
mapping(bytes32 => bytes32) storage_map_t;
mapping(bytes32 => bytes32) storage_map_r;
mapping(bytes32 => bytes32) storage_map_aa;
mapping(bytes32 => bytes32) storage_map_ai;
mapping(bytes32 => bytes32) storage_map_y;
mapping(bytes32 => bytes32) storage_map_p;
mapping(bytes32 => bytes32) storage_map_m;
mapping(bytes32 => bytes32) storage_map_ag;
mapping(bytes32 => bytes32) storage_map_u;
mapping(bytes32 => bytes32) storage_map_l;
mapping(bytes32 => bytes32) storage_map_aj;
mapping(bytes32 => bytes32) storage_map_c;
event Withdraw(address, address, address, uint256, bool);
error DepositNotPossible();
event Repay(address, address, uint256);
event AssetStatusUpdate(address, uint8);
/// @custom:selector 0xead5d359
/// @custom:signature Unresolved_ead5d359(address arg0, uint256 arg1, uint256 arg2) public payable returns (bytes memory)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
/// @param arg1 ["uint256", "bytes32", "int256"]
/// @param arg2 ["uint256", "bytes32", "int256"]
function Unresolved_ead5d359(address arg0, uint256 arg1, uint256 arg2) public payable returns (bytes memory) {
require(arg0 == (address(arg0)));
require(arg2 == arg2);
require(store_a - 0x02, "ReentrancyGuard: reentrant call");
var_d = 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00;
store_a = 0x02;
address var_e = address(arg0);
require(!(bytes1(storage_map_b[var_e] / 0x010000000000000000)) > 0x02);
var_e = 0x4e487b7100000000000000000000000000000000000000000000000000000000;
require(bytes1(storage_map_b[var_e] / 0x010000000000000000) - 0);
var_a = 0x44cf3e9300000000000000000000000000000000000000000000000000000000;
address var_b = address(this);
(bool success, bytes memory ret0) = address(0xd998c35b7900b344bbbe6555cc11576942cf309d).Unresolved_44cf3e93(var_b); // staticcall
uint256 var_h = var_h + (uint248(ret0.length + 0x1f));
require(!((var_h + ret0.length) - var_h) < 0x20);
require(var_h.length == var_h.length);
require(!var_h.length);
var_e = address(arg0);
require(0 - (uint64(storage_map_c[var_e])));
require(uint64(storage_map_c[var_e]) - block.timestamp);
var_e = address(arg0);
require(!arg2);
require(arg1 - 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
var_c = address(msg.sender);
(bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_70a08231(var_c); // staticcall
var_h = var_h + (uint248(ret0.length + 0x1f));
require(!((var_h + ret0.length) - var_h) < 0x20);
(bool success, bytes memory ret0) = address(storage_map_d[var_e]).Unresolved_18160ddd(var_d); // staticcall
var_h = var_h + (uint248(ret0.length + 0x1f));
require(!(((var_h + ret0.length) - var_h) < 0x20), CustomError_b2454c78());
require(!var_h.length, CustomError_b2454c78());
require(var_h.length, CustomError_b2454c78());
require(0, CustomError_b2454c78());
require(!(storage_map_e[var_e] < 0), CustomError_b2454c78());
require(0);
var_e = address(arg0);
require(!(storage_map_f[var_e]) > 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
var_e = address(arg0);
storage_map_f[var_e] = 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
require(!(storage_map_e[var_e]) < (0 - (~(storage_map_f[var_e]))));
var_e = address(arg0);
require(!arg2);
storage_map_e[var_e] = (storage_map_e[var_e]) - 0;
address var_l = address(msg.sender);
require(address(storage_map_d[var_e]).code.length);
(bool success, bytes memory ret0) = address(storage_map_d[var_e]).{ value: 0 ether }Unresolved_9dc29fac(var_l); // call
var_h = 0x40 + var_h;
require(!(address(this).balance < 0), "Address: insufficient balance for call");
require(address(arg0).code.length, "Address: call to non-contract");
var_t = 0x20;
require(!0 > var_h.length);
uint256 var_v = 0;
(bool success, bytes memory ret0) = address(arg0).{ value: var_v ether }Unresolved_08c379a0(var_t); // call
require(ret0.length == 0);
require(!var_x);
require(!(0 > var_h.length), "