@urbanisierung/flethly
Version:
easily sell digital assets with ether
1 lines • 804 kB
JSON
{ "abi": [{ "inputs": [{ "internalType": "address", "name": "priceFeedContractAddress", "type": "address" }], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }], "name": "activateAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }], "name": "add", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "name": "assetIds", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "", "type": "string" }], "name": "assets", "outputs": [{ "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "manager", "type": "address" }, { "internalType": "uint256", "name": "buyersCount", "type": "uint256" }, { "internalType": "bool", "name": "active", "type": "bool" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }, { "internalType": "uint256", "name": "price", "type": "uint256" }], "name": "changePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }], "name": "deactivateAsset", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }], "name": "getAssetPrice", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "string", "name": "uuid", "type": "string" }], "name": "getMyBoughtAssetCount", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMyBoughtAssets", "outputs": [{ "internalType": "string[]", "name": "", "type": "string[]" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOfferedAssets", "outputs": [{ "internalType": "string[]", "name": "", "type": "string[]" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrice", "outputs": [{ "components": [{ "internalType": "uint80", "name": "roundID", "type": "uint80" }, { "internalType": "int256", "name": "price", "type": "int256" }, { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, { "internalType": "uint256", "name": "timeStamp", "type": "uint256" }, { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" }], "internalType": "struct Flassets.PriceFeed", "name": "", "type": "tuple" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "address", "name": "buyer", "type": "address" }, { "internalType": "string", "name": "uuid", "type": "string" }], "name": "hasBought", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manager", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "stateMutability": "view", "type": "function" }], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "evm": { "assembly": " /* \"Flassets.sol\":1042:6252 contract Flassets {... */\n mstore(0x40, 0x80)\n /* \"Flassets.sol\":2723:2920 constructor(address priceFeedContractAddress) {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n mload(0x40)\n sub(codesize, bytecodeSize)\n dup1\n bytecodeSize\n dup4\n codecopy\n dup2\n dup2\n add\n 0x40\n mstore\n dup2\n add\n swap1\n tag_2\n swap2\n swap1\n tag_3\n jump\t// in\ntag_2:\n /* \"Flassets.sol\":2789:2799 msg.sender */\n caller\n /* \"Flassets.sol\":2779:2786 manager */\n 0x07\n 0x00\n /* \"Flassets.sol\":2779:2799 manager = msg.sender */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":2828:2852 priceFeedContractAddress */\n dup1\n /* \"Flassets.sol\":2809:2825 priceFeedAddress */\n 0x00\n dup1\n /* \"Flassets.sol\":2809:2852 priceFeedAddress = priceFeedContractAddress */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":2896:2912 priceFeedAddress */\n 0x00\n dup1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"Flassets.sol\":2862:2871 priceFeed */\n 0x01\n 0x00\n /* \"Flassets.sol\":2862:2913 priceFeed = AggregatorV3Interface(priceFeedAddress) */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":2723:2920 constructor(address priceFeedContractAddress) {... */\n pop\n /* \"Flassets.sol\":1042:6252 contract Flassets {... */\n jump(tag_6)\n /* \"#utility.yul\":7:150 */\ntag_8:\n 0x00\n /* \"#utility.yul\":95:101 */\n dup2\n /* \"#utility.yul\":89:102 */\n mload\n /* \"#utility.yul\":80:102 */\n swap1\n pop\n /* \"#utility.yul\":111:144 */\n tag_10\n /* \"#utility.yul\":138:143 */\n dup2\n /* \"#utility.yul\":111:144 */\n tag_11\n jump\t// in\ntag_10:\n /* \"#utility.yul\":70:150 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":156:440 */\ntag_3:\n 0x00\n /* \"#utility.yul\":275:277 */\n 0x20\n /* \"#utility.yul\":263:272 */\n dup3\n /* \"#utility.yul\":254:261 */\n dup5\n /* \"#utility.yul\":250:273 */\n sub\n /* \"#utility.yul\":246:278 */\n slt\n /* \"#utility.yul\":243:245 */\n iszero\n tag_13\n jumpi\n /* \"#utility.yul\":291:292 */\n 0x00\n /* \"#utility.yul\":288:289 */\n dup1\n /* \"#utility.yul\":281:293 */\n revert\n /* \"#utility.yul\":243:245 */\ntag_13:\n /* \"#utility.yul\":334:335 */\n 0x00\n /* \"#utility.yul\":359:423 */\n tag_14\n /* \"#utility.yul\":415:422 */\n dup5\n /* \"#utility.yul\":406:412 */\n dup3\n /* \"#utility.yul\":395:404 */\n dup6\n /* \"#utility.yul\":391:413 */\n add\n /* \"#utility.yul\":359:423 */\n tag_8\n jump\t// in\ntag_14:\n /* \"#utility.yul\":349:423 */\n swap2\n pop\n /* \"#utility.yul\":305:433 */\n pop\n /* \"#utility.yul\":233:440 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":446:542 */\ntag_15:\n 0x00\n /* \"#utility.yul\":512:536 */\n tag_17\n /* \"#utility.yul\":530:535 */\n dup3\n /* \"#utility.yul\":512:536 */\n tag_18\n jump\t// in\ntag_17:\n /* \"#utility.yul\":501:536 */\n swap1\n pop\n /* \"#utility.yul\":491:542 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":548:674 */\ntag_18:\n 0x00\n /* \"#utility.yul\":625:667 */\n 0xffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":618:623 */\n dup3\n /* \"#utility.yul\":614:668 */\n and\n /* \"#utility.yul\":603:668 */\n swap1\n pop\n /* \"#utility.yul\":593:674 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":680:802 */\ntag_11:\n /* \"#utility.yul\":753:777 */\n tag_21\n /* \"#utility.yul\":771:776 */\n dup2\n /* \"#utility.yul\":753:777 */\n tag_15\n jump\t// in\ntag_21:\n /* \"#utility.yul\":746:751 */\n dup2\n /* \"#utility.yul\":743:778 */\n eq\n /* \"#utility.yul\":733:735 */\n tag_22\n jumpi\n /* \"#utility.yul\":792:793 */\n 0x00\n /* \"#utility.yul\":789:790 */\n dup1\n /* \"#utility.yul\":782:794 */\n revert\n /* \"#utility.yul\":733:735 */\ntag_22:\n /* \"#utility.yul\":723:802 */\n pop\n jump\t// out\n /* \"Flassets.sol\":1042:6252 contract Flassets {... */\ntag_6:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"Flassets.sol\":1042:6252 contract Flassets {... */\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x492cc769\n gt\n tag_16\n jumpi\n dup1\n 0x83948e4b\n gt\n tag_17\n jumpi\n dup1\n 0x83948e4b\n eq\n tag_12\n jumpi\n dup1\n 0x85936228\n eq\n tag_13\n jumpi\n dup1\n 0x87541ed6\n eq\n tag_14\n jumpi\n dup1\n 0x98d5fdca\n eq\n tag_15\n jumpi\n jump(tag_1)\n tag_17:\n dup1\n 0x492cc769\n eq\n tag_9\n jumpi\n dup1\n 0x51618eff\n eq\n tag_10\n jumpi\n dup1\n 0x671e52c9\n eq\n tag_11\n jumpi\n jump(tag_1)\n tag_16:\n dup1\n 0x2b47207e\n gt\n tag_18\n jumpi\n dup1\n 0x2b47207e\n eq\n tag_5\n jumpi\n dup1\n 0x36555b85\n eq\n tag_6\n jumpi\n dup1\n 0x3db7e574\n eq\n tag_7\n jumpi\n dup1\n 0x481c6a75\n eq\n tag_8\n jumpi\n jump(tag_1)\n tag_18:\n dup1\n 0x1fa19596\n eq\n tag_2\n jumpi\n dup1\n 0x23f08704\n eq\n tag_3\n jumpi\n dup1\n 0x2aedd0eb\n eq\n tag_4\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"Flassets.sol\":5199:5319 function changePrice(string memory uuid, uint price) public assetOwner(uuid) {... */\n tag_2:\n callvalue\n dup1\n iszero\n tag_19\n jumpi\n 0x00\n dup1\n revert\n tag_19:\n pop\n tag_20\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_21\n swap2\n swap1\n tag_22\n jump\t// in\n tag_21:\n tag_23\n jump\t// in\n tag_20:\n stop\n /* \"Flassets.sol\":5017:5193 function activateAsset(string memory uuid) public assetOwner(uuid) {... */\n tag_3:\n callvalue\n dup1\n iszero\n tag_24\n jumpi\n 0x00\n dup1\n revert\n tag_24:\n pop\n tag_25\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_26\n swap2\n swap1\n tag_27\n jump\t// in\n tag_26:\n tag_28\n jump\t// in\n tag_25:\n stop\n /* \"Flassets.sol\":4164:4417 function getAssetPrice(string memory uuid) public view returns (uint) {... */\n tag_4:\n callvalue\n dup1\n iszero\n tag_29\n jumpi\n 0x00\n dup1\n revert\n tag_29:\n pop\n tag_30\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_31\n swap2\n swap1\n tag_27\n jump\t// in\n tag_31:\n tag_32\n jump\t// in\n tag_30:\n mload(0x40)\n tag_33\n swap2\n swap1\n tag_34\n jump\t// in\n tag_33:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":4558:4681 function getMyBoughtAssets() public view returns (string[] memory) {... */\n tag_5:\n callvalue\n dup1\n iszero\n tag_35\n jumpi\n 0x00\n dup1\n revert\n tag_35:\n pop\n tag_36\n tag_37\n jump\t// in\n tag_36:\n mload(0x40)\n tag_38\n swap2\n swap1\n tag_39\n jump\t// in\n tag_38:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":3047:3425 function add(string memory uuid, uint price) public {... */\n tag_6:\n callvalue\n dup1\n iszero\n tag_40\n jumpi\n 0x00\n dup1\n revert\n tag_40:\n pop\n tag_41\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_42\n swap2\n swap1\n tag_22\n jump\t// in\n tag_42:\n tag_43\n jump\t// in\n tag_41:\n stop\n /* \"Flassets.sol\":5325:5440 function getOfferedAssets() public view returns (string[] memory) {... */\n tag_7:\n callvalue\n dup1\n iszero\n tag_44\n jumpi\n 0x00\n dup1\n revert\n tag_44:\n pop\n tag_45\n tag_46\n jump\t// in\n tag_45:\n mload(0x40)\n tag_47\n swap2\n swap1\n tag_39\n jump\t// in\n tag_47:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":2472:2494 address public manager */\n tag_8:\n callvalue\n dup1\n iszero\n tag_48\n jumpi\n 0x00\n dup1\n revert\n tag_48:\n pop\n tag_49\n tag_50\n jump\t// in\n tag_49:\n mload(0x40)\n tag_51\n swap2\n swap1\n tag_52\n jump\t// in\n tag_51:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":3431:4158 function buy(string memory uuid) public payable {... */\n tag_9:\n tag_53\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_54\n swap2\n swap1\n tag_27\n jump\t// in\n tag_54:\n tag_55\n jump\t// in\n tag_53:\n stop\n /* \"Flassets.sol\":4831:5011 function deactivateAsset(string memory uuid) public assetOwner(uuid) {... */\n tag_10:\n callvalue\n dup1\n iszero\n tag_56\n jumpi\n 0x00\n dup1\n revert\n tag_56:\n pop\n tag_57\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_58\n swap2\n swap1\n tag_27\n jump\t// in\n tag_58:\n tag_59\n jump\t// in\n tag_57:\n stop\n /* \"Flassets.sol\":4423:4552 function hasBought(address buyer, string memory uuid) public view returns (uint) {... */\n tag_11:\n callvalue\n dup1\n iszero\n tag_60\n jumpi\n 0x00\n dup1\n revert\n tag_60:\n pop\n tag_61\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_62\n swap2\n swap1\n tag_63\n jump\t// in\n tag_62:\n tag_64\n jump\t// in\n tag_61:\n mload(0x40)\n tag_65\n swap2\n swap1\n tag_34\n jump\t// in\n tag_65:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":4687:4825 function getMyBoughtAssetCount(string memory uuid) public view returns (uint) {... */\n tag_12:\n callvalue\n dup1\n iszero\n tag_66\n jumpi\n 0x00\n dup1\n revert\n tag_66:\n pop\n tag_67\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_68\n swap2\n swap1\n tag_27\n jump\t// in\n tag_68:\n tag_69\n jump\t// in\n tag_67:\n mload(0x40)\n tag_70\n swap2\n swap1\n tag_34\n jump\t// in\n tag_70:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":2396:2436 mapping(string => Flasset) public assets */\n tag_13:\n callvalue\n dup1\n iszero\n tag_71\n jumpi\n 0x00\n dup1\n revert\n tag_71:\n pop\n tag_72\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_73\n swap2\n swap1\n tag_27\n jump\t// in\n tag_73:\n tag_74\n jump\t// in\n tag_72:\n mload(0x40)\n tag_75\n swap5\n swap4\n swap3\n swap2\n swap1\n tag_76\n jump\t// in\n tag_75:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":2442:2466 string[] public assetIds */\n tag_14:\n callvalue\n dup1\n iszero\n tag_77\n jumpi\n 0x00\n dup1\n revert\n tag_77:\n pop\n tag_78\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_79\n swap2\n swap1\n tag_80\n jump\t// in\n tag_79:\n tag_81\n jump\t// in\n tag_78:\n mload(0x40)\n tag_82\n swap2\n swap1\n tag_83\n jump\t// in\n tag_82:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":5446:6250 function getPrice() public view returns (PriceFeed memory) {... */\n tag_15:\n callvalue\n dup1\n iszero\n tag_84\n jumpi\n 0x00\n dup1\n revert\n tag_84:\n pop\n tag_85\n tag_86\n jump\t// in\n tag_85:\n mload(0x40)\n tag_87\n swap2\n swap1\n tag_88\n jump\t// in\n tag_87:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Flassets.sol\":5199:5319 function changePrice(string memory uuid, uint price) public assetOwner(uuid) {... */\n tag_23:\n /* \"Flassets.sol\":5270:5274 uuid */\n dup2\n /* \"Flassets.sol\":2669:2679 msg.sender */\n caller\n /* \"Flassets.sol\":2645:2679 assets[uuid].manager == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"Flassets.sol\":2645:2651 assets */\n 0x05\n /* \"Flassets.sol\":2652:2656 uuid */\n dup3\n /* \"Flassets.sol\":2645:2657 assets[uuid] */\n mload(0x40)\n tag_90\n swap2\n swap1\n tag_91\n jump\t// in\n tag_90:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":2645:2665 assets[uuid].manager */\n 0x01\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"Flassets.sol\":2645:2679 assets[uuid].manager == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"Flassets.sol\":2681:2698 NOT_ASSET_MANAGER */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x23\n dup2\n mstore\n 0x20\n add\n data_e2c0ac9a67c6d46bccb57ee83b8a8978c5e46b8f4717406baae97b8567d1d131\n 0x23\n swap2\n codecopy\n /* \"Flassets.sol\":2637:2699 require(assets[uuid].manager == msg.sender, NOT_ASSET_MANAGER) */\n swap1\n tag_92\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_93\n swap2\n swap1\n tag_83\n jump\t// in\n tag_93:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_92:\n pop\n /* \"Flassets.sol\":5307:5312 price */\n dup2\n /* \"Flassets.sol\":5286:5292 assets */\n 0x05\n /* \"Flassets.sol\":5293:5297 uuid */\n dup5\n /* \"Flassets.sol\":5286:5298 assets[uuid] */\n mload(0x40)\n tag_95\n swap2\n swap1\n tag_91\n jump\t// in\n tag_95:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":5286:5304 assets[uuid].price */\n 0x00\n add\n /* \"Flassets.sol\":5286:5312 assets[uuid].price = price */\n dup2\n swap1\n sstore\n pop\n /* \"Flassets.sol\":5199:5319 function changePrice(string memory uuid, uint price) public assetOwner(uuid) {... */\n pop\n pop\n pop\n jump\t// out\n /* \"Flassets.sol\":5017:5193 function activateAsset(string memory uuid) public assetOwner(uuid) {... */\n tag_28:\n /* \"Flassets.sol\":5078:5082 uuid */\n dup1\n /* \"Flassets.sol\":2669:2679 msg.sender */\n caller\n /* \"Flassets.sol\":2645:2679 assets[uuid].manager == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"Flassets.sol\":2645:2651 assets */\n 0x05\n /* \"Flassets.sol\":2652:2656 uuid */\n dup3\n /* \"Flassets.sol\":2645:2657 assets[uuid] */\n mload(0x40)\n tag_97\n swap2\n swap1\n tag_91\n jump\t// in\n tag_97:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":2645:2665 assets[uuid].manager */\n 0x01\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n /* \"Flassets.sol\":2645:2679 assets[uuid].manager == msg.sender */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n eq\n /* \"Flassets.sol\":2681:2698 NOT_ASSET_MANAGER */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x23\n dup2\n mstore\n 0x20\n add\n data_e2c0ac9a67c6d46bccb57ee83b8a8978c5e46b8f4717406baae97b8567d1d131\n 0x23\n swap2\n codecopy\n /* \"Flassets.sol\":2637:2699 require(assets[uuid].manager == msg.sender, NOT_ASSET_MANAGER) */\n swap1\n tag_98\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_99\n swap2\n swap1\n tag_83\n jump\t// in\n tag_99:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_98:\n pop\n /* \"Flassets.sol\":5123:5128 false */\n 0x00\n /* \"Flassets.sol\":5100:5128 assets[uuid].active == false */\n iszero\n iszero\n /* \"Flassets.sol\":5100:5106 assets */\n 0x05\n /* \"Flassets.sol\":5107:5111 uuid */\n dup4\n /* \"Flassets.sol\":5100:5112 assets[uuid] */\n mload(0x40)\n tag_101\n swap2\n swap1\n tag_91\n jump\t// in\n tag_101:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":5100:5119 assets[uuid].active */\n 0x03\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"Flassets.sol\":5100:5128 assets[uuid].active == false */\n iszero\n iszero\n eq\n /* \"Flassets.sol\":5130:5149 ACTIVE_STATUS_WRONG */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x13\n dup2\n mstore\n 0x20\n add\n 0x416374697665205374617475732077726f6e6700000000000000000000000000\n dup2\n mstore\n pop\n /* \"Flassets.sol\":5092:5150 require(assets[uuid].active == false, ACTIVE_STATUS_WRONG) */\n swap1\n tag_102\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_103\n swap2\n swap1\n tag_83\n jump\t// in\n tag_103:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_102:\n pop\n /* \"Flassets.sol\":5182:5186 true */\n 0x01\n /* \"Flassets.sol\":5160:5166 assets */\n 0x05\n /* \"Flassets.sol\":5167:5171 uuid */\n dup4\n /* \"Flassets.sol\":5160:5172 assets[uuid] */\n mload(0x40)\n tag_104\n swap2\n swap1\n tag_91\n jump\t// in\n tag_104:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":5160:5179 assets[uuid].active */\n 0x03\n add\n 0x00\n /* \"Flassets.sol\":5160:5186 assets[uuid].active = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":5017:5193 function activateAsset(string memory uuid) public assetOwner(uuid) {... */\n pop\n pop\n jump\t// out\n /* \"Flassets.sol\":4164:4417 function getAssetPrice(string memory uuid) public view returns (uint) {... */\n tag_32:\n /* \"Flassets.sol\":4228:4232 uint */\n 0x00\n /* \"Flassets.sol\":4252:4269 assetExists(uuid) */\n tag_106\n /* \"Flassets.sol\":4264:4268 uuid */\n dup3\n /* \"Flassets.sol\":4252:4263 assetExists */\n tag_107\n /* \"Flassets.sol\":4252:4269 assetExists(uuid) */\n jump\t// in\n tag_106:\n /* \"Flassets.sol\":4271:4288 ASSET_UNAVAILABLE */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x21\n dup2\n mstore\n 0x20\n add\n data_82243272b38ccda534d270283b572a2720016f5190661db4db4b798196183a19\n 0x21\n swap2\n codecopy\n /* \"Flassets.sol\":4244:4289 require(assetExists(uuid), ASSET_UNAVAILABLE) */\n swap1\n tag_108\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_109\n swap2\n swap1\n tag_83\n jump\t// in\n tag_109:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_108:\n pop\n /* \"Flassets.sol\":4299:4327 PriceFeed memory ethUsdPrice */\n 0x00\n /* \"Flassets.sol\":4330:4340 getPrice() */\n tag_110\n /* \"Flassets.sol\":4330:4338 getPrice */\n tag_86\n /* \"Flassets.sol\":4330:4340 getPrice() */\n jump\t// in\n tag_110:\n /* \"Flassets.sol\":4299:4340 PriceFeed memory ethUsdPrice = getPrice() */\n swap1\n pop\n /* \"Flassets.sol\":4392:4403 ethUsdPrice */\n dup1\n /* \"Flassets.sol\":4392:4409 ethUsdPrice.price */\n 0x20\n add\n mload\n /* \"Flassets.sol\":4378:4384 10**24 */\n 0xd3c21bcecceda1000000\n /* \"Flassets.sol\":4357:4363 assets */\n 0x05\n /* \"Flassets.sol\":4364:4368 uuid */\n dup6\n /* \"Flassets.sol\":4357:4369 assets[uuid] */\n mload(0x40)\n tag_111\n swap2\n swap1\n tag_91\n jump\t// in\n tag_111:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":4357:4375 assets[uuid].price */\n 0x00\n add\n sload\n /* \"Flassets.sol\":4357:4384 assets[uuid].price * 10**24 */\n tag_112\n swap2\n swap1\n tag_113\n jump\t// in\n tag_112:\n /* \"Flassets.sol\":4357:4410 assets[uuid].price * 10**24 / uint(ethUsdPrice.price) */\n tag_114\n swap2\n swap1\n tag_115\n jump\t// in\n tag_114:\n /* \"Flassets.sol\":4350:4410 return assets[uuid].price * 10**24 / uint(ethUsdPrice.price) */\n swap2\n pop\n pop\n /* \"Flassets.sol\":4164:4417 function getAssetPrice(string memory uuid) public view returns (uint) {... */\n swap2\n swap1\n pop\n jump\t// out\n /* \"Flassets.sol\":4558:4681 function getMyBoughtAssets() public view returns (string[] memory) {... */\n tag_37:\n /* \"Flassets.sol\":4608:4623 string[] memory */\n 0x60\n /* \"Flassets.sol\":4642:4653 boughtItems */\n 0x03\n /* \"Flassets.sol\":4642:4665 boughtItems[msg.sender] */\n 0x00\n /* \"Flassets.sol\":4654:4664 msg.sender */\n caller\n /* \"Flassets.sol\":4642:4665 boughtItems[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Flassets.sol\":4642:4674 boughtItems[msg.sender].assetIds */\n 0x00\n add\n /* \"Flassets.sol\":4635:4674 return boughtItems[msg.sender].assetIds */\n dup1\n sload\n dup1\n 0x20\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n 0x00\n swap1\n tag_117:\n dup3\n dup3\n lt\n iszero\n tag_118\n jumpi\n dup4\n dup3\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n dup1\n sload\n tag_120\n swap1\n tag_121\n jump\t// in\n tag_120:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_122\n swap1\n tag_121\n jump\t// in\n tag_122:\n dup1\n iszero\n tag_123\n jumpi\n dup1\n 0x1f\n lt\n tag_124\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_123)\n tag_124:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_125:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_125\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_123:\n pop\n pop\n pop\n pop\n pop\n dup2\n mstore\n 0x20\n add\n swap1\n 0x01\n add\n swap1\n jump(tag_117)\n tag_118:\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"Flassets.sol\":4558:4681 function getMyBoughtAssets() public view returns (string[] memory) {... */\n swap1\n jump\t// out\n /* \"Flassets.sol\":3047:3425 function add(string memory uuid, uint price) public {... */\n tag_43:\n /* \"Flassets.sol\":3118:3135 assetExists(uuid) */\n tag_127\n /* \"Flassets.sol\":3130:3134 uuid */\n dup3\n /* \"Flassets.sol\":3118:3129 assetExists */\n tag_107\n /* \"Flassets.sol\":3118:3135 assetExists(uuid) */\n jump\t// in\n tag_127:\n /* \"Flassets.sol\":3117:3135 !assetExists(uuid) */\n iszero\n /* \"Flassets.sol\":3137:3149 ASSET_EXISTS */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x21\n dup2\n mstore\n 0x20\n add\n data_102d3e6ec31824df63693017f3e7ae18a8227bde413a2c1204aa5613cd39b391\n 0x21\n swap2\n codecopy\n /* \"Flassets.sol\":3109:3150 require(!assetExists(uuid), ASSET_EXISTS) */\n swap1\n tag_128\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_129\n swap2\n swap1\n tag_83\n jump\t// in\n tag_129:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_128:\n pop\n /* \"Flassets.sol\":3161:3185 Flasset storage newAsset */\n 0x00\n /* \"Flassets.sol\":3188:3194 assets */\n 0x05\n /* \"Flassets.sol\":3195:3199 uuid */\n dup4\n /* \"Flassets.sol\":3188:3200 assets[uuid] */\n mload(0x40)\n tag_130\n swap2\n swap1\n tag_91\n jump\t// in\n tag_130:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":3161:3200 Flasset storage newAsset = assets[uuid] */\n swap1\n pop\n /* \"Flassets.sol\":3227:3232 price */\n dup2\n /* \"Flassets.sol\":3210:3218 newAsset */\n dup2\n /* \"Flassets.sol\":3210:3224 newAsset.price */\n 0x00\n add\n /* \"Flassets.sol\":3210:3232 newAsset.price = price */\n dup2\n swap1\n sstore\n pop\n /* \"Flassets.sol\":3261:3271 msg.sender */\n caller\n /* \"Flassets.sol\":3242:3250 newAsset */\n dup2\n /* \"Flassets.sol\":3242:3258 newAsset.manager */\n 0x01\n add\n 0x00\n /* \"Flassets.sol\":3242:3271 newAsset.manager = msg.sender */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffffffffffffffffffffffffffffffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":3304:3305 0 */\n 0x00\n /* \"Flassets.sol\":3281:3289 newAsset */\n dup2\n /* \"Flassets.sol\":3281:3301 newAsset.buyersCount */\n 0x02\n add\n /* \"Flassets.sol\":3281:3305 newAsset.buyersCount = 0 */\n dup2\n swap1\n sstore\n pop\n /* \"Flassets.sol\":3338:3342 true */\n 0x01\n /* \"Flassets.sol\":3320:3328 newAsset */\n dup2\n /* \"Flassets.sol\":3320:3335 newAsset.active */\n 0x03\n add\n 0x00\n /* \"Flassets.sol\":3320:3342 newAsset.active = true */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n iszero\n iszero\n mul\n or\n swap1\n sstore\n pop\n /* \"Flassets.sol\":3353:3361 assetIds */\n 0x06\n /* \"Flassets.sol\":3367:3371 uuid */\n dup4\n /* \"Flassets.sol\":3353:3372 assetIds.push(uuid) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_132\n swap3\n swap2\n swap1\n tag_133\n jump\t// in\n tag_132:\n pop\n /* \"Flassets.sol\":3382:3395 offeredAssets */\n 0x04\n /* \"Flassets.sol\":3382:3407 offeredAssets[msg.sender] */\n 0x00\n /* \"Flassets.sol\":3396:3406 msg.sender */\n caller\n /* \"Flassets.sol\":3382:3407 offeredAssets[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Flassets.sol\":3413:3417 uuid */\n dup4\n /* \"Flassets.sol\":3382:3418 offeredAssets[msg.sender].push(uuid) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_135\n swap3\n swap2\n swap1\n tag_133\n jump\t// in\n tag_135:\n pop\n /* \"Flassets.sol\":3047:3425 function add(string memory uuid, uint price) public {... */\n pop\n pop\n pop\n jump\t// out\n /* \"Flassets.sol\":5325:5440 function getOfferedAssets() public view returns (string[] memory) {... */\n tag_46:\n /* \"Flassets.sol\":5374:5389 string[] memory */\n 0x60\n /* \"Flassets.sol\":5408:5421 offeredAssets */\n 0x04\n /* \"Flassets.sol\":5408:5433 offeredAssets[msg.sender] */\n 0x00\n /* \"Flassets.sol\":5422:5432 msg.sender */\n caller\n /* \"Flassets.sol\":5408:5433 offeredAssets[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Flassets.sol\":5401:5433 return offeredAssets[msg.sender] */\n dup1\n sload\n dup1\n 0x20\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n 0x00\n swap1\n tag_137:\n dup3\n dup3\n lt\n iszero\n tag_138\n jumpi\n dup4\n dup3\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n dup1\n sload\n tag_140\n swap1\n tag_121\n jump\t// in\n tag_140:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_141\n swap1\n tag_121\n jump\t// in\n tag_141:\n dup1\n iszero\n tag_142\n jumpi\n dup1\n 0x1f\n lt\n tag_143\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_142)\n tag_143:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_144:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_144\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_142:\n pop\n pop\n pop\n pop\n pop\n dup2\n mstore\n 0x20\n add\n swap1\n 0x01\n add\n swap1\n jump(tag_137)\n tag_138:\n pop\n pop\n pop\n pop\n swap1\n pop\n /* \"Flassets.sol\":5325:5440 function getOfferedAssets() public view returns (string[] memory) {... */\n swap1\n jump\t// out\n /* \"Flassets.sol\":2472:2494 address public manager */\n tag_50:\n 0x07\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n jump\t// out\n /* \"Flassets.sol\":3431:4158 function buy(string memory uuid) public payable {... */\n tag_55:\n /* \"Flassets.sol\":3497:3514 assetExists(uuid) */\n tag_146\n /* \"Flassets.sol\":3509:3513 uuid */\n dup2\n /* \"Flassets.sol\":3497:3508 assetExists */\n tag_107\n /* \"Flassets.sol\":3497:3514 assetExists(uuid) */\n jump\t// in\n tag_146:\n /* \"Flassets.sol\":3516:3533 ASSET_UNAVAILABLE */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x21\n dup2\n mstore\n 0x20\n add\n data_82243272b38ccda534d270283b572a2720016f5190661db4db4b798196183a19\n 0x21\n swap2\n codecopy\n /* \"Flassets.sol\":3489:3534 require(assetExists(uuid), ASSET_UNAVAILABLE) */\n swap1\n tag_147\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_148\n swap2\n swap1\n tag_83\n jump\t// in\n tag_148:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_147:\n pop\n /* \"Flassets.sol\":3552:3558 assets */\n 0x05\n /* \"Flassets.sol\":3559:3563 uuid */\n dup2\n /* \"Flassets.sol\":3552:3564 assets[uuid] */\n mload(0x40)\n tag_149\n swap2\n swap1\n tag_91\n jump\t// in\n tag_149:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":3552:3571 assets[uuid].active */\n 0x03\n add\n 0x00\n swap1\n sload\n swap1\n 0x0100\n exp\n swap1\n div\n 0xff\n and\n /* \"Flassets.sol\":3573:3587 ASSET_INACTIVE */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x11\n dup2\n mstore\n 0x20\n add\n 0x417373657420697320696e616374697665000000000000000000000000000000\n dup2\n mstore\n pop\n /* \"Flassets.sol\":3544:3588 require(assets[uuid].active, ASSET_INACTIVE) */\n swap1\n tag_150\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_151\n swap2\n swap1\n tag_83\n jump\t// in\n tag_151:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_150:\n pop\n /* \"Flassets.sol\":3598:3613 uint priceInWei */\n 0x00\n /* \"Flassets.sol\":3616:3635 getAssetPrice(uuid) */\n tag_152\n /* \"Flassets.sol\":3630:3634 uuid */\n dup3\n /* \"Flassets.sol\":3616:3629 getAssetPrice */\n tag_32\n /* \"Flassets.sol\":3616:3635 getAssetPrice(uuid) */\n jump\t// in\n tag_152:\n /* \"Flassets.sol\":3598:3635 uint priceInWei = getAssetPrice(uuid) */\n swap1\n pop\n /* \"Flassets.sol\":3666:3676 priceInWei */\n dup1\n /* \"Flassets.sol\":3653:3662 msg.value */\n callvalue\n /* \"Flassets.sol\":3653:3676 msg.value == priceInWei */\n eq\n /* \"Flassets.sol\":3678:3696 PRICE_NOT_MATCHING */\n mload(0x40)\n dup1\n 0x60\n add\n 0x40\n mstore\n dup1\n 0x25\n dup2\n mstore\n 0x20\n add\n data_5e8d0f3a315b68e10627a64c9283d86d7bf91e1f90f6cedc4a4fbb7e69dfa65b\n 0x25\n swap2\n codecopy\n /* \"Flassets.sol\":3645:3697 require(msg.value == priceInWei, PRICE_NOT_MATCHING) */\n swap1\n tag_153\n jumpi\n mload(0x40)\n 0x08c379a000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n 0x04\n add\n tag_154\n swap2\n swap1\n tag_83\n jump\t// in\n tag_154:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n revert\n tag_153:\n pop\n /* \"Flassets.sol\":3716:3722 assets */\n 0x05\n /* \"Flassets.sol\":3723:3727 uuid */\n dup3\n /* \"Flassets.sol\":3716:3728 assets[uuid] */\n mload(0x40)\n tag_155\n swap2\n swap1\n tag_91\n jump\t// in\n tag_155:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":3716:3740 assets[uuid].buyersCount */\n 0x02\n add\n 0x00\n /* \"Flassets.sol\":3716:3742 assets[uuid].buyersCount++ */\n dup2\n sload\n dup1\n swap3\n swap2\n swap1\n tag_156\n swap1\n tag_157\n jump\t// in\n tag_156:\n swap2\n swap1\n pop\n sstore\n pop\n /* \"Flassets.sol\":3752:3763 assetBuyers */\n 0x02\n /* \"Flassets.sol\":3764:3768 uuid */\n dup3\n /* \"Flassets.sol\":3752:3769 assetBuyers[uuid] */\n mload(0x40)\n tag_158\n swap2\n swap1\n tag_91\n jump\t// in\n tag_158:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Flassets.sol\":3752:3781 assetBuyers[uuid][msg.sender] */\n 0x00\n /* \"Flassets.sol\":3770:3780 msg.sender */\n caller\n /* \"Flassets.sol\":3752:3781 assetBuyers[uuid][msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"Flassets.sol\":3752:3783 assetBuyers[uuid][msg.sender]++ */\n dup2\n sload\n dup1\n swap3\n swap2\n swap1\n tag_159\n swap1\n tag_157\n jump\t// in\n tag_159:\n swap2\n swap1\n pop\n sstore\n pop\n /* \"Flassets.sol\":3838:3839 0 */\n 0x00\n /* \"Flassets.sol\":3798:3809 boughtItems */\n 0x03\n /* \"Flassets.sol\":3798:3821 boughtItems[msg.sender] */\n 0x00\n /* \"Flassets.sol\":3810:3820 msg.sender */\n caller\n /* \"Flassets.sol\":3798:3821 boughtItems[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Flassets.sol\":3798:3828 boughtItems[msg.sender].counts */\n 0x01\n add\n /* \"Flassets.sol\":3829:3833 uuid */\n dup4\n /* \"Flassets.sol\":3798:3834 boughtItems[msg.sender].counts[uuid] */\n mload(0x40)\n tag_160\n swap2\n swap1\n tag_91\n jump\t// in\n tag_160:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n sload\n /* \"Flassets.sol\":3798:3839 boughtItems[msg.sender].counts[uuid] == 0 */\n eq\n /* \"Flassets.sol\":3794:3909 if (boughtItems[msg.sender].counts[uuid] == 0) {... */\n iszero\n tag_161\n jumpi\n /* \"Flassets.sol\":3855:3866 boughtItems */\n 0x03\n /* \"Flassets.sol\":3855:3878 boughtItems[msg.sender] */\n 0x00\n /* \"Flassets.sol\":3867:3877 msg.sender */\n caller\n /* \"Flassets.sol\":3855:3878 boughtItems[msg.sender] */\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n 0xffffffffffffffffffffffffffffffffffffffff\n and\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n /* \"Flassets.sol\":3855:3887 boughtItems[msg.sender].assetIds */\n 0x00\n add\n /* \"Flassets.sol\":3893:3897 uuid */\n dup3\n /* \"Flassets.sol\":3855:3898 boughtItems[msg.sender].assetIds.push(uuid) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_163\n swap3\n swap2\n swap1\n tag_133\n jump\t// in\n tag_163:\n pop\n /* \"Flassets.sol\":3794:3909 if (boughtItems[msg.sender].counts[uuid] == 0) {... */\n tag_161:\n /* \"Flassets.sol\":3918:3929 boughtItems */\n 0x03\n