Build web apps for free withBuilt with Anvil Built with
// Decompiled by library.dedaub.com // 2023.08.10 09:20 UTC // Compiled using the solidity compiler version 0.8.18 // Data structures and variables inferred from the use of storage instructions mapping (uint256 => uint256) _balanceOf; // STORAGE[0x0] mapping (uint256 => mapping (uint256 => uint256)) _allowance; // STORAGE[0x1] uint256 _totalSupply; // STORAGE[0x2] uint256[] array_3; // STORAGE[0x3] uint256[] array_4; // STORAGE[0x4] uint256 _owner; // STORAGE[0x5] bytes 0 to 19 // Events Approval(address, address, uint256); Transfer(address, address, uint256); OwnershipTransferred(address, address); function 0x1021(uint256 varg0, uint256 varg1) private { require(address(varg1) - address(0x0), Error('ERC20: burn from the zero address')); require(_balanceOf[address(varg1)] >= varg0, Error('ERC20: burn amount exceeds balance')); _balanceOf[address(varg1)] = _balanceOf[address(varg1)] - varg0; require(_totalSupply - varg0 <= _totalSupply, Panic(17)); // arithmetic overflow or underflow _totalSupply = _totalSupply - varg0; emit Transfer(address(varg1), address(0x0), varg0); return ; } function name() public payable { v0 = 0x370(); v1 = new bytes[](v0.length); v2 = v3 = 0; while (v2 < v0.length) { v1[v2] = v0[v2]; v2 = v2 + 32; } v1[v0.length] = 0; return v1; } function approve(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); 0x9ee(varg1, varg0, msg.sender); return bool(1); } function totalSupply() public payable { return _totalSupply; } function 0x162f(uint256 varg0) private { v0 = v1 = varg0 >> 1; if (!(varg0 & 0x1)) { v0 = v2 = v1 & 0x7f; } require((varg0 & 0x1) - (v0 < 32), Panic(34)); // access to incorrectly encoded storage byte array return v0; } function _SafeAdd(uint256 varg0, uint256 varg1) private { require(varg0 <= varg0 + varg1, Panic(17)); // arithmetic overflow or underflow return varg0 + varg1; } function transferFrom(address varg0, address varg1, uint256 varg2) public payable { require(4 + (msg.data.length - 4) - 4 >= 96); require(varg0 == varg0); require(varg1 == varg1); require(varg2 == varg2); 0xbb7(varg2, msg.sender, varg0); 0xc43(varg2, varg1, varg0); return bool(1); } function decimals() public payable { return uint8(18); } function increaseAllowance(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); v0 = _SafeAdd(_allowance[msg.sender][varg0], varg1); 0x9ee(v0, varg0, msg.sender); return bool(1); } function () public payable { revert(); } function mint(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); require(_owner == msg.sender, Error('Ownable: caller is not the owner')); require(varg0 - address(0x0), Error('ERC20: mint to the zero address')); v0 = _SafeAdd(_totalSupply, varg1); _totalSupply = v0; v1 = _SafeAdd(_balanceOf[varg0], varg1); _balanceOf[varg0] = v1; emit Transfer(address(0x0), varg0, varg1); } function burn(uint256 varg0) public payable { require(4 + (msg.data.length - 4) - 4 >= 32); require(varg0 == varg0); 0x1021(varg0, msg.sender); } function balanceOf(address varg0) public payable { require(4 + (msg.data.length - 4) - 4 >= 32); require(varg0 == varg0); return _balanceOf[varg0]; } function renounceOwnership() public payable { require(_owner == msg.sender, Error('Ownable: caller is not the owner')); _owner = 0; emit OwnershipTransferred(_owner, address(0x0)); } function burnFrom(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); 0xbb7(varg1, msg.sender, varg0); 0x1021(varg1, varg0); } function owner() public payable { return _owner; } function symbol() public payable { v0 = 0x6c9(); v1 = new bytes[](v0.length); v2 = v3 = 0; while (v2 < v0.length) { v1[v2] = v0[v2]; v2 = v2 + 32; } v1[v0.length] = 0; return v1; } function decreaseAllowance(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); require(_allowance[msg.sender][varg0] >= varg1, Error('ERC20: decreased allowance below zero')); 0x9ee(_allowance[msg.sender][varg0] - varg1, varg0, msg.sender); return bool(1); } function transfer(address varg0, uint256 varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); 0xc43(varg1, varg0, msg.sender); return bool(1); } function allowance(address varg0, address varg1) public payable { require(4 + (msg.data.length - 4) - 4 >= 64); require(varg0 == varg0); require(varg1 == varg1); return _allowance[varg0][varg1]; } function transferOwnership(address varg0) public payable { require(4 + (msg.data.length - 4) - 4 >= 32); require(varg0 == varg0); require(_owner == msg.sender, Error('Ownable: caller is not the owner')); require(varg0 - address(0x0), Error('Ownable: new owner is the zero address')); _owner = varg0; emit OwnershipTransferred(_owner, varg0); } function 0x370() private { v0 = 0x162f(array_3.length); v1 = new bytes[](v0); v2 = v3 = v1.data; v4 = 0x162f(array_3.length); if (!v4) { return v1; } else if (31 < v4) { v5 = v6 = array_3.data; do { MEM[v2] = STORAGE[v5]; v5 += 1; v2 += 32; } while (v3 + v4 <= v2); return v1; } else { MEM[v3] = array_3.length >> 8 << 8; return v1; } } function 0x6c9() private { v0 = 0x162f(array_4.length); v1 = new bytes[](v0); v2 = v3 = v1.data; v4 = 0x162f(array_4.length); if (!v4) { return v1; } else if (31 < v4) { v5 = v6 = array_4.data; do { MEM[v2] = STORAGE[v5]; v5 += 1; v2 += 32; } while (v3 + v4 <= v2); return v1; } else { MEM[v3] = array_4.length >> 8 << 8; return v1; } } function 0x9ee(uint256 varg0, address varg1, address varg2) private { require(varg2 - address(0x0), Error('ERC20: approve from the zero address')); require(varg1 - address(0x0), Error('ERC20: approve to the zero address')); _allowance[varg2][varg1] = varg0; emit Approval(varg2, varg1, varg0); return ; } function 0xbb7(uint256 varg0, uint256 varg1, uint256 varg2) private { v0 = _allowance[address(varg2)][address(varg1)]; if (v0 != uint256.max) { require(v0 >= varg0, Error('ERC20: insufficient allowance')); 0x9ee(v0 - varg0, varg1, varg2); } return ; } function 0xc43(uint256 varg0, uint256 varg1, uint256 varg2) private { require(address(varg2) - address(0x0), Error('ERC20: transfer from the zero address')); require(address(varg1) - address(0x0), Error('ERC20: transfer to the zero address')); require(_balanceOf[address(varg2)] >= varg0, Error('ERC20: transfer amount exceeds balance')); _balanceOf[address(varg2)] = _balanceOf[address(varg2)] - varg0; v0 = _SafeAdd(_balanceOf[address(varg1)], varg0); _balanceOf[address(varg1)] = v0; emit Transfer(address(varg2), address(varg1), varg0); 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) { (); } else if (0x70a08231 > function_selector >> 224) { if (0x313ce567 > function_selector >> 224) { if (0x6fdde03 == function_selector >> 224) { name(); } else if (0x95ea7b3 == function_selector >> 224) { approve(address,uint256); } else if (0x18160ddd == function_selector >> 224) { totalSupply(); } else { require(0x23b872dd == function_selector >> 224); transferFrom(address,address,uint256); } } else if (0x313ce567 == function_selector >> 224) { decimals(); } else if (0x39509351 == function_selector >> 224) { increaseAllowance(address,uint256); } else if (0x40c10f19 == function_selector >> 224) { mint(address,uint256); } else { require(0x42966c68 == function_selector >> 224); burn(uint256); } } else if (0x95d89b41 > function_selector >> 224) { if (0x70a08231 == function_selector >> 224) { balanceOf(address); } else if (0x715018a6 == function_selector >> 224) { renounceOwnership(); } else if (0x79cc6790 == function_selector >> 224) { burnFrom(address,uint256); } else { require(0x8da5cb5b == function_selector >> 224); owner(); } } else if (0x95d89b41 == function_selector >> 224) { symbol(); } else if (0xa457c2d7 == function_selector >> 224) { decreaseAllowance(address,uint256); } else if (0xa9059cbb == function_selector >> 224) { transfer(address,uint256); } else if (0xdd62ed3e == function_selector >> 224) { allowance(address,address); } else { require(0xf2fde38b == function_selector >> 224); transferOwnership(address); } }
This app has experienced an error
Click for more information

  
Execution paused Switch to the IDE to continue