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 FLASH_TOKEN = 183970941516649652065883533058493141064148716575;
uint256 public constant FLASH_PROTOCOL = 125130566880825720837499715026503765111760781941;
mapping(bytes32 => bytes32) storage_map_a;
mapping(bytes32 => bytes32) storage_map_b;
event PoolCreated(address, address);
event Staked(bytes32, uint256, address);
event LiquidityRemoved(address, uint256, uint256, uint256, address);
/// @custom:selector 0xa4063dbc
/// @custom:signature pools(address arg0) public view returns (address)
/// @param arg0 ["address", "uint160", "bytes20", "int160"]
function pools(address arg0) public view returns (address) {
address var_b = address(arg0);
return address(storage_map_a[var_b]);
}
/// @custom:selector 0xd959d8bc
/// @custom:signature addLiquidityInPool(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, address arg4) public payable
/// @param arg0 ["uint256", "bytes32", "int256"]
/// @param arg1 ["uint256", "bytes32", "int256"]
/// @param arg2 ["uint256", "bytes32", "int256"]
/// @param arg3 ["uint256", "bytes32", "int256"]
/// @param arg4 ["address", "uint160", "bytes20", "int160"]
function addLiquidityInPool(uint256 arg0, uint256 arg1, uint256 arg2, uint256 arg3, address arg4) public payable {
address var_a = address(arg4);
require(address(storage_map_b[var_a]));
require(!arg0 > 0);
require(arg1 > 0);
uint256 var_d = arg0;
require(address(storage_map_b[var_a]).code.length);
(bool success, bytes memory ret0) = address(storage_map_b[var_a]).{ value: 0 ether }Unresolved_e0ab0772(var_d); // call
require(!(ret0.length < 0x60), "Address: call to non-contract");
uint256 var_c = 0x64 + (var_i - var_i);
var_i = 0x40 + var_i;
require(address(0x20398ad62bb2d930646d45a6d4292baa0b860c1f).code.length, "Address: call to non-contract");
require(var_i.length < 0x20);
(bool success, bytes memory ret0) = address(0x20398ad62bb2d930646d45a6d4292baa0b860c1f).{ value: 0 ether }adfepixw(); // call
require(ret0.length == 0);
require(!var_r);
require(!(bytes1(var_i.length)), "