TW
Tripwire
Find contracts. Test them. Review real vulns.

Analysis Run

5ee92886-8335-43e3-bee9-4a7cb539a22c

complete
Chain ID
1
Address
Block Number
Created
Tue, Dec 30, 2025 2:15 PM
Review Summary

What survived the funnel

Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
NFT burn lacks ownership check, enabling destruction of others’ tokens
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30698 report.consolidate complete 1 / 1 3 months ago
75184 artifact.fetch complete 1 / 3 1 week ago
75185 tool.cast_disasm complete 1 / 3 1 week ago
75186 analysis.bundle complete 1 / 3 1 week ago
75187 capability.graph complete 1 / 3 1 week ago
75188 detector.run complete 1 / 3 1 week ago
75189 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
3
No findings?
no
Summary
Found 3 issues: unauthorized NFT burns, non‑fungible transfer accounting inconsistencies, and weak signature validation in the helper.
View stderr
[codex:461208] OpenAI Codex v0.77.0 (research preview)
[codex:461208] --------
[codex:461208] workdir: /tmp/codex-multi-15nlwm_3
[codex:461208] model: gpt-5.2-codex
[codex:461208] provider: openai
[codex:461208] approval: never
[codex:461208] sandbox: read-only
[codex:461208] reasoning effort: xhigh
[codex:461208] reasoning summaries: auto
[codex:461208] session id: 019b6f9a-8eb8-7303-98aa-f47eed7a986c
[codex:461208] --------
[codex:461208] user
[codex:461208] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:461208] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:461208] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:461208] 
[codex:461208] Scope rules:
[codex:461208] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:461208] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:461208] 
[codex:461208] Output MUST be valid JSON matching the provided schema.
[codex:461208] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:461208] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:461208] 
[codex:461208] Output constraints (IMPORTANT):
[codex:461208] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:461208] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:461208] mcp startup: no servers
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Preparing to review audit instructions**
[codex:461208] exec
[codex:461208] /bin/bash -lc ls in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] AUDIT_BUNDLE.txt
[codex:461208] codex-output-schema.json
[codex:461208] contracts
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:461208] 
[codex:461208] ================================================================================
[codex:461208] FILE: contracts/Address.sol
[codex:461208] ================================================================================
[codex:461208] pragma solidity ^0.5.0;
[codex:461208] 
[codex:461208] 
[codex:461208] library Address {
[codex:461208]     function isContract(address account) internal view returns (bool) {
[codex:461208]         uint256 size;
[codex:461208]         assembly {
[codex:461208]             size := extcodesize(account)
[codex:461208]         }
[codex:461208]         return size > 0;
[codex:461208]     }
[codex:461208] }
[codex:461208] 
[codex:461208] ================================================================================
[codex:461208] FILE: contracts/Common.sol
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '200,400p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208]             nfOwners[_id] = _to;
[codex:461208]             // You could keep balance of NF type in base type id like so:
[codex:461208]             uint256 baseType = getNonFungibleBaseType(_id);
[codex:461208]             balances[baseType][_from] = balances[baseType][_from].sub(_value);
[codex:461208]             balances[baseType][_to] = balances[baseType][_to].add(_value);
[codex:461208]         } else {
[codex:461208]             balances[_id][_from] = balances[_id][_from].sub(_value);
[codex:461208]             balances[_id][_to] = balances[_id][_to].add(_value);
[codex:461208]         }
[codex:461208] 
[codex:461208]         emit TransferSingle(msg.sender, _from, _to, _id, _value);
[codex:461208] 
[codex:461208]         if (_to.isContract()) {
[codex:461208]             _doSafeTransferAcceptanceCheck(msg.sender, _from, _to, _id, _value, _data);
[codex:461208]         }
[codex:461208]     }
[codex:461208] 
[codex:461208]     function safeBatchTransferFrom(
[codex:461208]         address _from,
[codex:461208]         address _to,
[codex:461208] exec
[codex:461208] /bin/bash -lc "sed -n '400,800p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208]             "contract returned an unknown value from onERC1155BatchReceived"
[codex:461208]         );
[codex:461208]     }
[codex:461208] 
[codex:461208]     /////////////////////////////////////////// ERC1155 //////////////////////////////////////////////
[codex:461208] 
[codex:461208]     function batchAuthorizeCreators(address[] calldata _addresses) external ownerOnly {
[codex:461208]         for (uint256 i = 0; i < _addresses.length; ++i) {
[codex:461208]             emit Creator(_addresses[i]);
[codex:461208]             creators[_addresses[i]] = true;
[codex:461208]         }
[codex:461208]     }
[codex:461208] 
[codex:461208]     function batchDeauthorizeCreators(address[] calldata _addresses) external ownerOnly {
[codex:461208]         for (uint256 i = 0; i < _addresses.length; ++i) {
[codex:461208]             delete creators[_addresses[i]];
[codex:461208]         }
[codex:461208]     }
[codex:461208] 
[codex:461208]     function allowance(
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Analyzing Gala contract vulnerabilities**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '300,520p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208]    300	        }
[codex:461208]    301	    }
[codex:461208]    302	
[codex:461208]    303	    function approveBatch(
[codex:461208]    304	        address _spender,
[codex:461208]    305	        uint256[] calldata _ids,
[codex:461208]    306	        uint256[] calldata _currentValues,
[codex:461208]    307	        uint256[] calldata _values
[codex:461208]    308	    ) external {
[codex:461208]    309	        require(_ids.length == _currentValues.length, "Arrays must be same length");
[codex:461208]    310	        require(_currentValues.length == _values.length, "Arrays must be same length");
[codex:461208]    311	        for (uint256 i = 0; i < _values.length; i++) {
[codex:461208]    312	            uint256 id = _ids[i];
[codex:461208]    313	            uint256 currentValue = _currentValues[i];
[codex:461208]    314	            uint256 value = _values[i];
[codex:461208]    315	            require(allowances[msg.sender][_spender][id] == currentValue);
[codex:461208]    316	            allowances[msg.sender][_spender][id] = value;
[codex:461208]    317	            emit Approval(msg.sender, _spender, id, currentValue, value);
[codex:461208]    318	        }
[codex:461208]    319	    }
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Adding line numbers for functions**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '120,260p'" in /tmp/codex-multi-15nlwm_3 succeeded in 20ms:
[codex:461208]    120	        emit TransferSingle(msg.sender, address(0x0), address(0x0), _type, 0);
[codex:461208]    121	
[codex:461208]    122	        if (bytes(_uri).length > 0) emit URI(_uri, _type);
[codex:461208]    123	        return _type;
[codex:461208]    124	    }
[codex:461208]    125	
[codex:461208]    126	    function mintNonFungible(
[codex:461208]    127	        uint256 _type,
[codex:461208]    128	        address[] calldata _to,
[codex:461208]    129	        bytes calldata _data
[codex:461208]    130	    ) external creatorOnly {
[codex:461208]    131	        require(isNonFungible(_type));
[codex:461208]    132	        uint256 index = maxIndex[_type] + 1;
[codex:461208]    133	        maxIndex[_type] = _to.length.add(maxIndex[_type]);
[codex:461208]    134	        for (uint256 i = 0; i < _to.length; ++i) {
[codex:461208]    135	            address distributeTo = _to[i];
[codex:461208]    136	            uint256 id = _type | (index + i);
[codex:461208]    137	            require(
[codex:461208]    138	                tokenSupplyLimit[_type] == 0 ||
[codex:461208]    139	                    tokenSupply[_type].add(1) <= tokenSupplyLimit[_type],
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Checking for line numbers in SignatureVerifier**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '560,700p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208]    560	
[codex:461208]    561	================================================================================
[codex:461208]    562	FILE: contracts/SafeMath.sol
[codex:461208]    563	================================================================================
[codex:461208]    564	pragma solidity ^0.5.0;
[codex:461208]    565	
[codex:461208]    566	
[codex:461208]    567	library SafeMath {
[codex:461208]    568	    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
[codex:461208]    569	        if (a == 0) {
[codex:461208]    570	            return 0;
[codex:461208]    571	        }
[codex:461208]    572	        c = a * b;
[codex:461208]    573	        assert(c / a == b);
[codex:461208]    574	        return c;
[codex:461208]    575	    }
[codex:461208]    576	
[codex:461208]    577	    function div(uint256 a, uint256 b) internal pure returns (uint256) {
[codex:461208]    578	        return a / b;
[codex:461208]    579	    }
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Analyzing potential token handling issues**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '150,260p'" in /tmp/codex-multi-15nlwm_3 succeeded in 7ms:
[codex:461208]    150	        require(_to != address(0x0), "cannot send to zero address");
[codex:461208]    151	        require(
[codex:461208]    152	            _from == msg.sender || operatorApproval[_from][msg.sender] == true,
[codex:461208]    153	            "Need operator approval for 3rd party transfers."
[codex:461208]    154	        );
[codex:461208]    155	
[codex:461208]    156	        if (isNonFungible(_id)) {
[codex:461208]    157	            require(nfOwners[_id] == _from);
[codex:461208]    158	            nfOwners[_id] = _to;
[codex:461208]    159	            // You could keep balance of NF type in base type id like so:
[codex:461208]    160	            uint256 baseType = getNonFungibleBaseType(_id);
[codex:461208]    161	            balances[baseType][_from] = balances[baseType][_from].sub(_value);
[codex:461208]    162	            balances[baseType][_to] = balances[baseType][_to].add(_value);
[codex:461208]    163	        } else {
[codex:461208]    164	            balances[_id][_from] = balances[_id][_from].sub(_value);
[codex:461208]    165	            balances[_id][_to] = balances[_id][_to].add(_value);
[codex:461208]    166	        }
[codex:461208]    167	
[codex:461208]    168	        emit TransferSingle(msg.sender, _from, _to, _id, _value);
[codex:461208]    169	
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Preparing for line number removal**
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '300,380p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208]    300	    function isNonFungibleItem(uint256 _id) public pure returns (bool) {
[codex:461208]    301	        // A base type has the NF bit but does has an index.
[codex:461208]    302	        return (_id & TYPE_NF_BIT == TYPE_NF_BIT) && (_id & NF_INDEX_MASK != 0);
[codex:461208]    303	    }
[codex:461208]    304	
[codex:461208]    305	    function ownerOf(uint256 _id) public view returns (address) {
[codex:461208]    306	        return nfOwners[_id];
[codex:461208]    307	    }
[codex:461208]    308	
[codex:461208]    309	    /////////////////////////////////////////// ERC165 //////////////////////////////////////////////
[codex:461208]    310	
[codex:461208]    311	    bytes4 private constant INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7;
[codex:461208]    312	    bytes4 private constant INTERFACE_SIGNATURE_ERC1155 = 0xd9b67a26;
[codex:461208]    313	
[codex:461208]    314	    function supportsInterface(bytes4 _interfaceId) public view returns (bool) {
[codex:461208]    315	        if (
[codex:461208]    316	            _interfaceId == INTERFACE_SIGNATURE_ERC165 ||
[codex:461208]    317	            _interfaceId == INTERFACE_SIGNATURE_ERC1155
[codex:461208]    318	        ) {
[codex:461208]    319	            return true;
[codex:461208] exec
[codex:461208] /bin/bash -lc "nl -ba contracts/Gala.sol | sed -n '380,460p'" in /tmp/codex-multi-15nlwm_3 succeeded in 6ms:
[codex:461208]    380	        uint256 _id
[codex:461208]    381	    ) external view returns (uint256) {
[codex:461208]    382	        return allowances[_owner][_spender][_id];
[codex:461208]    383	    }
[codex:461208]    384	
[codex:461208]    385	    function burn(
[codex:461208]    386	        address _from,
[codex:461208]    387	        uint256[] calldata _ids,
[codex:461208]    388	        uint256[] calldata _values
[codex:461208]    389	    ) external {
[codex:461208]    390	        require(
[codex:461208]    391	            _from == msg.sender || operatorApproval[_from][msg.sender] == true,
[codex:461208]    392	            "Need operator approval for 3rd party burn."
[codex:461208]    393	        );
[codex:461208]    394	        require(_ids.length > 0 && _ids.length == _values.length);
[codex:461208]    395	        for (uint256 i = 0; i < _ids.length; i++) {
[codex:461208]    396	            if (isFungible(_ids[i])) {
[codex:461208]    397	                require(balances[_ids[i]][_from] >= _values[i]);
[codex:461208]    398	                balances[_ids[i]][_from] = balances[_ids[i]][_from].sub(_values[i]);
[codex:461208]    399	            } else {
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Checking file for SignatureVerifier details**
[codex:461208] exec
[codex:461208] /bin/bash -lc 'nl -ba contracts/SignatureVerifier.sol' in /tmp/codex-multi-15nlwm_3 succeeded in 5ms:
[codex:461208]      1	pragma solidity ^0.5.0;
[codex:461208]      2	
[codex:461208]      3	
[codex:461208]      4	contract SignatureVerifier {
[codex:461208]      5	    function validateNodeSignature(
[codex:461208]      6	        string memory nodeHardwareLicenseId,
[codex:461208]      7	        uint256 sigNonce,
[codex:461208]      8	        bytes memory signature
[codex:461208]      9	    ) internal view returns (address signer) {
[codex:461208]     10	        bytes32 r;
[codex:461208]     11	        bytes32 s;
[codex:461208]     12	        uint8 v;
[codex:461208]     13	        (v, r, s) = splitSignature(signature);
[codex:461208]     14	        bytes32 hash = keccak256(abi.encodePacked(nodeHardwareLicenseId, sigNonce, this));
[codex:461208]     15	        bytes32 hashWithHeader = keccak256(
[codex:461208]     16	            abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
[codex:461208]     17	        );
[codex:461208]     18	
[codex:461208]     19	        return ecrecover(hashWithHeader, v, r, s);
[codex:461208]     20	    }
[codex:461208] 
[codex:461208] thinking
[codex:461208] **Identifying signature malleability and hashing risks**
[codex:461208] 
[codex:461208] I’m analyzing potential vulnerabilities in signature validation, focusing on malleable signatures due to missing checks on `v` and `s`, and collisions from using `abi.encodePacked` with dynamic strings and uints causing ambiguity in hashed messages. Though the functions aren't currently used for authorization, these issues could allow misuse if activated later, so I’m preparing detailed findings with severity and evidence for an audit report.
[codex:461208] codex
[codex:461208] {"no_findings":false,"summary":"Found 3 issues: unauthorized NFT burns, non‑fungible transfer accounting inconsistencies, and weak signature validation in the helper.","findings":[{"severity":"high","category":"access_control","title":"NFT burn lacks ownership check, enabling destruction of others’ tokens","exploit_scenario":"An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim’s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim’s token while merely decrementing the attacker’s base-type balance.","recommendation":"Require nfOwners[_id] == _from for non‑fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.","evidence":"burn() deletes nfOwners[_ids[i]] for non‑fungibles without checking that _from owns the token.","locations":["contracts/Gala.sol:385","contracts/Gala.sol:399","contracts/Gala.sol:404","contracts/Gala.sol:405"]},{"severity":"medium","category":"other","title":"Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting","exploit_scenario":"For non‑fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller‑supplied _value to adjust base‑type balances. A sender can transfer an NFT with _value=0 to keep their base‑type balance while ownership moves, or otherwise desynchronize balances. If base‑type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse.","recommendation":"Require _value == 1 for non‑fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base‑type balances.","evidence":"Non‑fungible transfers update balances using _value but never enforce _value == 1.","locations":["contracts/Gala.sol:156","contracts/Gala.sol:161","contracts/Gala.sol:175","contracts/Gala.sol:190","contracts/Gala.sol:196"]},{"severity":"low","category":"auth","title":"Signature verification allows malleable signatures and packed-encoding ambiguity","exploit_scenario":"If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high‑s or non‑standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature‑based access controls.","recommendation":"Enforce v in {27,28} and s in the lower half‑order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed‑encoding collisions.","evidence":"validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.","locations":["contracts/SignatureVerifier.sol:5","contracts/SignatureVerifier.sol:13","contracts/SignatureVerifier.sol:14","contracts/SignatureVerifier.sol:19"]}]}
[codex:461208] tokens used
[codex:461208] 23,888
[codex:461208] {"no_findings":false,"summary":"Found 3 issues: unauthorized NFT burns, non‑fungible transfer accounting inconsistencies, and weak signature validation in the helper.","findings":[{"severity":"high","category":"access_control","title":"NFT burn lacks ownership check, enabling destruction of others’ tokens","exploit_scenario":"An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim’s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim’s token while merely decrementing the attacker’s base-type balance.","recommendation":"Require nfOwners[_id] == _from for non‑fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.","evidence":"burn() deletes nfOwners[_ids[i]] for non‑fungibles without checking that _from owns the token.","locations":["contracts/Gala.sol:385","contracts/Gala.sol:399","contracts/Gala.sol:404","contracts/Gala.sol:405"]},{"severity":"medium","category":"other","title":"Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting","exploit_scenario":"For non‑fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller‑supplied _value to adjust base‑type balances. A sender can transfer an NFT with _value=0 to keep their base‑type balance while ownership moves, or otherwise desynchronize balances. If base‑type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse.","recommendation":"Require _value == 1 for non‑fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base‑type balances.","evidence":"Non‑fungible transfers update balances using _value but never enforce _value == 1.","locations":["contracts/Gala.sol:156","contracts/Gala.sol:161","contracts/Gala.sol:175","contracts/Gala.sol:190","contracts/Gala.sol:196"]},{"severity":"low","category":"auth","title":"Signature verification allows malleable signatures and packed-encoding ambiguity","exploit_scenario":"If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high‑s or non‑standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature‑based access controls.","recommendation":"Enforce v in {27,28} and s in the lower half‑order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed‑encoding collisions.","evidence":"validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.","locations":["contracts/SignatureVerifier.sol:5","contracts/SignatureVerifier.sol:13","contracts/SignatureVerifier.sol:14","contracts/SignatureVerifier.sol:19"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T14:15:18.632483+00:00",
        "returncode": 0
    },
    "summary": "Found 3 issues: unauthorized NFT burns, non\u2011fungible transfer accounting inconsistencies, and weak signature validation in the helper.",
    "raw_final": {
        "summary": "Found 3 issues: unauthorized NFT burns, non\u2011fungible transfer accounting inconsistencies, and weak signature validation in the helper.",
        "findings": [
            {
                "title": "NFT burn lacks ownership check, enabling destruction of others\u2019 tokens",
                "category": "access_control",
                "evidence": "burn() deletes nfOwners[_ids[i]] for non\u2011fungibles without checking that _from owns the token.",
                "severity": "high",
                "locations": [
                    "contracts/Gala.sol:385",
                    "contracts/Gala.sol:399",
                    "contracts/Gala.sol:404",
                    "contracts/Gala.sol:405"
                ],
                "recommendation": "Require nfOwners[_id] == _from for non\u2011fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.",
                "exploit_scenario": "An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim\u2019s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim\u2019s token while merely decrementing the attacker\u2019s base-type balance."
            },
            {
                "title": "Non\u2011fungible transfers accept arbitrary _value, breaking base\u2011type accounting",
                "category": "other",
                "evidence": "Non\u2011fungible transfers update balances using _value but never enforce _value == 1.",
                "severity": "medium",
                "locations": [
                    "contracts/Gala.sol:156",
                    "contracts/Gala.sol:161",
                    "contracts/Gala.sol:175",
                    "contracts/Gala.sol:190",
                    "contracts/Gala.sol:196"
                ],
                "recommendation": "Require _value == 1 for non\u2011fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base\u2011type balances.",
                "exploit_scenario": "For non\u2011fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller\u2011supplied _value to adjust base\u2011type balances. A sender can transfer an NFT with _value=0 to keep their base\u2011type balance while ownership moves, or otherwise desynchronize balances. If base\u2011type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse."
            },
            {
                "title": "Signature verification allows malleable signatures and packed-encoding ambiguity",
                "category": "auth",
                "evidence": "validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.",
                "severity": "low",
                "locations": [
                    "contracts/SignatureVerifier.sol:5",
                    "contracts/SignatureVerifier.sol:13",
                    "contracts/SignatureVerifier.sol:14",
                    "contracts/SignatureVerifier.sol:19"
                ],
                "recommendation": "Enforce v in {27,28} and s in the lower half\u2011order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed\u2011encoding collisions.",
                "exploit_scenario": "If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high\u2011s or non\u2011standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature\u2011based access controls."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
1
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
5
Total opcodes
8249
Flags
delegatecall_present heavy_ext_balance_usage
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x01c3
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x5e81b958
00000026: GT
00000027: PUSH2 0x00f9
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xa22cb465
00000031: GT
00000032: PUSH2 0x0097
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xcc10e401
0000003c: GT
0000003d: PUSH2 0x0071
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xcc10e401
00000047: EQ
00000048: PUSH2 0x0b38
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xe44591f0
00000052: EQ
00000053: PUSH2 0x0ba8
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xe985e9c5
0000005d: EQ
0000005e: PUSH2 0x0bc5
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xf242432a
00000068: EQ
00000069: PUSH2 0x0bf3
0000006c: JUMPI
0000006d: PUSH2 0x01c3
00000070: JUMP
00000071: JUMPDEST
00000072: DUP1
00000073: PUSH4 0xa22cb465
00000078: EQ
00000079: PUSH2 0x0a7f
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0xa9e7d531
00000083: EQ
00000084: PUSH2 0x0aad
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0xadebf6f2
0000008e: EQ
0000008f: PUSH2 0x0b1b
00000092: JUMPI
00000093: PUSH2 0x01c3
00000096: JUMP
00000097: JUMPDEST
00000098: DUP1
00000099: PUSH4 0x7269a327
0000009e: GT
0000009f: PUSH2 0x00d3
000000a2: JUMPI
000000a3: DUP1
000000a4: PUSH4 0x7269a327
000000a9: EQ
000000aa: PUSH2 0x0a1a
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0x8413e8b3
000000b4: EQ
000000b5: PUSH2 0x0a37
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0x8da5cb5b
000000bf: EQ
000000c0: PUSH2 0x0a5a
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x9cca1c64
000000ca: EQ
000000cb: PUSH2 0x0a62
000000ce: JUMPI
000000cf: PUSH2 0x01c3
000000d2: JUMP
000000d3: JUMPDEST
000000d4: DUP1
000000d5: PUSH4 0x5e81b958
000000da: EQ
000000db: PUSH2 0x09a7
000000de: JUMPI
000000df: DUP1
000000e0: PUSH4 0x6352211e
000000e5: EQ
000000e6: PUSH2 0x09c4
000000e9: JUMPI
000000ea: DUP1
000000eb: PUSH4 0x6f969c2d
000000f0: EQ
000000f1: PUSH2 0x09fd
000000f4: JUMPI
000000f5: PUSH2 0x01c3
000000f8: JUMP
000000f9: JUMPDEST
000000fa: DUP1
000000fb: PUSH4 0x352949d3
00000100: GT
00000101: PUSH2 0x0166
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x4e1273f4
0000010b: GT
0000010c: PUSH2 0x0140
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x4e1273f4
00000116: EQ
00000117: PUSH2 0x0680
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0x54dbdbf4
00000121: EQ
00000122: PUSH2 0x078e
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0x598af9e7
0000012c: EQ
0000012d: PUSH2 0x0853
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0x5b286d4a
00000137: EQ
00000138: PUSH2 0x0889
0000013b: JUMPI
0000013c: PUSH2 0x01c3
0000013f: JUMP
00000140: JUMPDEST
00000141: DUP1
00000142: PUSH4 0x352949d3
00000147: EQ
00000148: PUSH2 0x04d6
0000014b: JUMPI
0000014c: DUP1
0000014d: PUSH4 0x36fc1079
00000152: EQ
00000153: PUSH2 0x0544
00000156: JUMPI
00000157: DUP1
00000158: PUSH4 0x3db0f8ab
0000015d: EQ
0000015e: PUSH2 0x05b2
00000161: JUMPI
00000162: PUSH2 0x01c3
00000165: JUMP
00000166: JUMPDEST
00000167: DUP1
00000168: PUSH4 0x183fb254
0000016d: GT
0000016e: PUSH2 0x01a2
00000171: JUMPI
00000172: DUP1
00000173: PUSH4 0x183fb254
00000178: EQ
00000179: PUSH2 0x025e
0000017c: JUMPI
0000017d: DUP1
0000017e: PUSH4 0x2693ebf2
00000183: EQ
00000184: PUSH2 0x0375
00000187: JUMPI
00000188: DUP1
00000189: PUSH4 0x28fd70ec
0000018e: EQ
0000018f: PUSH2 0x0392
00000192: JUMPI
00000193: DUP1
00000194: PUSH4 0x2eb2c2d6
00000199: EQ
0000019a: PUSH2 0x03af
0000019d: JUMPI
0000019e: PUSH2 0x01c3
000001a1: JUMP
000001a2: JUMPDEST
000001a3: DUP1
000001a4: PUSH3 0xfdd58e
000001a8: EQ
000001a9: PUSH2 0x01c8
000001ac: JUMPI
000001ad: DUP1
000001ae: PUSH4 0x01ffc9a7
000001b3: EQ
000001b4: PUSH2 0x0206
000001b7: JUMPI
000001b8: DUP1
000001b9: PUSH4 0x08d7d469
000001be: EQ
000001bf: PUSH2 0x0241
000001c2: JUMPI
000001c3: JUMPDEST
000001c4: PUSH1 0x00
000001c6: DUP1
000001c7: REVERT
000001c8: JUMPDEST
000001c9: PUSH2 0x01f4
000001cc: PUSH1 0x04
000001ce: DUP1
000001cf: CALLDATASIZE
000001d0: SUB
000001d1: PUSH1 0x40
000001d3: DUP2
000001d4: LT
000001d5: ISZERO
000001d6: PUSH2 0x01de
000001d9: JUMPI
000001da: PUSH1 0x00
000001dc: DUP1
000001dd: REVERT
000001de: JUMPDEST
000001df: POP
000001e0: PUSH1 0x01
000001e2: PUSH1 0x01
000001e4: PUSH1 0xa0
000001e6: SHL
000001e7: SUB
000001e8: DUP2
000001e9: CALLDATALOAD
000001ea: AND
000001eb: SWAP1
000001ec: PUSH1 0x20
000001ee: ADD
000001ef: CALLDATALOAD
000001f0: PUSH2 0x0c86
000001f3: JUMP
000001f4: JUMPDEST
000001f5: PUSH1 0x40
000001f7: DUP1
000001f8: MLOAD
000001f9: SWAP2
000001fa: DUP3
000001fb: MSTORE
000001fc: MLOAD
000001fd: SWAP1
000001fe: DUP2
000001ff: SWAP1
00000200: SUB
00000201: PUSH1 0x20
00000203: ADD
00000204: SWAP1
00000205: RETURN
00000206: JUMPDEST
00000207: PUSH2 0x022d
0000020a: PUSH1 0x04
0000020c: DUP1
0000020d: CALLDATASIZE
0000020e: SUB
0000020f: PUSH1 0x20
00000211: DUP2
00000212: LT
00000213: ISZERO
00000214: PUSH2 0x021c
00000217: JUMPI
00000218: PUSH1 0x00
0000021a: DUP1
0000021b: REVERT
0000021c: JUMPDEST
0000021d: POP
0000021e: CALLDATALOAD
0000021f: PUSH1 0x01
00000221: PUSH1 0x01
00000223: PUSH1 0xe0
00000225: SHL
00000226: SUB
00000227: NOT
00000228: AND
00000229: PUSH2 0x0cf6
0000022c: JUMP
0000022d: JUMPDEST
0000022e: PUSH1 0x40
00000230: DUP1
00000231: MLOAD
00000232: SWAP2
00000233: ISZERO
00000234: ISZERO
00000235: DUP3
00000236: MSTORE
00000237: MLOAD
00000238: SWAP1
00000239: DUP2
0000023a: SWAP1
0000023b: SUB
0000023c: PUSH1 0x20
0000023e: ADD
0000023f: SWAP1
00000240: RETURN
00000241: JUMPDEST
00000242: PUSH2 0x01f4
00000245: PUSH1 0x04
00000247: DUP1
00000248: CALLDATASIZE
00000249: SUB
0000024a: PUSH1 0x20
0000024c: DUP2
0000024d: LT
0000024e: ISZERO
0000024f: PUSH2 0x0257
00000252: JUMPI
00000253: PUSH1 0x00
00000255: DUP1
00000256: REVERT
00000257: JUMPDEST
00000258: POP
00000259: CALLDATALOAD
0000025a: PUSH2 0x0d3d
0000025d: JUMP
0000025e: JUMPDEST
0000025f: PUSH2 0x0373
00000262: PUSH1 0x04
00000264: DUP1
00000265: CALLDATASIZE
00000266: SUB
00000267: PUSH1 0x80
00000269: DUP2
0000026a: LT
0000026b: ISZERO
0000026c: PUSH2 0x0274
0000026f: JUMPI
00000270: PUSH1 0x00
00000272: DUP1
00000273: REVERT
00000274: JUMPDEST
00000275: DUP2
00000276: CALLDATALOAD
00000277: SWAP2
00000278: SWAP1
00000279: DUP2
0000027a: ADD
0000027b: SWAP1
0000027c: PUSH1 0x40
0000027e: DUP2
0000027f: ADD
00000280: PUSH1 0x20
00000282: DUP3
00000283: ADD
00000284: CALLDATALOAD
00000285: PUSH1 0x01
00000287: PUSH1 0x20
00000289: SHL
0000028a: DUP2
0000028b: GT
0000028c: ISZERO
0000028d: PUSH2 0x0295
00000290: JUMPI
00000291: PUSH1 0x00
00000293: DUP1
00000294: REVERT
00000295: JUMPDEST
00000296: DUP3
00000297: ADD
00000298: DUP4
00000299: PUSH1 0x20
0000029b: DUP3
0000029c: ADD
0000029d: GT
0000029e: ISZERO
0000029f: PUSH2 0x02a7
000002a2: JUMPI
000002a3: PUSH1 0x00
000002a5: DUP1
000002a6: REVERT
000002a7: JUMPDEST
000002a8: DUP1
000002a9: CALLDATALOAD
000002aa: SWAP1
000002ab: PUSH1 0x20
000002ad: ADD
000002ae: SWAP2
000002af: DUP5
000002b0: PUSH1 0x20
000002b2: DUP4
000002b3: MUL
000002b4: DUP5
000002b5: ADD
000002b6: GT
000002b7: PUSH1 0x01
000002b9: PUSH1 0x20
000002bb: SHL
000002bc: DUP4
000002bd: GT
000002be: OR
000002bf: ISZERO
000002c0: PUSH2 0x02c8
000002c3: JUMPI
000002c4: PUSH1 0x00
000002c6: DUP1
000002c7: REVERT
000002c8: JUMPDEST
000002c9: SWAP2
000002ca: SWAP4
000002cb: SWAP1
000002cc: SWAP3
000002cd: SWAP1
000002ce: SWAP2
000002cf: PUSH1 0x20
000002d1: DUP2
000002d2: ADD
000002d3: SWAP1
000002d4: CALLDATALOAD
000002d5: PUSH1 0x01
000002d7: PUSH1 0x20
000002d9: SHL
000002da: DUP2
000002db: GT
000002dc: ISZERO
000002dd: PUSH2 0x02e5
000002e0: JUMPI
000002e1: PUSH1 0x00
000002e3: DUP1
000002e4: REVERT
000002e5: JUMPDEST
000002e6: DUP3
000002e7: ADD
000002e8: DUP4
000002e9: PUSH1 0x20
000002eb: DUP3
000002ec: ADD
000002ed: GT
000002ee: ISZERO
000002ef: PUSH2 0x02f7
000002f2: JUMPI
000002f3: PUSH1 0x00
000002f5: DUP1
000002f6: REVERT
000002f7: JUMPDEST
000002f8: DUP1
000002f9: CALLDATALOAD
000002fa: SWAP1
000002fb: PUSH1 0x20
000002fd: ADD
000002fe: SWAP2
000002ff: DUP5
00000300: PUSH1 0x20
00000302: DUP4
00000303: MUL
00000304: DUP5
00000305: ADD
00000306: GT
00000307: PUSH1 0x01
00000309: PUSH1 0x20
0000030b: SHL
0000030c: DUP4
0000030d: GT
0000030e: OR
0000030f: ISZERO
00000310: PUSH2 0x0318
00000313: JUMPI
00000314: PUSH1 0x00
00000316: DUP1
00000317: REVERT
00000318: JUMPDEST
00000319: SWAP2
0000031a: SWAP4
0000031b: SWAP1
0000031c: SWAP3
0000031d: SWAP1
0000031e: SWAP2
0000031f: PUSH1 0x20
00000321: DUP2
00000322: ADD
00000323: SWAP1
00000324: CALLDATALOAD
00000325: PUSH1 0x01
00000327: PUSH1 0x20
00000329: SHL
0000032a: DUP2
0000032b: GT
0000032c: ISZERO
0000032d: PUSH2 0x0335
00000330: JUMPI
00000331: PUSH1 0x00
00000333: DUP1
00000334: REVERT
00000335: JUMPDEST
00000336: DUP3
00000337: ADD
00000338: DUP4
00000339: PUSH1 0x20
0000033b: DUP3
0000033c: ADD
0000033d: GT
0000033e: ISZERO
0000033f: PUSH2 0x0347
00000342: JUMPI
00000343: PUSH1 0x00
00000345: DUP1
00000346: REVERT
00000347: JUMPDEST
00000348: DUP1
00000349: CALLDATALOAD
0000034a: SWAP1
0000034b: PUSH1 0x20
0000034d: ADD
0000034e: SWAP2
0000034f: DUP5
00000350: PUSH1 0x01
00000352: DUP4
00000353: MUL
00000354: DUP5
00000355: ADD
00000356: GT
00000357: PUSH1 0x01
00000359: PUSH1 0x20
0000035b: SHL
0000035c: DUP4
0000035d: GT
0000035e: OR
0000035f: ISZERO
00000360: PUSH2 0x0368
00000363: JUMPI
00000364: PUSH1 0x00
00000366: DUP1
00000367: REVERT
00000368: JUMPDEST
00000369: POP
0000036a: SWAP1
0000036b: SWAP3
0000036c: POP
0000036d: SWAP1
0000036e: POP
0000036f: PUSH2 0x0d4f
00000372: JUMP
00000373: JUMPDEST
00000374: STOP
00000375: JUMPDEST
00000376: PUSH2 0x01f4
00000379: PUSH1 0x04
0000037b: DUP1
0000037c: CALLDATASIZE
0000037d: SUB
0000037e: PUSH1 0x20
00000380: DUP2
00000381: LT
00000382: ISZERO
00000383: PUSH2 0x038b
00000386: JUMPI
00000387: PUSH1 0x00
00000389: DUP1
0000038a: REVERT
0000038b: JUMPDEST
0000038c: POP
0000038d: CALLDATALOAD
0000038e: PUSH2 0x10dd
00000391: JUMP
00000392: JUMPDEST
00000393: PUSH2 0x01f4
00000396: PUSH1 0x04
00000398: DUP1
00000399: CALLDATASIZE
0000039a: SUB
0000039b: PUSH1 0x20
0000039d: DUP2
0000039e: LT
0000039f: ISZERO
000003a0: PUSH2 0x03a8
000003a3: JUMPI
000003a4: PUSH1 0x00
000003a6: DUP1
000003a7: REVERT
000003a8: JUMPDEST
000003a9: POP
000003aa: CALLDATALOAD
000003ab: PUSH2 0x10ef
000003ae: JUMP
000003af: JUMPDEST
000003b0: PUSH2 0x0373
000003b3: PUSH1 0x04
000003b5: DUP1
000003b6: CALLDATASIZE
000003b7: SUB
000003b8: PUSH1 0xa0
000003ba: DUP2
000003bb: LT
000003bc: ISZERO
000003bd: PUSH2 0x03c5
000003c0: JUMPI
000003c1: PUSH1 0x00
000003c3: DUP1
000003c4: REVERT
000003c5: JUMPDEST
000003c6: PUSH1 0x01
000003c8: PUSH1 0x01
000003ca: PUSH1 0xa0
000003cc: SHL
000003cd: SUB
000003ce: DUP3
000003cf: CALLDATALOAD
000003d0: DUP2
000003d1: AND
000003d2: SWAP3
000003d3: PUSH1 0x20
000003d5: DUP2
000003d6: ADD
000003d7: CALLDATALOAD
000003d8: SWAP1
000003d9: SWAP2
000003da: AND
000003db: SWAP2
000003dc: DUP2
000003dd: ADD
000003de: SWAP1
000003df: PUSH1 0x60
000003e1: DUP2
000003e2: ADD
000003e3: PUSH1 0x40
000003e5: DUP3
000003e6: ADD
000003e7: CALLDATALOAD
000003e8: PUSH1 0x01
000003ea: PUSH1 0x20
000003ec: SHL
000003ed: DUP2
000003ee: GT
000003ef: ISZERO
000003f0: PUSH2 0x03f8
000003f3: JUMPI
000003f4: PUSH1 0x00
000003f6: DUP1
000003f7: REVERT
000003f8: JUMPDEST
000003f9: DUP3
000003fa: ADD
000003fb: DUP4
000003fc: PUSH1 0x20
000003fe: DUP3
000003ff: ADD
00000400: GT
00000401: ISZERO
00000402: PUSH2 0x040a
00000405: JUMPI
00000406: PUSH1 0x00
00000408: DUP1
00000409: REVERT
0000040a: JUMPDEST
0000040b: DUP1
0000040c: CALLDATALOAD
0000040d: SWAP1
0000040e: PUSH1 0x20
00000410: ADD
00000411: SWAP2
00000412: DUP5
00000413: PUSH1 0x20
00000415: DUP4
00000416: MUL
00000417: DUP5
00000418: ADD
00000419: GT
0000041a: PUSH1 0x01
0000041c: PUSH1 0x20
0000041e: SHL
0000041f: DUP4
00000420: GT
00000421: OR
00000422: ISZERO
00000423: PUSH2 0x042b
00000426: JUMPI
00000427: PUSH1 0x00
00000429: DUP1
0000042a: REVERT
0000042b: JUMPDEST
0000042c: SWAP2
0000042d: SWAP4
0000042e: SWAP1
0000042f: SWAP3
00000430: SWAP1
00000431: SWAP2
00000432: PUSH1 0x20
00000434: DUP2
00000435: ADD
00000436: SWAP1
00000437: CALLDATALOAD
00000438: PUSH1 0x01
0000043a: PUSH1 0x20
0000043c: SHL
0000043d: DUP2
0000043e: GT
0000043f: ISZERO
00000440: PUSH2 0x0448
00000443: JUMPI
00000444: PUSH1 0x00
00000446: DUP1
00000447: REVERT
00000448: JUMPDEST
00000449: DUP3
0000044a: ADD
0000044b: DUP4
0000044c: PUSH1 0x20
0000044e: DUP3
0000044f: ADD
00000450: GT
00000451: ISZERO
00000452: PUSH2 0x045a
00000455: JUMPI
00000456: PUSH1 0x00
00000458: DUP1
00000459: REVERT
0000045a: JUMPDEST
0000045b: DUP1
0000045c: CALLDATALOAD
0000045d: SWAP1
0000045e: PUSH1 0x20
00000460: ADD
00000461: SWAP2
00000462: DUP5
00000463: PUSH1 0x20
00000465: DUP4
00000466: MUL
00000467: DUP5
00000468: ADD
00000469: GT
0000046a: PUSH1 0x01
0000046c: PUSH1 0x20
0000046e: SHL
0000046f: DUP4
00000470: GT
00000471: OR
00000472: ISZERO
00000473: PUSH2 0x047b
00000476: JUMPI
00000477: PUSH1 0x00
00000479: DUP1
0000047a: REVERT
0000047b: JUMPDEST
0000047c: SWAP2
0000047d: SWAP4
0000047e: SWAP1
0000047f: SWAP3
00000480: SWAP1
00000481: SWAP2
00000482: PUSH1 0x20
00000484: DUP2
00000485: ADD
00000486: SWAP1
00000487: CALLDATALOAD
00000488: PUSH1 0x01
0000048a: PUSH1 0x20
0000048c: SHL
0000048d: DUP2
0000048e: GT
0000048f: ISZERO
00000490: PUSH2 0x0498
00000493: JUMPI
00000494: PUSH1 0x00
00000496: DUP1
00000497: REVERT
00000498: JUMPDEST
00000499: DUP3
0000049a: ADD
0000049b: DUP4
0000049c: PUSH1 0x20
0000049e: DUP3
0000049f: ADD
000004a0: GT
000004a1: ISZERO
000004a2: PUSH2 0x04aa
000004a5: JUMPI
000004a6: PUSH1 0x00
000004a8: DUP1
000004a9: REVERT
000004aa: JUMPDEST
000004ab: DUP1
000004ac: CALLDATALOAD
000004ad: SWAP1
000004ae: PUSH1 0x20
000004b0: ADD
000004b1: SWAP2
000004b2: DUP5
000004b3: PUSH1 0x01
000004b5: DUP4
000004b6: MUL
000004b7: DUP5
000004b8: ADD
000004b9: GT
000004ba: PUSH1 0x01
000004bc: PUSH1 0x20
000004be: SHL
000004bf: DUP4
000004c0: GT
000004c1: OR
000004c2: ISZERO
000004c3: PUSH2 0x04cb
000004c6: JUMPI
000004c7: PUSH1 0x00
000004c9: DUP1
000004ca: REVERT
000004cb: JUMPDEST
000004cc: POP
000004cd: SWAP1
000004ce: SWAP3
000004cf: POP
000004d0: SWAP1
000004d1: POP
000004d2: PUSH2 0x1101
000004d5: JUMP
000004d6: JUMPDEST
000004d7: PUSH2 0x0373
000004da: PUSH1 0x04
000004dc: DUP1
000004dd: CALLDATASIZE
000004de: SUB
000004df: PUSH1 0x20
000004e1: DUP2
000004e2: LT
000004e3: ISZERO
000004e4: PUSH2 0x04ec
000004e7: JUMPI
000004e8: PUSH1 0x00
000004ea: DUP1
000004eb: REVERT
000004ec: JUMPDEST
000004ed: DUP2
000004ee: ADD
000004ef: SWAP1
000004f0: PUSH1 0x20
000004f2: DUP2
000004f3: ADD
000004f4: DUP2
000004f5: CALLDATALOAD
000004f6: PUSH1 0x01
000004f8: PUSH1 0x20
000004fa: SHL
000004fb: DUP2
000004fc: GT
000004fd: ISZERO
000004fe: PUSH2 0x0506
00000501: JUMPI
00000502: PUSH1 0x00
00000504: DUP1
00000505: REVERT
00000506: JUMPDEST
00000507: DUP3
00000508: ADD
00000509: DUP4
0000050a: PUSH1 0x20
0000050c: DUP3
0000050d: ADD
0000050e: GT
0000050f: ISZERO
00000510: PUSH2 0x0518
00000513: JUMPI
00000514: PUSH1 0x00
00000516: DUP1
00000517: REVERT
00000518: JUMPDEST
00000519: DUP1
0000051a: CALLDATALOAD
0000051b: SWAP1
0000051c: PUSH1 0x20
0000051e: ADD
0000051f: SWAP2
00000520: DUP5
00000521: PUSH1 0x20
00000523: DUP4
00000524: MUL
00000525: DUP5
00000526: ADD
00000527: GT
00000528: PUSH1 0x01
0000052a: PUSH1 0x20
0000052c: SHL
0000052d: DUP4
0000052e: GT
0000052f: OR
00000530: ISZERO
00000531: PUSH2 0x0539
00000534: JUMPI
00000535: PUSH1 0x00
00000537: DUP1
00000538: REVERT
00000539: JUMPDEST
0000053a: POP
0000053b: SWAP1
0000053c: SWAP3
0000053d: POP
0000053e: SWAP1
0000053f: POP
00000540: PUSH2 0x16f6
00000543: JUMP
00000544: JUMPDEST
00000545: PUSH2 0x0373
00000548: PUSH1 0x04
0000054a: DUP1
0000054b: CALLDATASIZE
0000054c: SUB
0000054d: PUSH1 0x40
0000054f: DUP2
00000550: LT
00000551: ISZERO
00000552: PUSH2 0x055a
00000555: JUMPI
00000556: PUSH1 0x00
00000558: DUP1
00000559: REVERT
0000055a: JUMPDEST
0000055b: DUP2
0000055c: ADD
0000055d: SWAP1
0000055e: PUSH1 0x20
00000560: DUP2
00000561: ADD
00000562: DUP2
00000563: CALLDATALOAD
00000564: PUSH1 0x01
00000566: PUSH1 0x20
00000568: SHL
00000569: DUP2
0000056a: GT
0000056b: ISZERO
0000056c: PUSH2 0x0574
0000056f: JUMPI
00000570: PUSH1 0x00
00000572: DUP1
00000573: REVERT
00000574: JUMPDEST
00000575: DUP3
00000576: ADD
00000577: DUP4
00000578: PUSH1 0x20
0000057a: DUP3
0000057b: ADD
0000057c: GT
0000057d: ISZERO
0000057e: PUSH2 0x0586
00000581: JUMPI
00000582: PUSH1 0x00
00000584: DUP1
00000585: REVERT
00000586: JUMPDEST
00000587: DUP1
00000588: CALLDATALOAD
00000589: SWAP1
0000058a: PUSH1 0x20
0000058c: ADD
0000058d: SWAP2
0000058e: DUP5
0000058f: PUSH1 0x01
00000591: DUP4
00000592: MUL
00000593: DUP5
00000594: ADD
00000595: GT
00000596: PUSH1 0x01
00000598: PUSH1 0x20
0000059a: SHL
0000059b: DUP4
0000059c: GT
0000059d: OR
0000059e: ISZERO
0000059f: PUSH2 0x05a7
000005a2: JUMPI
000005a3: PUSH1 0x00
000005a5: DUP1
000005a6: REVERT
000005a7: JUMPDEST
000005a8: SWAP2
000005a9: SWAP4
000005aa: POP
000005ab: SWAP2
000005ac: POP
000005ad: CALLDATALOAD
000005ae: PUSH2 0x175f
000005b1: JUMP
000005b2: JUMPDEST
000005b3: PUSH2 0x0373
000005b6: PUSH1 0x04
000005b8: DUP1
000005b9: CALLDATASIZE
000005ba: SUB
000005bb: PUSH1 0x60
000005bd: DUP2
000005be: LT
000005bf: ISZERO
000005c0: PUSH2 0x05c8
000005c3: JUMPI
000005c4: PUSH1 0x00
000005c6: DUP1
000005c7: REVERT
000005c8: JUMPDEST
000005c9: PUSH1 0x01
000005cb: PUSH1 0x01
000005cd: PUSH1 0xa0
000005cf: SHL
000005d0: SUB
000005d1: DUP3
000005d2: CALLDATALOAD
000005d3: AND
000005d4: SWAP2
000005d5: SWAP1
000005d6: DUP2
000005d7: ADD
000005d8: SWAP1
000005d9: PUSH1 0x40
000005db: DUP2
000005dc: ADD
000005dd: PUSH1 0x20
000005df: DUP3
000005e0: ADD
000005e1: CALLDATALOAD
000005e2: PUSH1 0x01
000005e4: PUSH1 0x20
000005e6: SHL
000005e7: DUP2
000005e8: GT
000005e9: ISZERO
000005ea: PUSH2 0x05f2
000005ed: JUMPI
000005ee: PUSH1 0x00
000005f0: DUP1
000005f1: REVERT
000005f2: JUMPDEST
000005f3: DUP3
000005f4: ADD
000005f5: DUP4
000005f6: PUSH1 0x20
000005f8: DUP3
000005f9: ADD
000005fa: GT
000005fb: ISZERO
000005fc: PUSH2 0x0604
000005ff: JUMPI
00000600: PUSH1 0x00
00000602: DUP1
00000603: REVERT
00000604: JUMPDEST
00000605: DUP1
00000606: CALLDATALOAD
00000607: SWAP1
00000608: PUSH1 0x20
0000060a: ADD
0000060b: SWAP2
0000060c: DUP5
0000060d: PUSH1 0x20
0000060f: DUP4
00000610: MUL
00000611: DUP5
00000612: ADD
00000613: GT
00000614: PUSH1 0x01
00000616: PUSH1 0x20
00000618: SHL
00000619: DUP4
0000061a: GT
0000061b: OR
0000061c: ISZERO
0000061d: PUSH2 0x0625
00000620: JUMPI
00000621: PUSH1 0x00
00000623: DUP1
00000624: REVERT
00000625: JUMPDEST
00000626: SWAP2
00000627: SWAP4
00000628: SWAP1
00000629: SWAP3
0000062a: SWAP1
0000062b: SWAP2
0000062c: PUSH1 0x20
0000062e: DUP2
0000062f: ADD
00000630: SWAP1
00000631: CALLDATALOAD
00000632: PUSH1 0x01
00000634: PUSH1 0x20
00000636: SHL
00000637: DUP2
00000638: GT
00000639: ISZERO
0000063a: PUSH2 0x0642
0000063d: JUMPI
0000063e: PUSH1 0x00
00000640: DUP1
00000641: REVERT
00000642: JUMPDEST
00000643: DUP3
00000644: ADD
00000645: DUP4
00000646: PUSH1 0x20
00000648: DUP3
00000649: ADD
0000064a: GT
0000064b: ISZERO
0000064c: PUSH2 0x0654
0000064f: JUMPI
00000650: PUSH1 0x00
00000652: DUP1
00000653: REVERT
00000654: JUMPDEST
00000655: DUP1
00000656: CALLDATALOAD
00000657: SWAP1
00000658: PUSH1 0x20
0000065a: ADD
0000065b: SWAP2
0000065c: DUP5
0000065d: PUSH1 0x20
0000065f: DUP4
00000660: MUL
00000661: DUP5
00000662: ADD
00000663: GT
00000664: PUSH1 0x01
00000666: PUSH1 0x20
00000668: SHL
00000669: DUP4
0000066a: GT
0000066b: OR
0000066c: ISZERO
0000066d: PUSH2 0x0675
00000670: JUMPI
00000671: PUSH1 0x00
00000673: DUP1
00000674: REVERT
00000675: JUMPDEST
00000676: POP
00000677: SWAP1
00000678: SWAP3
00000679: POP
0000067a: SWAP1
0000067b: POP
0000067c: PUSH2 0x1821
0000067f: JUMP
00000680: JUMPDEST
00000681: PUSH2 0x073e
00000684: PUSH1 0x04
00000686: DUP1
00000687: CALLDATASIZE
00000688: SUB
00000689: PUSH1 0x40
0000068b: DUP2
0000068c: LT
0000068d: ISZERO
0000068e: PUSH2 0x0696
00000691: JUMPI
00000692: PUSH1 0x00
00000694: DUP1
00000695: REVERT
00000696: JUMPDEST
00000697: DUP2
00000698: ADD
00000699: SWAP1
0000069a: PUSH1 0x20
0000069c: DUP2
0000069d: ADD
0000069e: DUP2
0000069f: CALLDATALOAD
000006a0: PUSH1 0x01
000006a2: PUSH1 0x20
000006a4: SHL
000006a5: DUP2
000006a6: GT
000006a7: ISZERO
000006a8: PUSH2 0x06b0
000006ab: JUMPI
000006ac: PUSH1 0x00
000006ae: DUP1
000006af: REVERT
000006b0: JUMPDEST
000006b1: DUP3
000006b2: ADD
000006b3: DUP4
000006b4: PUSH1 0x20
000006b6: DUP3
000006b7: ADD
000006b8: GT
000006b9: ISZERO
000006ba: PUSH2 0x06c2
000006bd: JUMPI
000006be: PUSH1 0x00
000006c0: DUP1
000006c1: REVERT
000006c2: JUMPDEST
000006c3: DUP1
000006c4: CALLDATALOAD
000006c5: SWAP1
000006c6: PUSH1 0x20
000006c8: ADD
000006c9: SWAP2
000006ca: DUP5
000006cb: PUSH1 0x20
000006cd: DUP4
000006ce: MUL
000006cf: DUP5
000006d0: ADD
000006d1: GT
000006d2: PUSH1 0x01
000006d4: PUSH1 0x20
000006d6: SHL
000006d7: DUP4
000006d8: GT
000006d9: OR
000006da: ISZERO
000006db: PUSH2 0x06e3
000006de: JUMPI
000006df: PUSH1 0x00
000006e1: DUP1
000006e2: REVERT
000006e3: JUMPDEST
000006e4: SWAP2
000006e5: SWAP4
000006e6: SWAP1
000006e7: SWAP3
000006e8: SWAP1
000006e9: SWAP2
000006ea: PUSH1 0x20
000006ec: DUP2
000006ed: ADD
000006ee: SWAP1
000006ef: CALLDATALOAD
000006f0: PUSH1 0x01
000006f2: PUSH1 0x20
000006f4: SHL
000006f5: DUP2
000006f6: GT
000006f7: ISZERO
000006f8: PUSH2 0x0700
000006fb: JUMPI
000006fc: PUSH1 0x00
000006fe: DUP1
000006ff: REVERT
00000700: JUMPDEST
00000701: DUP3
00000702: ADD
00000703: DUP4
00000704: PUSH1 0x20
00000706: DUP3
00000707: ADD
00000708: GT
00000709: ISZERO
0000070a: PUSH2 0x0712
0000070d: JUMPI
0000070e: PUSH1 0x00
00000710: DUP1
00000711: REVERT
00000712: JUMPDEST
00000713: DUP1
00000714: CALLDATALOAD
00000715: SWAP1
00000716: PUSH1 0x20
00000718: ADD
00000719: SWAP2
0000071a: DUP5
0000071b: PUSH1 0x20
0000071d: DUP4
0000071e: MUL
0000071f: DUP5
00000720: ADD
00000721: GT
00000722: PUSH1 0x01
00000724: PUSH1 0x20
00000726: SHL
00000727: DUP4
00000728: GT
00000729: OR
0000072a: ISZERO
0000072b: PUSH2 0x0733
0000072e: JUMPI
0000072f: PUSH1 0x00
00000731: DUP1
00000732: REVERT
00000733: JUMPDEST
00000734: POP
00000735: SWAP1
00000736: SWAP3
00000737: POP
00000738: SWAP1
00000739: POP
0000073a: PUSH2 0x1b49
0000073d: JUMP
0000073e: JUMPDEST
0000073f: PUSH1 0x40
00000741: DUP1
00000742: MLOAD
00000743: PUSH1 0x20
00000745: DUP1
00000746: DUP3
00000747: MSTORE
00000748: DUP4
00000749: MLOAD
0000074a: DUP2
0000074b: DUP4
0000074c: ADD
0000074d: MSTORE
0000074e: DUP4
0000074f: MLOAD
00000750: SWAP2
00000751: SWAP3
00000752: DUP4
00000753: SWAP3
00000754: SWAP1
00000755: DUP4
00000756: ADD
00000757: SWAP2
00000758: DUP6
00000759: DUP2
0000075a: ADD
0000075b: SWAP2
0000075c: MUL
0000075d: DUP1
0000075e: DUP4
0000075f: DUP4
00000760: PUSH1 0x00
00000762: JUMPDEST
00000763: DUP4
00000764: DUP2
00000765: LT
00000766: ISZERO
00000767: PUSH2 0x077a
0000076a: JUMPI
0000076b: DUP2
0000076c: DUP2
0000076d: ADD
0000076e: MLOAD
0000076f: DUP4
00000770: DUP3
00000771: ADD
00000772: MSTORE
00000773: PUSH1 0x20
00000775: ADD
00000776: PUSH2 0x0762
00000779: JUMP
0000077a: JUMPDEST
0000077b: POP
0000077c: POP
0000077d: POP
0000077e: POP
0000077f: SWAP1
00000780: POP
00000781: ADD
00000782: SWAP3
00000783: POP
00000784: POP
00000785: POP
00000786: PUSH1 0x40
00000788: MLOAD
00000789: DUP1
0000078a: SWAP2
0000078b: SUB
0000078c: SWAP1
0000078d: RETURN
0000078e: JUMPDEST
0000078f: PUSH2 0x0373
00000792: PUSH1 0x04
00000794: DUP1
00000795: CALLDATASIZE
00000796: SUB
00000797: PUSH1 0x60
00000799: DUP2
0000079a: LT
0000079b: ISZERO
0000079c: PUSH2 0x07a4
0000079f: JUMPI
000007a0: PUSH1 0x00
000007a2: DUP1
000007a3: REVERT
000007a4: JUMPDEST
000007a5: DUP2
000007a6: CALLDATALOAD
000007a7: SWAP2
000007a8: SWAP1
000007a9: DUP2
000007aa: ADD
000007ab: SWAP1
000007ac: PUSH1 0x40
000007ae: DUP2
000007af: ADD
000007b0: PUSH1 0x20
000007b2: DUP3
000007b3: ADD
000007b4: CALLDATALOAD
000007b5: PUSH1 0x01
000007b7: PUSH1 0x20
000007b9: SHL
000007ba: DUP2
000007bb: GT
000007bc: ISZERO
000007bd: PUSH2 0x07c5
000007c0: JUMPI
000007c1: PUSH1 0x00
000007c3: DUP1
000007c4: REVERT
000007c5: JUMPDEST
000007c6: DUP3
000007c7: ADD
000007c8: DUP4
000007c9: PUSH1 0x20
000007cb: DUP3
000007cc: ADD
000007cd: GT
000007ce: ISZERO
000007cf: PUSH2 0x07d7
000007d2: JUMPI
000007d3: PUSH1 0x00
000007d5: DUP1
000007d6: REVERT
000007d7: JUMPDEST
000007d8: DUP1
000007d9: CALLDATALOAD
000007da: SWAP1
000007db: PUSH1 0x20
000007dd: ADD
000007de: SWAP2
000007df: DUP5
000007e0: PUSH1 0x20
000007e2: DUP4
000007e3: MUL
000007e4: DUP5
000007e5: ADD
000007e6: GT
000007e7: PUSH1 0x01
000007e9: PUSH1 0x20
000007eb: SHL
000007ec: DUP4
000007ed: GT
000007ee: OR
000007ef: ISZERO
000007f0: PUSH2 0x07f8
000007f3: JUMPI
000007f4: PUSH1 0x00
000007f6: DUP1
000007f7: REVERT
000007f8: JUMPDEST
000007f9: SWAP2
000007fa: SWAP4
000007fb: SWAP1
000007fc: SWAP3
000007fd: SWAP1
000007fe: SWAP2
000007ff: PUSH1 0x20
00000801: DUP2
00000802: ADD
00000803: SWAP1
00000804: CALLDATALOAD
00000805: PUSH1 0x01
00000807: PUSH1 0x20
00000809: SHL
0000080a: DUP2
0000080b: GT
0000080c: ISZERO
0000080d: PUSH2 0x0815
00000810: JUMPI
00000811: PUSH1 0x00
00000813: DUP1
00000814: REVERT
00000815: JUMPDEST
00000816: DUP3
00000817: ADD
00000818: DUP4
00000819: PUSH1 0x20
0000081b: DUP3
0000081c: ADD
0000081d: GT
0000081e: ISZERO
0000081f: PUSH2 0x0827
00000822: JUMPI
00000823: PUSH1 0x00
00000825: DUP1
00000826: REVERT
00000827: JUMPDEST
00000828: DUP1
00000829: CALLDATALOAD
0000082a: SWAP1
0000082b: PUSH1 0x20
0000082d: ADD
0000082e: SWAP2
0000082f: DUP5
00000830: PUSH1 0x01
00000832: DUP4
00000833: MUL
00000834: DUP5
00000835: ADD
00000836: GT
00000837: PUSH1 0x01
00000839: PUSH1 0x20
0000083b: SHL
0000083c: DUP4
0000083d: GT
0000083e: OR
0000083f: ISZERO
00000840: PUSH2 0x0848
00000843: JUMPI
00000844: PUSH1 0x00
00000846: DUP1
00000847: REVERT
00000848: JUMPDEST
00000849: POP
0000084a: SWAP1
0000084b: SWAP3
0000084c: POP
0000084d: SWAP1
0000084e: POP
0000084f: PUSH2 0x1c94
00000852: JUMP
00000853: JUMPDEST
00000854: PUSH2 0x01f4
00000857: PUSH1 0x04
00000859: DUP1
0000085a: CALLDATASIZE
0000085b: SUB
0000085c: PUSH1 0x60
0000085e: DUP2
0000085f: LT
00000860: ISZERO
00000861: PUSH2 0x0869
00000864: JUMPI
00000865: PUSH1 0x00
00000867: DUP1
00000868: REVERT
00000869: JUMPDEST
0000086a: POP
0000086b: PUSH1 0x01
0000086d: PUSH1 0x01
0000086f: PUSH1 0xa0
00000871: SHL
00000872: SUB
00000873: DUP2
00000874: CALLDATALOAD
00000875: DUP2
00000876: AND
00000877: SWAP2
00000878: PUSH1 0x20
0000087a: DUP2
0000087b: ADD
0000087c: CALLDATALOAD
0000087d: SWAP1
0000087e: SWAP2
0000087f: AND
00000880: SWAP1
00000881: PUSH1 0x40
00000883: ADD
00000884: CALLDATALOAD
00000885: PUSH2 0x1f3b
00000888: JUMP
00000889: JUMPDEST
0000088a: PUSH2 0x0373
0000088d: PUSH1 0x04
0000088f: DUP1
00000890: CALLDATASIZE
00000891: SUB
00000892: PUSH1 0x80
00000894: DUP2
00000895: LT
00000896: ISZERO
00000897: PUSH2 0x089f
0000089a: JUMPI
0000089b: PUSH1 0x00
0000089d: DUP1
0000089e: REVERT
0000089f: JUMPDEST
000008a0: PUSH1 0x01
000008a2: PUSH1 0x01
000008a4: PUSH1 0xa0
000008a6: SHL
000008a7: SUB
000008a8: DUP3
000008a9: CALLDATALOAD
000008aa: AND
000008ab: SWAP2
000008ac: SWAP1
000008ad: DUP2
000008ae: ADD
000008af: SWAP1
000008b0: PUSH1 0x40
000008b2: DUP2
000008b3: ADD
000008b4: PUSH1 0x20
000008b6: DUP3
000008b7: ADD
000008b8: CALLDATALOAD
000008b9: PUSH1 0x01
000008bb: PUSH1 0x20
000008bd: SHL
000008be: DUP2
000008bf: GT
000008c0: ISZERO
000008c1: PUSH2 0x08c9
000008c4: JUMPI
000008c5: PUSH1 0x00
000008c7: DUP1
000008c8: REVERT
000008c9: JUMPDEST
000008ca: DUP3
000008cb: ADD
000008cc: DUP4
000008cd: PUSH1 0x20
000008cf: DUP3
000008d0: ADD
000008d1: GT
000008d2: ISZERO
000008d3: PUSH2 0x08db
000008d6: JUMPI
000008d7: PUSH1 0x00
000008d9: DUP1
000008da: REVERT
000008db: JUMPDEST
000008dc: DUP1
000008dd: CALLDATALOAD
000008de: SWAP1
000008df: PUSH1 0x20
000008e1: ADD
000008e2: SWAP2
000008e3: DUP5
000008e4: PUSH1 0x20
000008e6: DUP4
000008e7: MUL
000008e8: DUP5
000008e9: ADD
000008ea: GT
000008eb: PUSH1 0x01
000008ed: PUSH1 0x20
000008ef: SHL
000008f0: DUP4
000008f1: GT
000008f2: OR
000008f3: ISZERO
000008f4: PUSH2 0x08fc
000008f7: JUMPI
000008f8: PUSH1 0x00
000008fa: DUP1
000008fb: REVERT
000008fc: JUMPDEST
000008fd: SWAP2
000008fe: SWAP4
000008ff: SWAP1
00000900: SWAP3
00000901: SWAP1
00000902: SWAP2
00000903: PUSH1 0x20
00000905: DUP2
00000906: ADD
00000907: SWAP1
00000908: CALLDATALOAD
00000909: PUSH1 0x01
0000090b: PUSH1 0x20
0000090d: SHL
0000090e: DUP2
0000090f: GT
00000910: ISZERO
00000911: PUSH2 0x0919
00000914: JUMPI
00000915: PUSH1 0x00
00000917: DUP1
00000918: REVERT
00000919: JUMPDEST
0000091a: DUP3
0000091b: ADD
0000091c: DUP4
0000091d: PUSH1 0x20
0000091f: DUP3
00000920: ADD
00000921: GT
00000922: ISZERO
00000923: PUSH2 0x092b
00000926: JUMPI
00000927: PUSH1 0x00
00000929: DUP1
0000092a: REVERT
0000092b: JUMPDEST
0000092c: DUP1
0000092d: CALLDATALOAD
0000092e: SWAP1
0000092f: PUSH1 0x20
00000931: ADD
00000932: SWAP2
00000933: DUP5
00000934: PUSH1 0x20
00000936: DUP4
00000937: MUL
00000938: DUP5
00000939: ADD
0000093a: GT
0000093b: PUSH1 0x01
0000093d: PUSH1 0x20
0000093f: SHL
00000940: DUP4
00000941: GT
00000942: OR
00000943: ISZERO
00000944: PUSH2 0x094c
00000947: JUMPI
00000948: PUSH1 0x00
0000094a: DUP1
0000094b: REVERT
0000094c: JUMPDEST
0000094d: SWAP2
0000094e: SWAP4
0000094f: SWAP1
00000950: SWAP3
00000951: SWAP1
00000952: SWAP2
00000953: PUSH1 0x20
00000955: DUP2
00000956: ADD
00000957: SWAP1
00000958: CALLDATALOAD
00000959: PUSH1 0x01
0000095b: PUSH1 0x20
0000095d: SHL
0000095e: DUP2
0000095f: GT
00000960: ISZERO
00000961: PUSH2 0x0969
00000964: JUMPI
00000965: PUSH1 0x00
00000967: DUP1
00000968: REVERT
00000969: JUMPDEST
0000096a: DUP3
0000096b: ADD
0000096c: DUP4
0000096d: PUSH1 0x20
0000096f: DUP3
00000970: ADD
00000971: GT
00000972: ISZERO
00000973: PUSH2 0x097b
00000976: JUMPI
00000977: PUSH1 0x00
00000979: DUP1
0000097a: REVERT
0000097b: JUMPDEST
0000097c: DUP1
0000097d: CALLDATALOAD
0000097e: SWAP1
0000097f: PUSH1 0x20
00000981: ADD
00000982: SWAP2
00000983: DUP5
00000984: PUSH1 0x20
00000986: DUP4
00000987: MUL
00000988: DUP5
00000989: ADD
0000098a: GT
0000098b: PUSH1 0x01
0000098d: PUSH1 0x20
0000098f: SHL
00000990: DUP4
00000991: GT
00000992: OR
00000993: ISZERO
00000994: PUSH2 0x099c
00000997: JUMPI
00000998: PUSH1 0x00
0000099a: DUP1
0000099b: REVERT
0000099c: JUMPDEST
0000099d: POP
0000099e: SWAP1
0000099f: SWAP3
000009a0: POP
000009a1: SWAP1
000009a2: POP
000009a3: PUSH2 0x1f6d
000009a6: JUMP
000009a7: JUMPDEST
000009a8: PUSH2 0x022d
000009ab: PUSH1 0x04
000009ad: DUP1
000009ae: CALLDATASIZE
000009af: SUB
000009b0: PUSH1 0x20
000009b2: DUP2
000009b3: LT
000009b4: ISZERO
000009b5: PUSH2 0x09bd
000009b8: JUMPI
000009b9: PUSH1 0x00
000009bb: DUP1
000009bc: REVERT
000009bd: JUMPDEST
000009be: POP
000009bf: CALLDATALOAD
000009c0: PUSH2 0x2187
000009c3: JUMP
000009c4: JUMPDEST
000009c5: PUSH2 0x09e1
000009c8: PUSH1 0x04
000009ca: DUP1
000009cb: CALLDATASIZE
000009cc: SUB
000009cd: PUSH1 0x20
000009cf: DUP2
000009d0: LT
000009d1: ISZERO
000009d2: PUSH2 0x09da
000009d5: JUMPI
000009d6: PUSH1 0x00
000009d8: DUP1
000009d9: REVERT
000009da: JUMPDEST
000009db: POP
000009dc: CALLDATALOAD
000009dd: PUSH2 0x21a8
000009e0: JUMP
000009e1: JUMPDEST
000009e2: PUSH1 0x40
000009e4: DUP1
000009e5: MLOAD
000009e6: PUSH1 0x01
000009e8: PUSH1 0x01
000009ea: PUSH1 0xa0
000009ec: SHL
000009ed: SUB
000009ee: SWAP1
000009ef: SWAP3
000009f0: AND
000009f1: DUP3
000009f2: MSTORE
000009f3: MLOAD
000009f4: SWAP1
000009f5: DUP2
000009f6: SWAP1
000009f7: SUB
000009f8: PUSH1 0x20
000009fa: ADD
000009fb: SWAP1
000009fc: RETURN
000009fd: JUMPDEST
000009fe: PUSH2 0x01f4
00000a01: PUSH1 0x04
00000a03: DUP1
00000a04: CALLDATASIZE
00000a05: SUB
00000a06: PUSH1 0x20
00000a08: DUP2
00000a09: LT
00000a0a: ISZERO
00000a0b: PUSH2 0x0a13
00000a0e: JUMPI
00000a0f: PUSH1 0x00
00000a11: DUP1
00000a12: REVERT
00000a13: JUMPDEST
00000a14: POP
00000a15: CALLDATALOAD
00000a16: PUSH2 0x21c3
00000a19: JUMP
00000a1a: JUMPDEST
00000a1b: PUSH2 0x022d
00000a1e: PUSH1 0x04
00000a20: DUP1
00000a21: CALLDATASIZE
00000a22: SUB
00000a23: PUSH1 0x20
00000a25: DUP2
00000a26: LT
00000a27: ISZERO
00000a28: PUSH2 0x0a30
00000a2b: JUMPI
00000a2c: PUSH1 0x00
00000a2e: DUP1
00000a2f: REVERT
00000a30: JUMPDEST
00000a31: POP
00000a32: CALLDATALOAD
00000a33: PUSH2 0x21d9
00000a36: JUMP
00000a37: JUMPDEST
00000a38: PUSH2 0x0373
00000a3b: PUSH1 0x04
00000a3d: DUP1
00000a3e: CALLDATASIZE
00000a3f: SUB
00000a40: PUSH1 0x40
00000a42: DUP2
00000a43: LT
00000a44: ISZERO
00000a45: PUSH2 0x0a4d
00000a48: JUMPI
00000a49: PUSH1 0x00
00000a4b: DUP1
00000a4c: REVERT
00000a4d: JUMPDEST
00000a4e: POP
00000a4f: DUP1
00000a50: CALLDATALOAD
00000a51: SWAP1
00000a52: PUSH1 0x20
00000a54: ADD
00000a55: CALLDATALOAD
00000a56: PUSH2 0x21f9
00000a59: JUMP
00000a5a: JUMPDEST
00000a5b: PUSH2 0x09e1
00000a5e: PUSH2 0x233f
00000a61: JUMP
00000a62: JUMPDEST
00000a63: PUSH2 0x01f4
00000a66: PUSH1 0x04
00000a68: DUP1
00000a69: CALLDATASIZE
00000a6a: SUB
00000a6b: PUSH1 0x20
00000a6d: DUP2
00000a6e: LT
00000a6f: ISZERO
00000a70: PUSH2 0x0a78
00000a73: JUMPI
00000a74: PUSH1 0x00
00000a76: DUP1
00000a77: REVERT
00000a78: JUMPDEST
00000a79: POP
00000a7a: CALLDATALOAD
00000a7b: PUSH2 0x234e
00000a7e: JUMP
00000a7f: JUMPDEST
00000a80: PUSH2 0x0373
00000a83: PUSH1 0x04
00000a85: DUP1
00000a86: CALLDATASIZE
00000a87: SUB
00000a88: PUSH1 0x40
00000a8a: DUP2
00000a8b: LT
00000a8c: ISZERO
00000a8d: PUSH2 0x0a95
00000a90: JUMPI
00000a91: PUSH1 0x00
00000a93: DUP1
00000a94: REVERT
00000a95: JUMPDEST
00000a96: POP
00000a97: PUSH1 0x01
00000a99: PUSH1 0x01
00000a9b: PUSH1 0xa0
00000a9d: SHL
00000a9e: SUB
00000a9f: DUP2
00000aa0: CALLDATALOAD
00000aa1: AND
00000aa2: SWAP1
00000aa3: PUSH1 0x20
00000aa5: ADD
00000aa6: CALLDATALOAD
00000aa7: ISZERO
00000aa8: ISZERO
00000aa9: PUSH2 0x235a
00000aac: JUMP
00000aad: JUMPDEST
00000aae: PUSH2 0x0373
00000ab1: PUSH1 0x04
00000ab3: DUP1
00000ab4: CALLDATASIZE
00000ab5: SUB
00000ab6: PUSH1 0x20
00000ab8: DUP2
00000ab9: LT
00000aba: ISZERO
00000abb: PUSH2 0x0ac3
00000abe: JUMPI
00000abf: PUSH1 0x00
00000ac1: DUP1
00000ac2: REVERT
00000ac3: JUMPDEST
00000ac4: DUP2
00000ac5: ADD
00000ac6: SWAP1
00000ac7: PUSH1 0x20
00000ac9: DUP2
00000aca: ADD
00000acb: DUP2
00000acc: CALLDATALOAD
00000acd: PUSH1 0x01
00000acf: PUSH1 0x20
00000ad1: SHL
00000ad2: DUP2
00000ad3: GT
00000ad4: ISZERO
00000ad5: PUSH2 0x0add
00000ad8: JUMPI
00000ad9: PUSH1 0x00
00000adb: DUP1
00000adc: REVERT
00000add: JUMPDEST
00000ade: DUP3
00000adf: ADD
00000ae0: DUP4
00000ae1: PUSH1 0x20
00000ae3: DUP3
00000ae4: ADD
00000ae5: GT
00000ae6: ISZERO
00000ae7: PUSH2 0x0aef
00000aea: JUMPI
00000aeb: PUSH1 0x00
00000aed: DUP1
00000aee: REVERT
00000aef: JUMPDEST
00000af0: DUP1
00000af1: CALLDATALOAD
00000af2: SWAP1
00000af3: PUSH1 0x20
00000af5: ADD
00000af6: SWAP2
00000af7: DUP5
00000af8: PUSH1 0x20
00000afa: DUP4
00000afb: MUL
00000afc: DUP5
00000afd: ADD
00000afe: GT
00000aff: PUSH1 0x01
00000b01: PUSH1 0x20
00000b03: SHL
00000b04: DUP4
00000b05: GT
00000b06: OR
00000b07: ISZERO
00000b08: PUSH2 0x0b10
00000b0b: JUMPI
00000b0c: PUSH1 0x00
00000b0e: DUP1
00000b0f: REVERT
00000b10: JUMPDEST
00000b11: POP
00000b12: SWAP1
00000b13: SWAP3
00000b14: POP
00000b15: SWAP1
00000b16: POP
00000b17: PUSH2 0x23c8
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: PUSH2 0x022d
00000b1f: PUSH1 0x04
00000b21: DUP1
00000b22: CALLDATASIZE
00000b23: SUB
00000b24: PUSH1 0x20
00000b26: DUP2
00000b27: LT
00000b28: ISZERO
00000b29: PUSH2 0x0b31
00000b2c: JUMPI
00000b2d: PUSH1 0x00
00000b2f: DUP1
00000b30: REVERT
00000b31: JUMPDEST
00000b32: POP
00000b33: CALLDATALOAD
00000b34: PUSH2 0x2485
00000b37: JUMP
00000b38: JUMPDEST
00000b39: PUSH2 0x01f4
00000b3c: PUSH1 0x04
00000b3e: DUP1
00000b3f: CALLDATASIZE
00000b40: SUB
00000b41: PUSH1 0x40
00000b43: DUP2
00000b44: LT
00000b45: ISZERO
00000b46: PUSH2 0x0b4e
00000b49: JUMPI
00000b4a: PUSH1 0x00
00000b4c: DUP1
00000b4d: REVERT
00000b4e: JUMPDEST
00000b4f: DUP2
00000b50: ADD
00000b51: SWAP1
00000b52: PUSH1 0x20
00000b54: DUP2
00000b55: ADD
00000b56: DUP2
00000b57: CALLDATALOAD
00000b58: PUSH1 0x01
00000b5a: PUSH1 0x20
00000b5c: SHL
00000b5d: DUP2
00000b5e: GT
00000b5f: ISZERO
00000b60: PUSH2 0x0b68
00000b63: JUMPI
00000b64: PUSH1 0x00
00000b66: DUP1
00000b67: REVERT
00000b68: JUMPDEST
00000b69: DUP3
00000b6a: ADD
00000b6b: DUP4
00000b6c: PUSH1 0x20
00000b6e: DUP3
00000b6f: ADD
00000b70: GT
00000b71: ISZERO
00000b72: PUSH2 0x0b7a
00000b75: JUMPI
00000b76: PUSH1 0x00
00000b78: DUP1
00000b79: REVERT
00000b7a: JUMPDEST
00000b7b: DUP1
00000b7c: CALLDATALOAD
00000b7d: SWAP1
00000b7e: PUSH1 0x20
00000b80: ADD
00000b81: SWAP2
00000b82: DUP5
00000b83: PUSH1 0x01
00000b85: DUP4
00000b86: MUL
00000b87: DUP5
00000b88: ADD
00000b89: GT
00000b8a: PUSH1 0x01
00000b8c: PUSH1 0x20
00000b8e: SHL
00000b8f: DUP4
00000b90: GT
00000b91: OR
00000b92: ISZERO
00000b93: PUSH2 0x0b9b
00000b96: JUMPI
00000b97: PUSH1 0x00
00000b99: DUP1
00000b9a: REVERT
00000b9b: JUMPDEST
00000b9c: SWAP2
00000b9d: SWAP4
00000b9e: POP
00000b9f: SWAP2
00000ba0: POP
00000ba1: CALLDATALOAD
00000ba2: ISZERO
00000ba3: ISZERO
00000ba4: PUSH2 0x248f
00000ba7: JUMP
00000ba8: JUMPDEST
00000ba9: PUSH2 0x022d
00000bac: PUSH1 0x04
00000bae: DUP1
00000baf: CALLDATASIZE
00000bb0: SUB
00000bb1: PUSH1 0x20
00000bb3: DUP2
00000bb4: LT
00000bb5: ISZERO
00000bb6: PUSH2 0x0bbe
00000bb9: JUMPI
00000bba: PUSH1 0x00
00000bbc: DUP1
00000bbd: REVERT
00000bbe: JUMPDEST
00000bbf: POP
00000bc0: CALLDATALOAD
00000bc1: PUSH2 0x259d
00000bc4: JUMP
00000bc5: JUMPDEST
00000bc6: PUSH2 0x022d
00000bc9: PUSH1 0x04
00000bcb: DUP1
00000bcc: CALLDATASIZE
00000bcd: SUB
00000bce: PUSH1 0x40
00000bd0: DUP2
00000bd1: LT
00000bd2: ISZERO
00000bd3: PUSH2 0x0bdb
00000bd6: JUMPI
00000bd7: PUSH1 0x00
00000bd9: DUP1
00000bda: REVERT
00000bdb: JUMPDEST
00000bdc: POP
00000bdd: PUSH1 0x01
00000bdf: PUSH1 0x01
00000be1: PUSH1 0xa0
00000be3: SHL
00000be4: SUB
00000be5: DUP2
00000be6: CALLDATALOAD
00000be7: DUP2
00000be8: AND
00000be9: SWAP2
00000bea: PUSH1 0x20
00000bec: ADD
00000bed: CALLDATALOAD
00000bee: AND
00000bef: PUSH2 0x25a9
00000bf2: JUMP
00000bf3: JUMPDEST
00000bf4: PUSH2 0x0373
00000bf7: PUSH1 0x04
00000bf9: DUP1
00000bfa: CALLDATASIZE
00000bfb: SUB
00000bfc: PUSH1 0xa0
00000bfe: DUP2
00000bff: LT
00000c00: ISZERO
00000c01: PUSH2 0x0c09
00000c04: JUMPI
00000c05: PUSH1 0x00
00000c07: DUP1
00000c08: REVERT
00000c09: JUMPDEST
00000c0a: PUSH1 0x01
00000c0c: PUSH1 0x01
00000c0e: PUSH1 0xa0
00000c10: SHL
00000c11: SUB
00000c12: DUP3
00000c13: CALLDATALOAD
00000c14: DUP2
00000c15: AND
00000c16: SWAP3
00000c17: PUSH1 0x20
00000c19: DUP2
00000c1a: ADD
00000c1b: CALLDATALOAD
00000c1c: SWAP1
00000c1d: SWAP2
00000c1e: AND
00000c1f: SWAP2
00000c20: PUSH1 0x40
00000c22: DUP3
00000c23: ADD
00000c24: CALLDATALOAD
00000c25: SWAP2
00000c26: PUSH1 0x60
00000c28: DUP2
00000c29: ADD
00000c2a: CALLDATALOAD
00000c2b: SWAP2
00000c2c: DUP2
00000c2d: ADD
00000c2e: SWAP1
00000c2f: PUSH1 0xa0
00000c31: DUP2
00000c32: ADD
00000c33: PUSH1 0x80
00000c35: DUP3
00000c36: ADD
00000c37: CALLDATALOAD
00000c38: PUSH1 0x01
00000c3a: PUSH1 0x20
00000c3c: SHL
00000c3d: DUP2
00000c3e: GT
00000c3f: ISZERO
00000c40: PUSH2 0x0c48
00000c43: JUMPI
00000c44: PUSH1 0x00
00000c46: DUP1
00000c47: REVERT
00000c48: JUMPDEST
00000c49: DUP3
00000c4a: ADD
00000c4b: DUP4
00000c4c: PUSH1 0x20
00000c4e: DUP3
00000c4f: ADD
00000c50: GT
00000c51: ISZERO
00000c52: PUSH2 0x0c5a
00000c55: JUMPI
00000c56: PUSH1 0x00
00000c58: DUP1
00000c59: REVERT
00000c5a: JUMPDEST
00000c5b: DUP1
00000c5c: CALLDATALOAD
00000c5d: SWAP1
00000c5e: PUSH1 0x20
00000c60: ADD
00000c61: SWAP2
00000c62: DUP5
00000c63: PUSH1 0x01
00000c65: DUP4
00000c66: MUL
00000c67: DUP5
00000c68: ADD
00000c69: GT
00000c6a: PUSH1 0x01
00000c6c: PUSH1 0x20
00000c6e: SHL
00000c6f: DUP4
00000c70: GT
00000c71: OR
00000c72: ISZERO
00000c73: PUSH2 0x0c7b
00000c76: JUMPI
00000c77: PUSH1 0x00
00000c79: DUP1
00000c7a: REVERT
00000c7b: JUMPDEST
00000c7c: POP
00000c7d: SWAP1
00000c7e: SWAP3
00000c7f: POP
00000c80: SWAP1
00000c81: POP
00000c82: PUSH2 0x25d7
00000c85: JUMP
00000c86: JUMPDEST
00000c87: PUSH1 0x00
00000c89: PUSH2 0x0c91
00000c8c: DUP3
00000c8d: PUSH2 0x2187
00000c90: JUMP
00000c91: JUMPDEST
00000c92: ISZERO
00000c93: PUSH2 0x0ccb
00000c96: JUMPI
00000c97: PUSH1 0x00
00000c99: DUP3
00000c9a: DUP2
00000c9b: MSTORE
00000c9c: PUSH1 0x04
00000c9e: PUSH1 0x20
00000ca0: MSTORE
00000ca1: PUSH1 0x40
00000ca3: SWAP1
00000ca4: KECCAK256
00000ca5: SLOAD
00000ca6: PUSH1 0x01
00000ca8: PUSH1 0x01
00000caa: PUSH1 0xa0
00000cac: SHL
00000cad: SUB
00000cae: DUP5
00000caf: DUP2
00000cb0: AND
00000cb1: SWAP2
00000cb2: AND
00000cb3: EQ
00000cb4: PUSH2 0x0cbe
00000cb7: JUMPI
00000cb8: PUSH1 0x00
00000cba: PUSH2 0x0cc1
00000cbd: JUMP
00000cbe: JUMPDEST
00000cbf: PUSH1 0x01
00000cc1: JUMPDEST
00000cc2: PUSH1 0xff
00000cc4: AND
00000cc5: SWAP1
00000cc6: POP
00000cc7: PUSH2 0x0cf0
00000cca: JUMP
00000ccb: JUMPDEST
00000ccc: POP
00000ccd: PUSH1 0x00
00000ccf: DUP2
00000cd0: DUP2
00000cd1: MSTORE
00000cd2: PUSH1 0x02
00000cd4: PUSH1 0x20
00000cd6: SWAP1
00000cd7: DUP2
00000cd8: MSTORE
00000cd9: PUSH1 0x40
00000cdb: DUP1
00000cdc: DUP4
00000cdd: KECCAK256
00000cde: PUSH1 0x01
00000ce0: PUSH1 0x01
00000ce2: PUSH1 0xa0
00000ce4: SHL
00000ce5: SUB
00000ce6: DUP7
00000ce7: AND
00000ce8: DUP5
00000ce9: MSTORE
00000cea: SWAP1
00000ceb: SWAP2
00000cec: MSTORE
00000ced: SWAP1
00000cee: KECCAK256
00000cef: SLOAD
00000cf0: JUMPDEST
00000cf1: SWAP3
00000cf2: SWAP2
00000cf3: POP
00000cf4: POP
00000cf5: JUMP
00000cf6: JUMPDEST
00000cf7: PUSH1 0x00
00000cf9: PUSH1 0x01
00000cfb: PUSH1 0x01
00000cfd: PUSH1 0xe0
00000cff: SHL
00000d00: SUB
00000d01: NOT
00000d02: DUP3
00000d03: AND
00000d04: PUSH4 0x01ffc9a7
00000d09: PUSH1 0xe0
00000d0b: SHL
00000d0c: EQ
00000d0d: DUP1
00000d0e: PUSH2 0x0d27
00000d11: JUMPI
00000d12: POP
00000d13: PUSH1 0x01
00000d15: PUSH1 0x01
00000d17: PUSH1 0xe0
00000d19: SHL
00000d1a: SUB
00000d1b: NOT
00000d1c: DUP3
00000d1d: AND
00000d1e: PUSH4 0x6cdb3d13
00000d23: PUSH1 0xe1
00000d25: SHL
00000d26: EQ
00000d27: JUMPDEST
00000d28: ISZERO
00000d29: PUSH2 0x0d34
00000d2c: JUMPI
00000d2d: POP
00000d2e: PUSH1 0x01
00000d30: PUSH2 0x0d38
00000d33: JUMP
00000d34: JUMPDEST
00000d35: POP
00000d36: PUSH1 0x00
00000d38: JUMPDEST
00000d39: SWAP2
00000d3a: SWAP1
00000d3b: POP
00000d3c: JUMP
00000d3d: JUMPDEST
00000d3e: PUSH1 0x05
00000d40: PUSH1 0x20
00000d42: MSTORE
00000d43: PUSH1 0x00
00000d45: SWAP1
00000d46: DUP2
00000d47: MSTORE
00000d48: PUSH1 0x40
00000d4a: SWAP1
00000d4b: KECCAK256
00000d4c: SLOAD
00000d4d: DUP2
00000d4e: JUMP
00000d4f: JUMPDEST
00000d50: CALLER
00000d51: PUSH1 0x00
00000d53: SWAP1
00000d54: DUP2
00000d55: MSTORE
00000d56: PUSH1 0x09
00000d58: PUSH1 0x20
00000d5a: MSTORE
00000d5b: PUSH1 0x40
00000d5d: SWAP1
00000d5e: KECCAK256
00000d5f: SLOAD
00000d60: PUSH1 0xff
00000d62: AND
00000d63: PUSH2 0x0da1
00000d66: JUMPI
00000d67: PUSH1 0x40
00000d69: DUP1
00000d6a: MLOAD
00000d6b: PUSH3 0x461bcd
00000d6f: PUSH1 0xe5
00000d71: SHL
00000d72: DUP2
00000d73: MSTORE
00000d74: PUSH1 0x20
00000d76: PUSH1 0x04
00000d78: DUP3
00000d79: ADD
00000d7a: MSTORE
00000d7b: PUSH1 0x1b
00000d7d: PUSH1 0x24
00000d7f: DUP3
00000d80: ADD
00000d81: MSTORE
00000d82: PUSH1 0x00
00000d84: DUP1
00000d85: MLOAD
00000d86: PUSH1 0x20
00000d88: PUSH2 0x2d13
00000d8b: DUP4
00000d8c: CODECOPY
00000d8d: DUP2
00000d8e: MLOAD
00000d8f: SWAP2
00000d90: MSTORE
00000d91: PUSH1 0x44
00000d93: DUP3
00000d94: ADD
00000d95: MSTORE
00000d96: SWAP1
00000d97: MLOAD
00000d98: SWAP1
00000d99: DUP2
00000d9a: SWAP1
00000d9b: SUB
00000d9c: PUSH1 0x64
00000d9e: ADD
00000d9f: SWAP1
00000da0: REVERT
00000da1: JUMPDEST
00000da2: PUSH2 0x0daa
00000da5: DUP8
00000da6: PUSH2 0x2485
00000da9: JUMP
00000daa: JUMPDEST
00000dab: PUSH2 0x0dfb
00000dae: JUMPI
00000daf: PUSH1 0x40
00000db1: DUP1
00000db2: MLOAD
00000db3: PUSH3 0x461bcd
00000db7: PUSH1 0xe5
00000db9: SHL
00000dba: DUP2
00000dbb: MSTORE
00000dbc: PUSH1 0x20
00000dbe: PUSH1 0x04
00000dc0: DUP3
00000dc1: ADD
00000dc2: MSTORE
00000dc3: PUSH1 0x1c
00000dc5: PUSH1 0x24
00000dc7: DUP3
00000dc8: ADD
00000dc9: MSTORE
00000dca: PUSH32 0x4944206d7573742062652061206e6f6e2d66756e6769626c6520494400000000
00000deb: PUSH1 0x44
00000ded: DUP3
00000dee: ADD
00000def: MSTORE
00000df0: SWAP1
00000df1: MLOAD
00000df2: SWAP1
00000df3: DUP2
00000df4: SWAP1
00000df5: SUB
00000df6: PUSH1 0x64
00000df8: ADD
00000df9: SWAP1
00000dfa: REVERT
00000dfb: JUMPDEST
00000dfc: PUSH1 0x00
00000dfe: JUMPDEST
00000dff: DUP6
00000e00: DUP2
00000e01: LT
00000e02: ISZERO
00000e03: PUSH2 0x10d3
00000e06: JUMPI
00000e07: PUSH1 0x00
00000e09: DUP9
00000e0a: DUP2
00000e0b: MSTORE
00000e0c: PUSH1 0x08
00000e0e: PUSH1 0x20
00000e10: MSTORE
00000e11: PUSH1 0x40
00000e13: SWAP1
00000e14: KECCAK256
00000e15: SLOAD
00000e16: ISZERO
00000e17: DUP1
00000e18: PUSH2 0x0e61
00000e1b: JUMPI
00000e1c: POP
00000e1d: PUSH1 0x00
00000e1f: DUP9
00000e20: DUP2
00000e21: MSTORE
00000e22: PUSH1 0x08
00000e24: PUSH1 0x20
00000e26: MSTORE
00000e27: PUSH1 0x40
00000e29: SWAP1
00000e2a: KECCAK256
00000e2b: SLOAD
00000e2c: PUSH2 0x0e5e
00000e2f: DUP7
00000e30: DUP7
00000e31: DUP5
00000e32: DUP2
00000e33: DUP2
00000e34: LT
00000e35: PUSH2 0x0e3a
00000e38: JUMPI
00000e39: INVALID
00000e3a: JUMPDEST
00000e3b: PUSH1 0x00
00000e3d: DUP14
00000e3e: DUP2
00000e3f: MSTORE
00000e40: PUSH1 0x07
00000e42: PUSH1 0x20
00000e44: SWAP1
00000e45: DUP2
00000e46: MSTORE
00000e47: PUSH1 0x40
00000e49: SWAP1
00000e4a: SWAP2
00000e4b: KECCAK256
00000e4c: SLOAD
00000e4d: SWAP4
00000e4e: SWAP2
00000e4f: MUL
00000e50: ADD
00000e51: CALLDATALOAD
00000e52: SWAP1
00000e53: POP
00000e54: PUSH4 0xffffffff
00000e59: PUSH2 0x28da
00000e5c: AND
00000e5d: JUMP
00000e5e: JUMPDEST
00000e5f: GT
00000e60: ISZERO
00000e61: JUMPDEST
00000e62: PUSH2 0x0eb2
00000e65: JUMPI
00000e66: PUSH1 0x40
00000e68: DUP1
00000e69: MLOAD
00000e6a: PUSH3 0x461bcd
00000e6e: PUSH1 0xe5
00000e70: SHL
00000e71: DUP2
00000e72: MSTORE
00000e73: PUSH1 0x20
00000e75: PUSH1 0x04
00000e77: DUP3
00000e78: ADD
00000e79: MSTORE
00000e7a: PUSH1 0x1b
00000e7c: PUSH1 0x24
00000e7e: DUP3
00000e7f: ADD
00000e80: MSTORE
00000e81: PUSH32 0x546f6b656e20737570706c79206c696d69742065786365656465640000000000
00000ea2: PUSH1 0x44
00000ea4: DUP3
00000ea5: ADD
00000ea6: MSTORE
00000ea7: SWAP1
00000ea8: MLOAD
00000ea9: SWAP1
00000eaa: DUP2
00000eab: SWAP1
00000eac: SUB
00000ead: PUSH1 0x64
00000eaf: ADD
00000eb0: SWAP1
00000eb1: REVERT
00000eb2: JUMPDEST
00000eb3: PUSH1 0x00
00000eb5: DUP9
00000eb6: DUP2
00000eb7: MSTORE
00000eb8: PUSH1 0x02
00000eba: PUSH1 0x20
00000ebc: MSTORE
00000ebd: PUSH1 0x40
00000ebf: DUP2
00000ec0: KECCAK256
00000ec1: PUSH2 0x0f22
00000ec4: SWAP2
00000ec5: DUP10
00000ec6: DUP10
00000ec7: DUP6
00000ec8: DUP2
00000ec9: DUP2
00000eca: LT
00000ecb: PUSH2 0x0ed0
00000ece: JUMPI
00000ecf: INVALID
00000ed0: JUMPDEST
00000ed1: SWAP1
00000ed2: POP
00000ed3: PUSH1 0x20
00000ed5: MUL
00000ed6: ADD
00000ed7: CALLDATALOAD
00000ed8: PUSH1 0x01
00000eda: PUSH1 0x01
00000edc: PUSH1 0xa0
00000ede: SHL
00000edf: SUB
00000ee0: AND
00000ee1: PUSH1 0x01
00000ee3: PUSH1 0x01
00000ee5: PUSH1 0xa0
00000ee7: SHL
00000ee8: SUB
00000ee9: AND
00000eea: PUSH1 0x01
00000eec: PUSH1 0x01
00000eee: PUSH1 0xa0
00000ef0: SHL
00000ef1: SUB
00000ef2: AND
00000ef3: DUP2
00000ef4: MSTORE
00000ef5: PUSH1 0x20
00000ef7: ADD
00000ef8: SWAP1
00000ef9: DUP2
00000efa: MSTORE
00000efb: PUSH1 0x20
00000efd: ADD
00000efe: PUSH1 0x00
00000f00: KECCAK256
00000f01: SLOAD
00000f02: DUP7
00000f03: DUP7
00000f04: DUP5
00000f05: DUP2
00000f06: DUP2
00000f07: LT
00000f08: PUSH2 0x0f0d
00000f0b: JUMPI
00000f0c: INVALID
00000f0d: JUMPDEST
00000f0e: SWAP1
00000f0f: POP
00000f10: PUSH1 0x20
00000f12: MUL
00000f13: ADD
00000f14: CALLDATALOAD
00000f15: PUSH2 0x28da
00000f18: SWAP1
00000f19: SWAP2
00000f1a: SWAP1
00000f1b: PUSH4 0xffffffff
00000f20: AND
00000f21: JUMP
00000f22: JUMPDEST
00000f23: PUSH1 0x00
00000f25: DUP10
00000f26: DUP2
00000f27: MSTORE
00000f28: PUSH1 0x02
00000f2a: PUSH1 0x20
00000f2c: MSTORE
00000f2d: PUSH1 0x40
00000f2f: DUP2
00000f30: KECCAK256
00000f31: SWAP1
00000f32: DUP10
00000f33: DUP10
00000f34: DUP6
00000f35: DUP2
00000f36: DUP2
00000f37: LT
00000f38: PUSH2 0x0f3d
00000f3b: JUMPI
00000f3c: INVALID
00000f3d: JUMPDEST
00000f3e: SWAP1
00000f3f: POP
00000f40: PUSH1 0x20
00000f42: MUL
00000f43: ADD
00000f44: CALLDATALOAD
00000f45: PUSH1 0x01
00000f47: PUSH1 0x01
00000f49: PUSH1 0xa0
00000f4b: SHL
00000f4c: SUB
00000f4d: AND
00000f4e: PUSH1 0x01
00000f50: PUSH1 0x01
00000f52: PUSH1 0xa0
00000f54: SHL
00000f55: SUB
00000f56: AND
00000f57: PUSH1 0x01
00000f59: PUSH1 0x01
00000f5b: PUSH1 0xa0
00000f5d: SHL
00000f5e: SUB
00000f5f: AND
00000f60: DUP2
00000f61: MSTORE
00000f62: PUSH1 0x20
00000f64: ADD
00000f65: SWAP1
00000f66: DUP2
00000f67: MSTORE
00000f68: PUSH1 0x20
00000f6a: ADD
00000f6b: PUSH1 0x00
00000f6d: KECCAK256
00000f6e: DUP2
00000f6f: SWAP1
00000f70: SSTORE
00000f71: POP
00000f72: PUSH2 0x0fa4
00000f75: DUP6
00000f76: DUP6
00000f77: DUP4
00000f78: DUP2
00000f79: DUP2
00000f7a: LT
00000f7b: PUSH2 0x0f80
00000f7e: JUMPI
00000f7f: INVALID
00000f80: JUMPDEST
00000f81: PUSH1 0x00
00000f83: DUP13
00000f84: DUP2
00000f85: MSTORE
00000f86: PUSH1 0x07
00000f88: PUSH1 0x20
00000f8a: SWAP1
00000f8b: DUP2
00000f8c: MSTORE
00000f8d: PUSH1 0x40
00000f8f: SWAP1
00000f90: SWAP2
00000f91: KECCAK256
00000f92: SLOAD
00000f93: SWAP4
00000f94: SWAP2
00000f95: MUL
00000f96: ADD
00000f97: CALLDATALOAD
00000f98: SWAP1
00000f99: POP
00000f9a: PUSH4 0xffffffff
00000f9f: PUSH2 0x28da
00000fa2: AND
00000fa3: JUMP
00000fa4: JUMPDEST
00000fa5: PUSH1 0x00
00000fa7: DUP10
00000fa8: DUP2
00000fa9: MSTORE
00000faa: PUSH1 0x07
00000fac: PUSH1 0x20
00000fae: MSTORE
00000faf: PUSH1 0x40
00000fb1: SWAP1
00000fb2: KECCAK256
00000fb3: SSTORE
00000fb4: DUP7
00000fb5: DUP7
00000fb6: DUP3
00000fb7: DUP2
00000fb8: DUP2
00000fb9: LT
00000fba: PUSH2 0x0fbf
00000fbd: JUMPI
00000fbe: INVALID
00000fbf: JUMPDEST
00000fc0: SWAP1
00000fc1: POP
00000fc2: PUSH1 0x20
00000fc4: MUL
00000fc5: ADD
00000fc6: CALLDATALOAD
00000fc7: PUSH1 0x01
00000fc9: PUSH1 0x01
00000fcb: PUSH1 0xa0
00000fcd: SHL
00000fce: SUB
00000fcf: AND
00000fd0: PUSH1 0x01
00000fd2: PUSH1 0x01
00000fd4: PUSH1 0xa0
00000fd6: SHL
00000fd7: SUB
00000fd8: AND
00000fd9: PUSH1 0x00
00000fdb: PUSH1 0x01
00000fdd: PUSH1 0x01
00000fdf: PUSH1 0xa0
00000fe1: SHL
00000fe2: SUB
00000fe3: AND
00000fe4: CALLER
00000fe5: PUSH1 0x01
00000fe7: PUSH1 0x01
00000fe9: PUSH1 0xa0
00000feb: SHL
00000fec: SUB
00000fed: AND
00000fee: PUSH1 0x00
00000ff0: DUP1
00000ff1: MLOAD
00000ff2: PUSH1 0x20
00000ff4: PUSH2 0x2c5c
00000ff7: DUP4
00000ff8: CODECOPY
00000ff9: DUP2
00000ffa: MLOAD
00000ffb: SWAP2
00000ffc: MSTORE
00000ffd: DUP12
00000ffe: DUP10
00000fff: DUP10
00001000: DUP8
00001001: DUP2
00001002: DUP2
00001003: LT
00001004: PUSH2 0x1009
00001007: JUMPI
00001008: INVALID
00001009: JUMPDEST
0000100a: PUSH1 0x40
0000100c: DUP1
0000100d: MLOAD
0000100e: SWAP5
0000100f: DUP6
00001010: MSTORE
00001011: PUSH1 0x20
00001013: SWAP2
00001014: DUP3
00001015: MUL
00001016: SWAP4
00001017: SWAP1
00001018: SWAP4
00001019: ADD
0000101a: CALLDATALOAD
0000101b: SWAP1
0000101c: DUP5
0000101d: ADD
0000101e: MSTORE
0000101f: POP
00001020: DUP1
00001021: MLOAD
00001022: SWAP2
00001023: DUP3
00001024: SWAP1
00001025: SUB
00001026: ADD
00001027: SWAP1
00001028: LOG4
00001029: PUSH2 0x1055
0000102c: DUP8
0000102d: DUP8
0000102e: DUP4
0000102f: DUP2
00001030: DUP2
00001031: LT
00001032: PUSH2 0x1037
00001035: JUMPI
00001036: INVALID
00001037: JUMPDEST
00001038: SWAP1
00001039: POP
0000103a: PUSH1 0x20
0000103c: MUL
0000103d: ADD
0000103e: CALLDATALOAD
0000103f: PUSH1 0x01
00001041: PUSH1 0x01
00001043: PUSH1 0xa0
00001045: SHL
00001046: SUB
00001047: AND
00001048: PUSH1 0x01
0000104a: PUSH1 0x01
0000104c: PUSH1 0xa0
0000104e: SHL
0000104f: SUB
00001050: AND
00001051: PUSH2 0x28e7
00001054: JUMP
00001055: JUMPDEST
00001056: ISZERO
00001057: PUSH2 0x10cb
0000105a: JUMPI
0000105b: PUSH2 0x10cb
0000105e: CALLER
0000105f: CALLER
00001060: DUP10
00001061: DUP10
00001062: DUP6
00001063: DUP2
00001064: DUP2
00001065: LT
00001066: PUSH2 0x106b
00001069: JUMPI
0000106a: INVALID
0000106b: JUMPDEST
0000106c: SWAP1
0000106d: POP
0000106e: PUSH1 0x20
00001070: MUL
00001071: ADD
00001072: CALLDATALOAD
00001073: PUSH1 0x01
00001075: PUSH1 0x01
00001077: PUSH1 0xa0
00001079: SHL
0000107a: SUB
0000107b: AND
0000107c: DUP12
0000107d: DUP10
0000107e: DUP10
0000107f: DUP8
00001080: DUP2
00001081: DUP2
00001082: LT
00001083: PUSH2 0x1088
00001086: JUMPI
00001087: INVALID
00001088: JUMPDEST
00001089: SWAP1
0000108a: POP
0000108b: PUSH1 0x20
0000108d: MUL
0000108e: ADD
0000108f: CALLDATALOAD
00001090: DUP9
00001091: DUP9
00001092: DUP1
00001093: DUP1
00001094: PUSH1 0x1f
00001096: ADD
00001097: PUSH1 0x20
00001099: DUP1
0000109a: SWAP2
0000109b: DIV
0000109c: MUL
0000109d: PUSH1 0x20
0000109f: ADD
000010a0: PUSH1 0x40
000010a2: MLOAD
000010a3: SWAP1
000010a4: DUP2
000010a5: ADD
000010a6: PUSH1 0x40
000010a8: MSTORE
000010a9: DUP1
000010aa: SWAP4
000010ab: SWAP3
000010ac: SWAP2
000010ad: SWAP1
000010ae: DUP2
000010af: DUP2
000010b0: MSTORE
000010b1: PUSH1 0x20
000010b3: ADD
000010b4: DUP4
000010b5: DUP4
000010b6: DUP1
000010b7: DUP3
000010b8: DUP5
000010b9: CALLDATACOPY
000010ba: PUSH1 0x00
000010bc: SWAP3
000010bd: ADD
000010be: SWAP2
000010bf: SWAP1
000010c0: SWAP2
000010c1: MSTORE
000010c2: POP
000010c3: PUSH2 0x28ed
000010c6: SWAP3
000010c7: POP
000010c8: POP
000010c9: POP
000010ca: JUMP
000010cb: JUMPDEST
000010cc: PUSH1 0x01
000010ce: ADD
000010cf: PUSH2 0x0dfe
000010d2: JUMP
000010d3: JUMPDEST
000010d4: POP
000010d5: POP
000010d6: POP
000010d7: POP
000010d8: POP
000010d9: POP
000010da: POP
000010db: POP
000010dc: JUMP
000010dd: JUMPDEST
000010de: PUSH1 0x07
000010e0: PUSH1 0x20
000010e2: MSTORE
000010e3: PUSH1 0x00
000010e5: SWAP1
000010e6: DUP2
000010e7: MSTORE
000010e8: PUSH1 0x40
000010ea: SWAP1
000010eb: KECCAK256
000010ec: SLOAD
000010ed: DUP2
000010ee: JUMP
000010ef: JUMPDEST
000010f0: PUSH1 0x08
000010f2: PUSH1 0x20
000010f4: MSTORE
000010f5: PUSH1 0x00
000010f7: SWAP1
000010f8: DUP2
000010f9: MSTORE
000010fa: PUSH1 0x40
000010fc: SWAP1
000010fd: KECCAK256
000010fe: SLOAD
000010ff: DUP2
00001100: JUMP
00001101: JUMPDEST
00001102: PUSH1 0x01
00001104: PUSH1 0x01
00001106: PUSH1 0xa0
00001108: SHL
00001109: SUB
0000110a: DUP8
0000110b: AND
0000110c: PUSH2 0x115c
0000110f: JUMPI
00001110: PUSH1 0x40
00001112: DUP1
00001113: MLOAD
00001114: PUSH3 0x461bcd
00001118: PUSH1 0xe5
0000111a: SHL
0000111b: DUP2
0000111c: MSTORE
0000111d: PUSH1 0x20
0000111f: PUSH1 0x04
00001121: DUP3
00001122: ADD
00001123: MSTORE
00001124: PUSH1 0x1b
00001126: PUSH1 0x24
00001128: DUP3
00001129: ADD
0000112a: MSTORE
0000112b: PUSH32 0x63616e6e6f742073656e6420746f207a65726f20616464726573730000000000
0000114c: PUSH1 0x44
0000114e: DUP3
0000114f: ADD
00001150: MSTORE
00001151: SWAP1
00001152: MLOAD
00001153: SWAP1
00001154: DUP2
00001155: SWAP1
00001156: SUB
00001157: PUSH1 0x64
00001159: ADD
0000115a: SWAP1
0000115b: REVERT
0000115c: JUMPDEST
0000115d: DUP5
0000115e: DUP4
0000115f: EQ
00001160: PUSH2 0x11b0
00001163: JUMPI
00001164: PUSH1 0x40
00001166: DUP1
00001167: MLOAD
00001168: PUSH3 0x461bcd
0000116c: PUSH1 0xe5
0000116e: SHL
0000116f: DUP2
00001170: MSTORE
00001171: PUSH1 0x20
00001173: PUSH1 0x04
00001175: DUP3
00001176: ADD
00001177: MSTORE
00001178: PUSH1 0x17
0000117a: PUSH1 0x24
0000117c: DUP3
0000117d: ADD
0000117e: MSTORE
0000117f: PUSH32 0x4172726179206c656e677468206d757374206d61746368000000000000000000
000011a0: PUSH1 0x44
000011a2: DUP3
000011a3: ADD
000011a4: MSTORE
000011a5: SWAP1
000011a6: MLOAD
000011a7: SWAP1
000011a8: DUP2
000011a9: SWAP1
000011aa: SUB
000011ab: PUSH1 0x64
000011ad: ADD
000011ae: SWAP1
000011af: REVERT
000011b0: JUMPDEST
000011b1: PUSH1 0x01
000011b3: PUSH1 0x01
000011b5: PUSH1 0xa0
000011b7: SHL
000011b8: SUB
000011b9: DUP9
000011ba: AND
000011bb: CALLER
000011bc: EQ
000011bd: DUP1
000011be: PUSH2 0x11ef
000011c1: JUMPI
000011c2: POP
000011c3: PUSH1 0x01
000011c5: PUSH1 0x01
000011c7: PUSH1 0xa0
000011c9: SHL
000011ca: SUB
000011cb: DUP9
000011cc: AND
000011cd: PUSH1 0x00
000011cf: SWAP1
000011d0: DUP2
000011d1: MSTORE
000011d2: PUSH1 0x03
000011d4: PUSH1 0x20
000011d6: SWAP1
000011d7: DUP2
000011d8: MSTORE
000011d9: PUSH1 0x40
000011db: DUP1
000011dc: DUP4
000011dd: KECCAK256
000011de: CALLER
000011df: DUP5
000011e0: MSTORE
000011e1: SWAP1
000011e2: SWAP2
000011e3: MSTORE
000011e4: SWAP1
000011e5: KECCAK256
000011e6: SLOAD
000011e7: PUSH1 0xff
000011e9: AND
000011ea: ISZERO
000011eb: ISZERO
000011ec: PUSH1 0x01
000011ee: EQ
000011ef: JUMPDEST
000011f0: PUSH2 0x122a
000011f3: JUMPI
000011f4: PUSH1 0x40
000011f6: MLOAD
000011f7: PUSH3 0x461bcd
000011fb: PUSH1 0xe5
000011fd: SHL
000011fe: DUP2
000011ff: MSTORE
00001200: PUSH1 0x04
00001202: ADD
00001203: DUP1
00001204: DUP1
00001205: PUSH1 0x20
00001207: ADD
00001208: DUP3
00001209: DUP2
0000120a: SUB
0000120b: DUP3
0000120c: MSTORE
0000120d: PUSH1 0x2f
0000120f: DUP2
00001210: MSTORE
00001211: PUSH1 0x20
00001213: ADD
00001214: DUP1
00001215: PUSH2 0x2c7c
00001218: PUSH1 0x2f
0000121a: SWAP2
0000121b: CODECOPY
0000121c: PUSH1 0x40
0000121e: ADD
0000121f: SWAP2
00001220: POP
00001221: POP
00001222: PUSH1 0x40
00001224: MLOAD
00001225: DUP1
00001226: SWAP2
00001227: SUB
00001228: SWAP1
00001229: REVERT
0000122a: JUMPDEST
0000122b: PUSH1 0x00
0000122d: JUMPDEST
0000122e: DUP6
0000122f: DUP2
00001230: LT
00001231: ISZERO
00001232: PUSH2 0x1589
00001235: JUMPI
00001236: PUSH2 0x1250
00001239: DUP8
0000123a: DUP8
0000123b: DUP4
0000123c: DUP2
0000123d: DUP2
0000123e: LT
0000123f: PUSH2 0x1244
00001242: JUMPI
00001243: INVALID
00001244: JUMPDEST
00001245: SWAP1
00001246: POP
00001247: PUSH1 0x20
00001249: MUL
0000124a: ADD
0000124b: CALLDATALOAD
0000124c: PUSH2 0x259d
0000124f: JUMP
00001250: JUMPDEST
00001251: ISZERO
00001252: PUSH2 0x1423
00001255: JUMPI
00001256: DUP9
00001257: PUSH1 0x01
00001259: PUSH1 0x01
0000125b: PUSH1 0xa0
0000125d: SHL
0000125e: SUB
0000125f: AND
00001260: PUSH1 0x04
00001262: PUSH1 0x00
00001264: DUP10
00001265: DUP10
00001266: DUP6
00001267: DUP2
00001268: DUP2
00001269: LT
0000126a: PUSH2 0x126f
0000126d: JUMPI
0000126e: INVALID
0000126f: JUMPDEST
00001270: PUSH1 0x20
00001272: SWAP1
00001273: DUP2
00001274: MUL
00001275: SWAP3
00001276: SWAP1
00001277: SWAP3
00001278: ADD
00001279: CALLDATALOAD
0000127a: DUP4
0000127b: MSTORE
0000127c: POP
0000127d: DUP2
0000127e: ADD
0000127f: SWAP2
00001280: SWAP1
00001281: SWAP2
00001282: MSTORE
00001283: PUSH1 0x40
00001285: ADD
00001286: PUSH1 0x00
00001288: KECCAK256
00001289: SLOAD
0000128a: PUSH1 0x01
0000128c: PUSH1 0x01
0000128e: PUSH1 0xa0
00001290: SHL
00001291: SUB
00001292: AND
00001293: EQ
00001294: PUSH2 0x129c
00001297: JUMPI
00001298: PUSH1 0x00
0000129a: DUP1
0000129b: REVERT
0000129c: JUMPDEST
0000129d: DUP8
0000129e: PUSH1 0x04
000012a0: PUSH1 0x00
000012a2: DUP10
000012a3: DUP10
000012a4: DUP6
000012a5: DUP2
000012a6: DUP2
000012a7: LT
000012a8: PUSH2 0x12ad
000012ab: JUMPI
000012ac: INVALID
000012ad: JUMPDEST
000012ae: SWAP1
000012af: POP
000012b0: PUSH1 0x20
000012b2: MUL
000012b3: ADD
000012b4: CALLDATALOAD
000012b5: DUP2
000012b6: MSTORE
000012b7: PUSH1 0x20
000012b9: ADD
000012ba: SWAP1
000012bb: DUP2
000012bc: MSTORE
000012bd: PUSH1 0x20
000012bf: ADD
000012c0: PUSH1 0x00
000012c2: KECCAK256
000012c3: PUSH1 0x00
000012c5: PUSH2 0x0100
000012c8: EXP
000012c9: DUP2
000012ca: SLOAD
000012cb: DUP2
000012cc: PUSH1 0x01
000012ce: PUSH1 0x01
000012d0: PUSH1 0xa0
000012d2: SHL
000012d3: SUB
000012d4: MUL
000012d5: NOT
000012d6: AND
000012d7: SWAP1
000012d8: DUP4
000012d9: PUSH1 0x01
000012db: PUSH1 0x01
000012dd: PUSH1 0xa0
000012df: SHL
000012e0: SUB
000012e1: AND
000012e2: MUL
000012e3: OR
000012e4: SWAP1
000012e5: SSTORE
000012e6: POP
000012e7: PUSH2 0x134e
000012ea: DUP6
000012eb: DUP6
000012ec: DUP4
000012ed: DUP2
000012ee: DUP2
000012ef: LT
000012f0: PUSH2 0x12f5
000012f3: JUMPI
000012f4: INVALID
000012f5: JUMPDEST
000012f6: SWAP1
000012f7: POP
000012f8: PUSH1 0x20
000012fa: MUL
000012fb: ADD
000012fc: CALLDATALOAD
000012fd: PUSH1 0x02
000012ff: PUSH1 0x00
00001301: PUSH2 0x131b
00001304: DUP12
00001305: DUP12
00001306: DUP8
00001307: DUP2
00001308: DUP2
00001309: LT
0000130a: PUSH2 0x130f
0000130d: JUMPI
0000130e: INVALID
0000130f: JUMPDEST
00001310: SWAP1
00001311: POP
00001312: PUSH1 0x20
00001314: MUL
00001315: ADD
00001316: CALLDATALOAD
00001317: PUSH2 0x21c3
0000131a: JUMP
0000131b: JUMPDEST
0000131c: DUP2
0000131d: MSTORE
0000131e: PUSH1 0x20
00001320: DUP1
00001321: DUP3
00001322: ADD
00001323: SWAP3
00001324: SWAP1
00001325: SWAP3
00001326: MSTORE
00001327: PUSH1 0x40
00001329: SWAP1
0000132a: DUP2
0000132b: ADD
0000132c: PUSH1 0x00
0000132e: SWAP1
0000132f: DUP2
00001330: KECCAK256
00001331: PUSH1 0x01
00001333: PUSH1 0x01
00001335: PUSH1 0xa0
00001337: SHL
00001338: SUB
00001339: DUP16
0000133a: AND
0000133b: DUP3
0000133c: MSTORE
0000133d: SWAP1
0000133e: SWAP3
0000133f: MSTORE
00001340: SWAP1
00001341: KECCAK256
00001342: SLOAD
00001343: SWAP1
00001344: PUSH4 0xffffffff
00001349: PUSH2 0x2a5d
0000134c: AND
0000134d: JUMP
0000134e: JUMPDEST
0000134f: PUSH1 0x02
00001351: PUSH1 0x00
00001353: PUSH2 0x1361
00001356: DUP11
00001357: DUP11
00001358: DUP7
00001359: DUP2
0000135a: DUP2
0000135b: LT
0000135c: PUSH2 0x130f
0000135f: JUMPI
00001360: INVALID
00001361: JUMPDEST
00001362: DUP2
00001363: MSTORE
00001364: PUSH1 0x20
00001366: DUP1
00001367: DUP3
00001368: ADD
00001369: SWAP3
0000136a: SWAP1
0000136b: SWAP3
0000136c: MSTORE
0000136d: PUSH1 0x40
0000136f: SWAP1
00001370: DUP2
00001371: ADD
00001372: PUSH1 0x00
00001374: SWAP1
00001375: DUP2
00001376: KECCAK256
00001377: PUSH1 0x01
00001379: PUSH1 0x01
0000137b: PUSH1 0xa0
0000137d: SHL
0000137e: SUB
0000137f: DUP15
00001380: AND
00001381: DUP3
00001382: MSTORE
00001383: SWAP1
00001384: SWAP3
00001385: MSTORE
00001386: SWAP1
00001387: KECCAK256
00001388: SSTORE
00001389: PUSH2 0x13e4
0000138c: DUP6
0000138d: DUP6
0000138e: DUP4
0000138f: DUP2
00001390: DUP2
00001391: LT
00001392: PUSH2 0x1397
00001395: JUMPI
00001396: INVALID
00001397: JUMPDEST
00001398: SWAP1
00001399: POP
0000139a: PUSH1 0x20
0000139c: MUL
0000139d: ADD
0000139e: CALLDATALOAD
0000139f: PUSH1 0x02
000013a1: PUSH1 0x00
000013a3: PUSH2 0x13b1
000013a6: DUP12
000013a7: DUP12
000013a8: DUP8
000013a9: DUP2
000013aa: DUP2
000013ab: LT
000013ac: PUSH2 0x130f
000013af: JUMPI
000013b0: INVALID
000013b1: JUMPDEST
000013b2: DUP2
000013b3: MSTORE
000013b4: PUSH1 0x20
000013b6: DUP1
000013b7: DUP3
000013b8: ADD
000013b9: SWAP3
000013ba: SWAP1
000013bb: SWAP3
000013bc: MSTORE
000013bd: PUSH1 0x40
000013bf: SWAP1
000013c0: DUP2
000013c1: ADD
000013c2: PUSH1 0x00
000013c4: SWAP1
000013c5: DUP2
000013c6: KECCAK256
000013c7: PUSH1 0x01
000013c9: PUSH1 0x01
000013cb: PUSH1 0xa0
000013cd: SHL
000013ce: SUB
000013cf: DUP15
000013d0: AND
000013d1: DUP3
000013d2: MSTORE
000013d3: SWAP1
000013d4: SWAP3
000013d5: MSTORE
000013d6: SWAP1
000013d7: KECCAK256
000013d8: SLOAD
000013d9: SWAP1
000013da: PUSH4 0xffffffff
000013df: PUSH2 0x28da
000013e2: AND
000013e3: JUMP
000013e4: JUMPDEST
000013e5: PUSH1 0x02
000013e7: PUSH1 0x00
000013e9: PUSH2 0x13f7
000013ec: DUP11
000013ed: DUP11
000013ee: DUP7
000013ef: DUP2
000013f0: DUP2
000013f1: LT
000013f2: PUSH2 0x130f
000013f5: JUMPI
000013f6: INVALID
000013f7: JUMPDEST
000013f8: DUP2
000013f9: MSTORE
000013fa: PUSH1 0x20
000013fc: DUP1
000013fd: DUP3
000013fe: ADD
000013ff: SWAP3
00001400: SWAP1
00001401: SWAP3
00001402: MSTORE
00001403: PUSH1 0x40
00001405: SWAP1
00001406: DUP2
00001407: ADD
00001408: PUSH1 0x00
0000140a: SWAP1
0000140b: DUP2
0000140c: KECCAK256
0000140d: PUSH1 0x01
0000140f: PUSH1 0x01
00001411: PUSH1 0xa0
00001413: SHL
00001414: SUB
00001415: DUP14
00001416: AND
00001417: DUP3
00001418: MSTORE
00001419: SWAP1
0000141a: SWAP3
0000141b: MSTORE
0000141c: SWAP1
0000141d: KECCAK256
0000141e: SSTORE
0000141f: PUSH2 0x1581
00001422: JUMP
00001423: JUMPDEST
00001424: PUSH2 0x1490
00001427: DUP6
00001428: DUP6
00001429: DUP4
0000142a: DUP2
0000142b: DUP2
0000142c: LT
0000142d: PUSH2 0x1432
00001430: JUMPI
00001431: INVALID
00001432: JUMPDEST
00001433: SWAP1
00001434: POP
00001435: PUSH1 0x20
00001437: MUL
00001438: ADD
00001439: CALLDATALOAD
0000143a: PUSH1 0x02
0000143c: PUSH1 0x00
0000143e: DUP11
0000143f: DUP11
00001440: DUP7
00001441: DUP2
00001442: DUP2
00001443: LT
00001444: PUSH2 0x1449
00001447: JUMPI
00001448: INVALID
00001449: JUMPDEST
0000144a: SWAP1
0000144b: POP
0000144c: PUSH1 0x20
0000144e: MUL
0000144f: ADD
00001450: CALLDATALOAD
00001451: DUP2
00001452: MSTORE
00001453: PUSH1 0x20
00001455: ADD
00001456: SWAP1
00001457: DUP2
00001458: MSTORE
00001459: PUSH1 0x20
0000145b: ADD
0000145c: PUSH1 0x00
0000145e: KECCAK256
0000145f: PUSH1 0x00
00001461: DUP13
00001462: PUSH1 0x01
00001464: PUSH1 0x01
00001466: PUSH1 0xa0
00001468: SHL
00001469: SUB
0000146a: AND
0000146b: PUSH1 0x01
0000146d: PUSH1 0x01
0000146f: PUSH1 0xa0
00001471: SHL
00001472: SUB
00001473: AND
00001474: DUP2
00001475: MSTORE
00001476: PUSH1 0x20
00001478: ADD
00001479: SWAP1
0000147a: DUP2
0000147b: MSTORE
0000147c: PUSH1 0x20
0000147e: ADD
0000147f: PUSH1 0x00
00001481: KECCAK256
00001482: SLOAD
00001483: PUSH2 0x2a5d
00001486: SWAP1
00001487: SWAP2
00001488: SWAP1
00001489: PUSH4 0xffffffff
0000148e: AND
0000148f: JUMP
00001490: JUMPDEST
00001491: PUSH1 0x02
00001493: PUSH1 0x00
00001495: DUP10
00001496: DUP10
00001497: DUP6
00001498: DUP2
00001499: DUP2
0000149a: LT
0000149b: PUSH2 0x14a0
0000149e: JUMPI
0000149f: INVALID
000014a0: JUMPDEST
000014a1: SWAP1
000014a2: POP
000014a3: PUSH1 0x20
000014a5: MUL
000014a6: ADD
000014a7: CALLDATALOAD
000014a8: DUP2
000014a9: MSTORE
000014aa: PUSH1 0x20
000014ac: ADD
000014ad: SWAP1
000014ae: DUP2
000014af: MSTORE
000014b0: PUSH1 0x20
000014b2: ADD
000014b3: PUSH1 0x00
000014b5: KECCAK256
000014b6: PUSH1 0x00
000014b8: DUP12
000014b9: PUSH1 0x01
000014bb: PUSH1 0x01
000014bd: PUSH1 0xa0
000014bf: SHL
000014c0: SUB
000014c1: AND
000014c2: PUSH1 0x01
000014c4: PUSH1 0x01
000014c6: PUSH1 0xa0
000014c8: SHL
000014c9: SUB
000014ca: AND
000014cb: DUP2
000014cc: MSTORE
000014cd: PUSH1 0x20
000014cf: ADD
000014d0: SWAP1
000014d1: DUP2
000014d2: MSTORE
000014d3: PUSH1 0x20
000014d5: ADD
000014d6: PUSH1 0x00
000014d8: KECCAK256
000014d9: DUP2
000014da: SWAP1
000014db: SSTORE
000014dc: POP
000014dd: PUSH2 0x1534
000014e0: PUSH1 0x02
000014e2: PUSH1 0x00
000014e4: DUP10
000014e5: DUP10
000014e6: DUP6
000014e7: DUP2
000014e8: DUP2
000014e9: LT
000014ea: PUSH2 0x14ef
000014ed: JUMPI
000014ee: INVALID
000014ef: JUMPDEST
000014f0: SWAP1
000014f1: POP
000014f2: PUSH1 0x20
000014f4: MUL
000014f5: ADD
000014f6: CALLDATALOAD
000014f7: DUP2
000014f8: MSTORE
000014f9: PUSH1 0x20
000014fb: ADD
000014fc: SWAP1
000014fd: DUP2
000014fe: MSTORE
000014ff: PUSH1 0x20
00001501: ADD
00001502: PUSH1 0x00
00001504: KECCAK256
00001505: PUSH1 0x00
00001507: DUP11
00001508: PUSH1 0x01
0000150a: PUSH1 0x01
0000150c: PUSH1 0xa0
0000150e: SHL
0000150f: SUB
00001510: AND
00001511: PUSH1 0x01
00001513: PUSH1 0x01
00001515: PUSH1 0xa0
00001517: SHL
00001518: SUB
00001519: AND
0000151a: DUP2
0000151b: MSTORE
0000151c: PUSH1 0x20
0000151e: ADD
0000151f: SWAP1
00001520: DUP2
00001521: MSTORE
00001522: PUSH1 0x20
00001524: ADD
00001525: PUSH1 0x00
00001527: KECCAK256
00001528: SLOAD
00001529: DUP7
0000152a: DUP7
0000152b: DUP5
0000152c: DUP2
0000152d: DUP2
0000152e: LT
0000152f: PUSH2 0x0f0d
00001532: JUMPI
00001533: INVALID
00001534: JUMPDEST
00001535: PUSH1 0x02
00001537: PUSH1 0x00
00001539: DUP10
0000153a: DUP10
0000153b: DUP6
0000153c: DUP2
0000153d: DUP2
0000153e: LT
0000153f: PUSH2 0x1544
00001542: JUMPI
00001543: INVALID
00001544: JUMPDEST
00001545: SWAP1
00001546: POP
00001547: PUSH1 0x20
00001549: MUL
0000154a: ADD
0000154b: CALLDATALOAD
0000154c: DUP2
0000154d: MSTORE
0000154e: PUSH1 0x20
00001550: ADD
00001551: SWAP1
00001552: DUP2
00001553: MSTORE
00001554: PUSH1 0x20
00001556: ADD
00001557: PUSH1 0x00
00001559: KECCAK256
0000155a: PUSH1 0x00
0000155c: DUP11
0000155d: PUSH1 0x01
0000155f: PUSH1 0x01
00001561: PUSH1 0xa0
00001563: SHL
00001564: SUB
00001565: AND
00001566: PUSH1 0x01
00001568: PUSH1 0x01
0000156a: PUSH1 0xa0
0000156c: SHL
0000156d: SUB
0000156e: AND
0000156f: DUP2
00001570: MSTORE
00001571: PUSH1 0x20
00001573: ADD
00001574: SWAP1
00001575: DUP2
00001576: MSTORE
00001577: PUSH1 0x20
00001579: ADD
0000157a: PUSH1 0x00
0000157c: KECCAK256
0000157d: DUP2
0000157e: SWAP1
0000157f: SSTORE
00001580: POP
00001581: JUMPDEST
00001582: PUSH1 0x01
00001584: ADD
00001585: PUSH2 0x122d
00001588: JUMP
00001589: JUMPDEST
0000158a: POP
0000158b: DUP7
0000158c: PUSH1 0x01
0000158e: PUSH1 0x01
00001590: PUSH1 0xa0
00001592: SHL
00001593: SUB
00001594: AND
00001595: DUP9
00001596: PUSH1 0x01
00001598: PUSH1 0x01
0000159a: PUSH1 0xa0
0000159c: SHL
0000159d: SUB
0000159e: AND
0000159f: CALLER
000015a0: PUSH1 0x01
000015a2: PUSH1 0x01
000015a4: PUSH1 0xa0
000015a6: SHL
000015a7: SUB
000015a8: AND
000015a9: PUSH32 0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb
000015ca: DUP10
000015cb: DUP10
000015cc: DUP10
000015cd: DUP10
000015ce: PUSH1 0x40
000015d0: MLOAD
000015d1: DUP1
000015d2: DUP1
000015d3: PUSH1 0x20
000015d5: ADD
000015d6: DUP1
000015d7: PUSH1 0x20
000015d9: ADD
000015da: DUP4
000015db: DUP2
000015dc: SUB
000015dd: DUP4
000015de: MSTORE
000015df: DUP8
000015e0: DUP8
000015e1: DUP3
000015e2: DUP2
000015e3: DUP2
000015e4: MSTORE
000015e5: PUSH1 0x20
000015e7: ADD
000015e8: SWAP3
000015e9: POP
000015ea: PUSH1 0x20
000015ec: MUL
000015ed: DUP1
000015ee: DUP3
000015ef: DUP5
000015f0: CALLDATACOPY
000015f1: PUSH1 0x00
000015f3: DUP4
000015f4: DUP3
000015f5: ADD
000015f6: MSTORE
000015f7: PUSH1 0x1f
000015f9: ADD
000015fa: PUSH1 0x1f
000015fc: NOT
000015fd: AND
000015fe: SWAP1
000015ff: SWAP2
00001600: ADD
00001601: DUP5
00001602: DUP2
00001603: SUB
00001604: DUP4
00001605: MSTORE
00001606: DUP6
00001607: DUP2
00001608: MSTORE
00001609: PUSH1 0x20
0000160b: SWAP1
0000160c: DUP2
0000160d: ADD
0000160e: SWAP2
0000160f: POP
00001610: DUP7
00001611: SWAP1
00001612: DUP7
00001613: MUL
00001614: DUP1
00001615: DUP3
00001616: DUP5
00001617: CALLDATACOPY
00001618: PUSH1 0x00
0000161a: DUP4
0000161b: DUP3
0000161c: ADD
0000161d: MSTORE
0000161e: PUSH1 0x40
00001620: MLOAD
00001621: PUSH1 0x1f
00001623: SWAP1
00001624: SWAP2
00001625: ADD
00001626: PUSH1 0x1f
00001628: NOT
00001629: AND
0000162a: SWAP1
0000162b: SWAP3
0000162c: ADD
0000162d: DUP3
0000162e: SWAP1
0000162f: SUB
00001630: SWAP9
00001631: POP
00001632: SWAP1
00001633: SWAP7
00001634: POP
00001635: POP
00001636: POP
00001637: POP
00001638: POP
00001639: POP
0000163a: POP
0000163b: LOG4
0000163c: PUSH2 0x164d
0000163f: DUP8
00001640: PUSH1 0x01
00001642: PUSH1 0x01
00001644: PUSH1 0xa0
00001646: SHL
00001647: SUB
00001648: AND
00001649: PUSH2 0x28e7
0000164c: JUMP
0000164d: JUMPDEST
0000164e: ISZERO
0000164f: PUSH2 0x10d3
00001652: JUMPI
00001653: PUSH2 0x10d3
00001656: CALLER
00001657: DUP10
00001658: DUP10
00001659: DUP10
0000165a: DUP10
0000165b: DUP1
0000165c: DUP1
0000165d: PUSH1 0x20
0000165f: MUL
00001660: PUSH1 0x20
00001662: ADD
00001663: PUSH1 0x40
00001665: MLOAD
00001666: SWAP1
00001667: DUP2
00001668: ADD
00001669: PUSH1 0x40
0000166b: MSTORE
0000166c: DUP1
0000166d: SWAP4
0000166e: SWAP3
0000166f: SWAP2
00001670: SWAP1
00001671: DUP2
00001672: DUP2
00001673: MSTORE
00001674: PUSH1 0x20
00001676: ADD
00001677: DUP4
00001678: DUP4
00001679: PUSH1 0x20
0000167b: MUL
0000167c: DUP1
0000167d: DUP3
0000167e: DUP5
0000167f: CALLDATACOPY
00001680: PUSH1 0x00
00001682: SWAP3
00001683: ADD
00001684: SWAP2
00001685: SWAP1
00001686: SWAP2
00001687: MSTORE
00001688: POP
00001689: POP
0000168a: PUSH1 0x40
0000168c: DUP1
0000168d: MLOAD
0000168e: PUSH1 0x20
00001690: DUP1
00001691: DUP14
00001692: MUL
00001693: DUP3
00001694: DUP2
00001695: ADD
00001696: DUP3
00001697: ADD
00001698: SWAP1
00001699: SWAP4
0000169a: MSTORE
0000169b: DUP13
0000169c: DUP3
0000169d: MSTORE
0000169e: SWAP1
0000169f: SWAP4
000016a0: POP
000016a1: DUP13
000016a2: SWAP3
000016a3: POP
000016a4: DUP12
000016a5: SWAP2
000016a6: DUP3
000016a7: SWAP2
000016a8: DUP6
000016a9: ADD
000016aa: SWAP1
000016ab: DUP5
000016ac: SWAP1
000016ad: DUP1
000016ae: DUP3
000016af: DUP5
000016b0: CALLDATACOPY
000016b1: PUSH1 0x00
000016b3: SWAP3
000016b4: ADD
000016b5: SWAP2
000016b6: SWAP1
000016b7: SWAP2
000016b8: MSTORE
000016b9: POP
000016ba: POP
000016bb: PUSH1 0x40
000016bd: DUP1
000016be: MLOAD
000016bf: PUSH1 0x20
000016c1: PUSH1 0x1f
000016c3: DUP13
000016c4: ADD
000016c5: DUP2
000016c6: SWAP1
000016c7: DIV
000016c8: DUP2
000016c9: MUL
000016ca: DUP3
000016cb: ADD
000016cc: DUP2
000016cd: ADD
000016ce: SWAP1
000016cf: SWAP3
000016d0: MSTORE
000016d1: DUP11
000016d2: DUP2
000016d3: MSTORE
000016d4: SWAP3
000016d5: POP
000016d6: DUP11
000016d7: SWAP2
000016d8: POP
000016d9: DUP10
000016da: SWAP1
000016db: DUP2
000016dc: SWAP1
000016dd: DUP5
000016de: ADD
000016df: DUP4
000016e0: DUP3
000016e1: DUP1
000016e2: DUP3
000016e3: DUP5
000016e4: CALLDATACOPY
000016e5: PUSH1 0x00
000016e7: SWAP3
000016e8: ADD
000016e9: SWAP2
000016ea: SWAP1
000016eb: SWAP2
000016ec: MSTORE
000016ed: POP
000016ee: PUSH2 0x2a6f
000016f1: SWAP3
000016f2: POP
000016f3: POP
000016f4: POP
000016f5: JUMP
000016f6: JUMPDEST
000016f7: PUSH1 0x01
000016f9: SLOAD
000016fa: PUSH1 0x01
000016fc: PUSH1 0x01
000016fe: PUSH1 0xa0
00001700: SHL
00001701: SUB
00001702: AND
00001703: CALLER
00001704: EQ
00001705: PUSH2 0x170d
00001708: JUMPI
00001709: PUSH1 0x00
0000170b: DUP1
0000170c: REVERT
0000170d: JUMPDEST
0000170e: PUSH1 0x00
00001710: JUMPDEST
00001711: DUP2
00001712: DUP2
00001713: LT
00001714: ISZERO
00001715: PUSH2 0x175a
00001718: JUMPI
00001719: PUSH1 0x09
0000171b: PUSH1 0x00
0000171d: DUP5
0000171e: DUP5
0000171f: DUP5
00001720: DUP2
00001721: DUP2
00001722: LT
00001723: PUSH2 0x1728
00001726: JUMPI
00001727: INVALID
00001728: JUMPDEST
00001729: PUSH1 0x20
0000172b: SWAP1
0000172c: DUP2
0000172d: MUL
0000172e: SWAP3
0000172f: SWAP1
00001730: SWAP3
00001731: ADD
00001732: CALLDATALOAD
00001733: PUSH1 0x01
00001735: PUSH1 0x01
00001737: PUSH1 0xa0
00001739: SHL
0000173a: SUB
0000173b: AND
0000173c: DUP4
0000173d: MSTORE
0000173e: POP
0000173f: DUP2
00001740: ADD
00001741: SWAP2
00001742: SWAP1
00001743: SWAP2
00001744: MSTORE
00001745: PUSH1 0x40
00001747: ADD
00001748: PUSH1 0x00
0000174a: KECCAK256
0000174b: DUP1
0000174c: SLOAD
0000174d: PUSH1 0xff
0000174f: NOT
00001750: AND
00001751: SWAP1
00001752: SSTORE
00001753: PUSH1 0x01
00001755: ADD
00001756: PUSH2 0x1710
00001759: JUMP
0000175a: JUMPDEST
0000175b: POP
0000175c: POP
0000175d: POP
0000175e: JUMP
0000175f: JUMPDEST
00001760: CALLER
00001761: PUSH1 0x00
00001763: SWAP1
00001764: DUP2
00001765: MSTORE
00001766: PUSH1 0x09
00001768: PUSH1 0x20
0000176a: MSTORE
0000176b: PUSH1 0x40
0000176d: SWAP1
0000176e: KECCAK256
0000176f: SLOAD
00001770: PUSH1 0xff
00001772: AND
00001773: PUSH2 0x17b1
00001776: JUMPI
00001777: PUSH1 0x40
00001779: DUP1
0000177a: MLOAD
0000177b: PUSH3 0x461bcd
0000177f: PUSH1 0xe5
00001781: SHL
00001782: DUP2
00001783: MSTORE
00001784: PUSH1 0x20
00001786: PUSH1 0x04
00001788: DUP3
00001789: ADD
0000178a: MSTORE
0000178b: PUSH1 0x1b
0000178d: PUSH1 0x24
0000178f: DUP3
00001790: ADD
00001791: MSTORE
00001792: PUSH1 0x00
00001794: DUP1
00001795: MLOAD
00001796: PUSH1 0x20
00001798: PUSH2 0x2d13
0000179b: DUP4
0000179c: CODECOPY
0000179d: DUP2
0000179e: MLOAD
0000179f: SWAP2
000017a0: MSTORE
000017a1: PUSH1 0x44
000017a3: DUP3
000017a4: ADD
000017a5: MSTORE
000017a6: SWAP1
000017a7: MLOAD
000017a8: SWAP1
000017a9: DUP2
000017aa: SWAP1
000017ab: SUB
000017ac: PUSH1 0x64
000017ae: ADD
000017af: SWAP1
000017b0: REVERT
000017b1: JUMPDEST
000017b2: DUP2
000017b3: PUSH2 0x17bb
000017b6: JUMPI
000017b7: PUSH1 0x00
000017b9: DUP1
000017ba: REVERT
000017bb: JUMPDEST
000017bc: DUP1
000017bd: PUSH32 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b
000017de: DUP5
000017df: DUP5
000017e0: PUSH1 0x40
000017e2: MLOAD
000017e3: DUP1
000017e4: DUP1
000017e5: PUSH1 0x20
000017e7: ADD
000017e8: DUP3
000017e9: DUP2
000017ea: SUB
000017eb: DUP3
000017ec: MSTORE
000017ed: DUP5
000017ee: DUP5
000017ef: DUP3
000017f0: DUP2
000017f1: DUP2
000017f2: MSTORE
000017f3: PUSH1 0x20
000017f5: ADD
000017f6: SWAP3
000017f7: POP
000017f8: DUP1
000017f9: DUP3
000017fa: DUP5
000017fb: CALLDATACOPY
000017fc: PUSH1 0x00
000017fe: DUP4
000017ff: DUP3
00001800: ADD
00001801: MSTORE
00001802: PUSH1 0x40
00001804: MLOAD
00001805: PUSH1 0x1f
00001807: SWAP1
00001808: SWAP2
00001809: ADD
0000180a: PUSH1 0x1f
0000180c: NOT
0000180d: AND
0000180e: SWAP1
0000180f: SWAP3
00001810: ADD
00001811: DUP3
00001812: SWAP1
00001813: SUB
00001814: SWAP6
00001815: POP
00001816: SWAP1
00001817: SWAP4
00001818: POP
00001819: POP
0000181a: POP
0000181b: POP
0000181c: LOG2
0000181d: POP
0000181e: POP
0000181f: POP
00001820: JUMP
00001821: JUMPDEST
00001822: PUSH1 0x01
00001824: PUSH1 0x01
00001826: PUSH1 0xa0
00001828: SHL
00001829: SUB
0000182a: DUP6
0000182b: AND
0000182c: CALLER
0000182d: EQ
0000182e: DUP1
0000182f: PUSH2 0x1860
00001832: JUMPI
00001833: POP
00001834: PUSH1 0x01
00001836: PUSH1 0x01
00001838: PUSH1 0xa0
0000183a: SHL
0000183b: SUB
0000183c: DUP6
0000183d: AND
0000183e: PUSH1 0x00
00001840: SWAP1
00001841: DUP2
00001842: MSTORE
00001843: PUSH1 0x03
00001845: PUSH1 0x20
00001847: SWAP1
00001848: DUP2
00001849: MSTORE
0000184a: PUSH1 0x40
0000184c: DUP1
0000184d: DUP4
0000184e: KECCAK256
0000184f: CALLER
00001850: DUP5
00001851: MSTORE
00001852: SWAP1
00001853: SWAP2
00001854: MSTORE
00001855: SWAP1
00001856: KECCAK256
00001857: SLOAD
00001858: PUSH1 0xff
0000185a: AND
0000185b: ISZERO
0000185c: ISZERO
0000185d: PUSH1 0x01
0000185f: EQ
00001860: JUMPDEST
00001861: PUSH2 0x189b
00001864: JUMPI
00001865: PUSH1 0x40
00001867: MLOAD
00001868: PUSH3 0x461bcd
0000186c: PUSH1 0xe5
0000186e: SHL
0000186f: DUP2
00001870: MSTORE
00001871: PUSH1 0x04
00001873: ADD
00001874: DUP1
00001875: DUP1
00001876: PUSH1 0x20
00001878: ADD
00001879: DUP3
0000187a: DUP2
0000187b: SUB
0000187c: DUP3
0000187d: MSTORE
0000187e: PUSH1 0x2a
00001880: DUP2
00001881: MSTORE
00001882: PUSH1 0x20
00001884: ADD
00001885: DUP1
00001886: PUSH2 0x2ce9
00001889: PUSH1 0x2a
0000188b: SWAP2
0000188c: CODECOPY
0000188d: PUSH1 0x40
0000188f: ADD
00001890: SWAP2
00001891: POP
00001892: POP
00001893: PUSH1 0x40
00001895: MLOAD
00001896: DUP1
00001897: SWAP2
00001898: SUB
00001899: SWAP1
0000189a: REVERT
0000189b: JUMPDEST
0000189c: DUP3
0000189d: ISZERO
0000189e: DUP1
0000189f: ISZERO
000018a0: SWAP1
000018a1: PUSH2 0x18a9
000018a4: JUMPI
000018a5: POP
000018a6: DUP3
000018a7: DUP2
000018a8: EQ
000018a9: JUMPDEST
000018aa: PUSH2 0x18b2
000018ad: JUMPI
000018ae: PUSH1 0x00
000018b0: DUP1
000018b1: REVERT
000018b2: JUMPDEST
000018b3: PUSH1 0x00
000018b5: JUMPDEST
000018b6: DUP4
000018b7: DUP2
000018b8: LT
000018b9: ISZERO
000018ba: PUSH2 0x1b41
000018bd: JUMPI
000018be: PUSH2 0x18d8
000018c1: DUP6
000018c2: DUP6
000018c3: DUP4
000018c4: DUP2
000018c5: DUP2
000018c6: LT
000018c7: PUSH2 0x18cc
000018ca: JUMPI
000018cb: INVALID
000018cc: JUMPDEST
000018cd: SWAP1
000018ce: POP
000018cf: PUSH1 0x20
000018d1: MUL
000018d2: ADD
000018d3: CALLDATALOAD
000018d4: PUSH2 0x2485
000018d7: JUMP
000018d8: JUMPDEST
000018d9: ISZERO
000018da: PUSH2 0x1a02
000018dd: JUMPI
000018de: DUP3
000018df: DUP3
000018e0: DUP3
000018e1: DUP2
000018e2: DUP2
000018e3: LT
000018e4: PUSH2 0x18e9
000018e7: JUMPI
000018e8: INVALID
000018e9: JUMPDEST
000018ea: SWAP1
000018eb: POP
000018ec: PUSH1 0x20
000018ee: MUL
000018ef: ADD
000018f0: CALLDATALOAD
000018f1: PUSH1 0x02
000018f3: PUSH1 0x00
000018f5: DUP8
000018f6: DUP8
000018f7: DUP6
000018f8: DUP2
000018f9: DUP2
000018fa: LT
000018fb: PUSH2 0x1900
000018fe: JUMPI
000018ff: INVALID
00001900: JUMPDEST
00001901: SWAP1
00001902: POP
00001903: PUSH1 0x20
00001905: MUL
00001906: ADD
00001907: CALLDATALOAD
00001908: DUP2
00001909: MSTORE
0000190a: PUSH1 0x20
0000190c: ADD
0000190d: SWAP1
0000190e: DUP2
0000190f: MSTORE
00001910: PUSH1 0x20
00001912: ADD
00001913: PUSH1 0x00
00001915: KECCAK256
00001916: PUSH1 0x00
00001918: DUP9
00001919: PUSH1 0x01
0000191b: PUSH1 0x01
0000191d: PUSH1 0xa0
0000191f: SHL
00001920: SUB
00001921: AND
00001922: PUSH1 0x01
00001924: PUSH1 0x01
00001926: PUSH1 0xa0
00001928: SHL
00001929: SUB
0000192a: AND
0000192b: DUP2
0000192c: MSTORE
0000192d: PUSH1 0x20
0000192f: ADD
00001930: SWAP1
00001931: DUP2
00001932: MSTORE
00001933: PUSH1 0x20
00001935: ADD
00001936: PUSH1 0x00
00001938: KECCAK256
00001939: SLOAD
0000193a: LT
0000193b: ISZERO
0000193c: PUSH2 0x1944
0000193f: JUMPI
00001940: PUSH1 0x00
00001942: DUP1
00001943: REVERT
00001944: JUMPDEST
00001945: PUSH2 0x19b1
00001948: DUP4
00001949: DUP4
0000194a: DUP4
0000194b: DUP2
0000194c: DUP2
0000194d: LT
0000194e: PUSH2 0x1953
00001951: JUMPI
00001952: INVALID
00001953: JUMPDEST
00001954: SWAP1
00001955: POP
00001956: PUSH1 0x20
00001958: MUL
00001959: ADD
0000195a: CALLDATALOAD
0000195b: PUSH1 0x02
0000195d: PUSH1 0x00
0000195f: DUP9
00001960: DUP9
00001961: DUP7
00001962: DUP2
00001963: DUP2
00001964: LT
00001965: PUSH2 0x196a
00001968: JUMPI
00001969: INVALID
0000196a: JUMPDEST
0000196b: SWAP1
0000196c: POP
0000196d: PUSH1 0x20
0000196f: MUL
00001970: ADD
00001971: CALLDATALOAD
00001972: DUP2
00001973: MSTORE
00001974: PUSH1 0x20
00001976: ADD
00001977: SWAP1
00001978: DUP2
00001979: MSTORE
0000197a: PUSH1 0x20
0000197c: ADD
0000197d: PUSH1 0x00
0000197f: KECCAK256
00001980: PUSH1 0x00
00001982: DUP10
00001983: PUSH1 0x01
00001985: PUSH1 0x01
00001987: PUSH1 0xa0
00001989: SHL
0000198a: SUB
0000198b: AND
0000198c: PUSH1 0x01
0000198e: PUSH1 0x01
00001990: PUSH1 0xa0
00001992: SHL
00001993: SUB
00001994: AND
00001995: DUP2
00001996: MSTORE
00001997: PUSH1 0x20
00001999: ADD
0000199a: SWAP1
0000199b: DUP2
0000199c: MSTORE
0000199d: PUSH1 0x20
0000199f: ADD
000019a0: PUSH1 0x00
000019a2: KECCAK256
000019a3: SLOAD
000019a4: PUSH2 0x2a5d
000019a7: SWAP1
000019a8: SWAP2
000019a9: SWAP1
000019aa: PUSH4 0xffffffff
000019af: AND
000019b0: JUMP
000019b1: JUMPDEST
000019b2: PUSH1 0x02
000019b4: PUSH1 0x00
000019b6: DUP8
000019b7: DUP8
000019b8: DUP6
000019b9: DUP2
000019ba: DUP2
000019bb: LT
000019bc: PUSH2 0x19c1
000019bf: JUMPI
000019c0: INVALID
000019c1: JUMPDEST
000019c2: SWAP1
000019c3: POP
000019c4: PUSH1 0x20
000019c6: MUL
000019c7: ADD
000019c8: CALLDATALOAD
000019c9: DUP2
000019ca: MSTORE
000019cb: PUSH1 0x20
000019cd: ADD
000019ce: SWAP1
000019cf: DUP2
000019d0: MSTORE
000019d1: PUSH1 0x20
000019d3: ADD
000019d4: PUSH1 0x00
000019d6: KECCAK256
000019d7: PUSH1 0x00
000019d9: DUP9
000019da: PUSH1 0x01
000019dc: PUSH1 0x01
000019de: PUSH1 0xa0
000019e0: SHL
000019e1: SUB
000019e2: AND
000019e3: PUSH1 0x01
000019e5: PUSH1 0x01
000019e7: PUSH1 0xa0
000019e9: SHL
000019ea: SUB
000019eb: AND
000019ec: DUP2
000019ed: MSTORE
000019ee: PUSH1 0x20
000019f0: ADD
000019f1: SWAP1
000019f2: DUP2
000019f3: MSTORE
000019f4: PUSH1 0x20
000019f6: ADD
000019f7: PUSH1 0x00
000019f9: KECCAK256
000019fa: DUP2
000019fb: SWAP1
000019fc: SSTORE
000019fd: POP
000019fe: PUSH2 0x1adf
00001a01: JUMP
00001a02: JUMPDEST
00001a03: PUSH2 0x1a11
00001a06: DUP6
00001a07: DUP6
00001a08: DUP4
00001a09: DUP2
00001a0a: DUP2
00001a0b: LT
00001a0c: PUSH2 0x1244
00001a0f: JUMPI
00001a10: INVALID
00001a11: JUMPDEST
00001a12: PUSH2 0x1a1a
00001a15: JUMPI
00001a16: PUSH1 0x00
00001a18: DUP1
00001a19: REVERT
00001a1a: JUMPDEST
00001a1b: DUP3
00001a1c: DUP3
00001a1d: DUP3
00001a1e: DUP2
00001a1f: DUP2
00001a20: LT
00001a21: PUSH2 0x1a26
00001a24: JUMPI
00001a25: INVALID
00001a26: JUMPDEST
00001a27: SWAP1
00001a28: POP
00001a29: PUSH1 0x20
00001a2b: MUL
00001a2c: ADD
00001a2d: CALLDATALOAD
00001a2e: PUSH1 0x01
00001a30: EQ
00001a31: PUSH2 0x1a39
00001a34: JUMPI
00001a35: PUSH1 0x00
00001a37: DUP1
00001a38: REVERT
00001a39: JUMPDEST
00001a3a: PUSH1 0x00
00001a3c: PUSH2 0x1a4a
00001a3f: DUP7
00001a40: DUP7
00001a41: DUP5
00001a42: DUP2
00001a43: DUP2
00001a44: LT
00001a45: PUSH2 0x130f
00001a48: JUMPI
00001a49: INVALID
00001a4a: JUMPDEST
00001a4b: PUSH1 0x00
00001a4d: DUP2
00001a4e: DUP2
00001a4f: MSTORE
00001a50: PUSH1 0x02
00001a52: PUSH1 0x20
00001a54: SWAP1
00001a55: DUP2
00001a56: MSTORE
00001a57: PUSH1 0x40
00001a59: DUP1
00001a5a: DUP4
00001a5b: KECCAK256
00001a5c: PUSH1 0x01
00001a5e: PUSH1 0x01
00001a60: PUSH1 0xa0
00001a62: SHL
00001a63: SUB
00001a64: DUP13
00001a65: AND
00001a66: DUP5
00001a67: MSTORE
00001a68: SWAP1
00001a69: SWAP2
00001a6a: MSTORE
00001a6b: SWAP1
00001a6c: KECCAK256
00001a6d: SLOAD
00001a6e: SWAP1
00001a6f: SWAP2
00001a70: POP
00001a71: PUSH2 0x1a81
00001a74: SWAP1
00001a75: PUSH1 0x01
00001a77: PUSH4 0xffffffff
00001a7c: PUSH2 0x2a5d
00001a7f: AND
00001a80: JUMP
00001a81: JUMPDEST
00001a82: PUSH1 0x00
00001a84: DUP3
00001a85: DUP2
00001a86: MSTORE
00001a87: PUSH1 0x02
00001a89: PUSH1 0x20
00001a8b: SWAP1
00001a8c: DUP2
00001a8d: MSTORE
00001a8e: PUSH1 0x40
00001a90: DUP1
00001a91: DUP4
00001a92: KECCAK256
00001a93: PUSH1 0x01
00001a95: PUSH1 0x01
00001a97: PUSH1 0xa0
00001a99: SHL
00001a9a: SUB
00001a9b: DUP13
00001a9c: AND
00001a9d: DUP5
00001a9e: MSTORE
00001a9f: SWAP1
00001aa0: SWAP2
00001aa1: MSTORE
00001aa2: DUP2
00001aa3: KECCAK256
00001aa4: SWAP2
00001aa5: SWAP1
00001aa6: SWAP2
00001aa7: SSTORE
00001aa8: PUSH1 0x04
00001aaa: SWAP1
00001aab: DUP8
00001aac: DUP8
00001aad: DUP6
00001aae: DUP2
00001aaf: DUP2
00001ab0: LT
00001ab1: PUSH2 0x1ab6
00001ab4: JUMPI
00001ab5: INVALID
00001ab6: JUMPDEST
00001ab7: PUSH1 0x20
00001ab9: SWAP1
00001aba: DUP2
00001abb: MUL
00001abc: SWAP3
00001abd: SWAP1
00001abe: SWAP3
00001abf: ADD
00001ac0: CALLDATALOAD
00001ac1: DUP4
00001ac2: MSTORE
00001ac3: POP
00001ac4: DUP2
00001ac5: ADD
00001ac6: SWAP2
00001ac7: SWAP1
00001ac8: SWAP2
00001ac9: MSTORE
00001aca: PUSH1 0x40
00001acc: ADD
00001acd: PUSH1 0x00
00001acf: KECCAK256
00001ad0: DUP1
00001ad1: SLOAD
00001ad2: PUSH1 0x01
00001ad4: PUSH1 0x01
00001ad6: PUSH1 0xa0
00001ad8: SHL
00001ad9: SUB
00001ada: NOT
00001adb: AND
00001adc: SWAP1
00001add: SSTORE
00001ade: POP
00001adf: JUMPDEST
00001ae0: PUSH1 0x00
00001ae2: PUSH1 0x01
00001ae4: PUSH1 0x01
00001ae6: PUSH1 0xa0
00001ae8: SHL
00001ae9: SUB
00001aea: DUP8
00001aeb: AND
00001aec: CALLER
00001aed: PUSH1 0x00
00001aef: DUP1
00001af0: MLOAD
00001af1: PUSH1 0x20
00001af3: PUSH2 0x2c5c
00001af6: DUP4
00001af7: CODECOPY
00001af8: DUP2
00001af9: MLOAD
00001afa: SWAP2
00001afb: MSTORE
00001afc: DUP9
00001afd: DUP9
00001afe: DUP7
00001aff: DUP2
00001b00: DUP2
00001b01: LT
00001b02: PUSH2 0x1b07
00001b05: JUMPI
00001b06: INVALID
00001b07: JUMPDEST
00001b08: SWAP1
00001b09: POP
00001b0a: PUSH1 0x20
00001b0c: MUL
00001b0d: ADD
00001b0e: CALLDATALOAD
00001b0f: DUP8
00001b10: DUP8
00001b11: DUP8
00001b12: DUP2
00001b13: DUP2
00001b14: LT
00001b15: PUSH2 0x1b1a
00001b18: JUMPI
00001b19: INVALID
00001b1a: JUMPDEST
00001b1b: PUSH1 0x40
00001b1d: DUP1
00001b1e: MLOAD
00001b1f: SWAP5
00001b20: DUP6
00001b21: MSTORE
00001b22: PUSH1 0x20
00001b24: SWAP2
00001b25: DUP3
00001b26: MUL
00001b27: SWAP4
00001b28: SWAP1
00001b29: SWAP4
00001b2a: ADD
00001b2b: CALLDATALOAD
00001b2c: SWAP1
00001b2d: DUP5
00001b2e: ADD
00001b2f: MSTORE
00001b30: POP
00001b31: DUP1
00001b32: MLOAD
00001b33: SWAP2
00001b34: DUP3
00001b35: SWAP1
00001b36: SUB
00001b37: ADD
00001b38: SWAP1
00001b39: LOG4
00001b3a: PUSH1 0x01
00001b3c: ADD
00001b3d: PUSH2 0x18b5
00001b40: JUMP
00001b41: JUMPDEST
00001b42: POP
00001b43: POP
00001b44: POP
00001b45: POP
00001b46: POP
00001b47: POP
00001b48: JUMP
00001b49: JUMPDEST
00001b4a: PUSH1 0x60
00001b4c: DUP4
00001b4d: DUP3
00001b4e: EQ
00001b4f: PUSH2 0x1b57
00001b52: JUMPI
00001b53: PUSH1 0x00
00001b55: DUP1
00001b56: REVERT
00001b57: JUMPDEST
00001b58: PUSH1 0x40
00001b5a: DUP1
00001b5b: MLOAD
00001b5c: DUP6
00001b5d: DUP2
00001b5e: MSTORE
00001b5f: PUSH1 0x20
00001b61: DUP1
00001b62: DUP8
00001b63: MUL
00001b64: DUP3
00001b65: ADD
00001b66: ADD
00001b67: SWAP1
00001b68: SWAP2
00001b69: MSTORE
00001b6a: PUSH1 0x60
00001b6c: SWAP1
00001b6d: DUP6
00001b6e: DUP1
00001b6f: ISZERO
00001b70: PUSH2 0x1b83
00001b73: JUMPI
00001b74: DUP2
00001b75: PUSH1 0x20
00001b77: ADD
00001b78: PUSH1 0x20
00001b7a: DUP3
00001b7b: MUL
00001b7c: DUP1
00001b7d: CODESIZE
00001b7e: DUP4
00001b7f: CODECOPY
00001b80: ADD
00001b81: SWAP1
00001b82: POP
00001b83: JUMPDEST
00001b84: POP
00001b85: SWAP1
00001b86: POP
00001b87: PUSH1 0x00
00001b89: JUMPDEST
00001b8a: DUP6
00001b8b: DUP2
00001b8c: LT
00001b8d: ISZERO
00001b8e: PUSH2 0x1c8a
00001b91: JUMPI
00001b92: PUSH1 0x00
00001b94: DUP6
00001b95: DUP6
00001b96: DUP4
00001b97: DUP2
00001b98: DUP2
00001b99: LT
00001b9a: PUSH2 0x1b9f
00001b9d: JUMPI
00001b9e: INVALID
00001b9f: JUMPDEST
00001ba0: SWAP1
00001ba1: POP
00001ba2: PUSH1 0x20
00001ba4: MUL
00001ba5: ADD
00001ba6: CALLDATALOAD
00001ba7: SWAP1
00001ba8: POP
00001ba9: PUSH2 0x1bb1
00001bac: DUP2
00001bad: PUSH2 0x2187
00001bb0: JUMP
00001bb1: JUMPDEST
00001bb2: ISZERO
00001bb3: PUSH2 0x1c1c
00001bb6: JUMPI
00001bb7: DUP8
00001bb8: DUP8
00001bb9: DUP4
00001bba: DUP2
00001bbb: DUP2
00001bbc: LT
00001bbd: PUSH2 0x1bc2
00001bc0: JUMPI
00001bc1: INVALID
00001bc2: JUMPDEST
00001bc3: PUSH1 0x00
00001bc5: DUP5
00001bc6: DUP2
00001bc7: MSTORE
00001bc8: PUSH1 0x04
00001bca: PUSH1 0x20
00001bcc: SWAP1
00001bcd: DUP2
00001bce: MSTORE
00001bcf: PUSH1 0x40
00001bd1: SWAP1
00001bd2: SWAP2
00001bd3: KECCAK256
00001bd4: SLOAD
00001bd5: SWAP2
00001bd6: MUL
00001bd7: SWAP3
00001bd8: SWAP1
00001bd9: SWAP3
00001bda: ADD
00001bdb: CALLDATALOAD
00001bdc: PUSH1 0x01
00001bde: PUSH1 0x01
00001be0: PUSH1 0xa0
00001be2: SHL
00001be3: SUB
00001be4: SWAP1
00001be5: DUP2
00001be6: AND
00001be7: SWAP3
00001be8: AND
00001be9: SWAP2
00001bea: SWAP1
00001beb: SWAP2
00001bec: EQ
00001bed: SWAP1
00001bee: POP
00001bef: PUSH2 0x1bf9
00001bf2: JUMPI
00001bf3: PUSH1 0x00
00001bf5: PUSH2 0x1bfc
00001bf8: JUMP
00001bf9: JUMPDEST
00001bfa: PUSH1 0x01
00001bfc: JUMPDEST
00001bfd: PUSH1 0xff
00001bff: AND
00001c00: DUP4
00001c01: DUP4
00001c02: DUP2
00001c03: MLOAD
00001c04: DUP2
00001c05: LT
00001c06: PUSH2 0x1c0b
00001c09: JUMPI
00001c0a: INVALID
00001c0b: JUMPDEST
00001c0c: PUSH1 0x20
00001c0e: MUL
00001c0f: PUSH1 0x20
00001c11: ADD
00001c12: ADD
00001c13: DUP2
00001c14: DUP2
00001c15: MSTORE
00001c16: POP
00001c17: POP
00001c18: PUSH2 0x1c81
00001c1b: JUMP
00001c1c: JUMPDEST
00001c1d: PUSH1 0x00
00001c1f: DUP2
00001c20: DUP2
00001c21: MSTORE
00001c22: PUSH1 0x02
00001c24: PUSH1 0x20
00001c26: MSTORE
00001c27: PUSH1 0x40
00001c29: DUP2
00001c2a: KECCAK256
00001c2b: SWAP1
00001c2c: DUP10
00001c2d: DUP10
00001c2e: DUP6
00001c2f: DUP2
00001c30: DUP2
00001c31: LT
00001c32: PUSH2 0x1c37
00001c35: JUMPI
00001c36: INVALID
00001c37: JUMPDEST
00001c38: SWAP1
00001c39: POP
00001c3a: PUSH1 0x20
00001c3c: MUL
00001c3d: ADD
00001c3e: CALLDATALOAD
00001c3f: PUSH1 0x01
00001c41: PUSH1 0x01
00001c43: PUSH1 0xa0
00001c45: SHL
00001c46: SUB
00001c47: AND
00001c48: PUSH1 0x01
00001c4a: PUSH1 0x01
00001c4c: PUSH1 0xa0
00001c4e: SHL
00001c4f: SUB
00001c50: AND
00001c51: PUSH1 0x01
00001c53: PUSH1 0x01
00001c55: PUSH1 0xa0
00001c57: SHL
00001c58: SUB
00001c59: AND
00001c5a: DUP2
00001c5b: MSTORE
00001c5c: PUSH1 0x20
00001c5e: ADD
00001c5f: SWAP1
00001c60: DUP2
00001c61: MSTORE
00001c62: PUSH1 0x20
00001c64: ADD
00001c65: PUSH1 0x00
00001c67: KECCAK256
00001c68: SLOAD
00001c69: DUP4
00001c6a: DUP4
00001c6b: DUP2
00001c6c: MLOAD
00001c6d: DUP2
00001c6e: LT
00001c6f: PUSH2 0x1c74
00001c72: JUMPI
00001c73: INVALID
00001c74: JUMPDEST
00001c75: PUSH1 0x20
00001c77: MUL
00001c78: PUSH1 0x20
00001c7a: ADD
00001c7b: ADD
00001c7c: DUP2
00001c7d: DUP2
00001c7e: MSTORE
00001c7f: POP
00001c80: POP
00001c81: JUMPDEST
00001c82: POP
00001c83: PUSH1 0x01
00001c85: ADD
00001c86: PUSH2 0x1b89
00001c89: JUMP
00001c8a: JUMPDEST
00001c8b: POP
00001c8c: SWAP6
00001c8d: SWAP5
00001c8e: POP
00001c8f: POP
00001c90: POP
00001c91: POP
00001c92: POP
00001c93: JUMP
00001c94: JUMPDEST
00001c95: CALLER
00001c96: PUSH1 0x00
00001c98: SWAP1
00001c99: DUP2
00001c9a: MSTORE
00001c9b: PUSH1 0x09
00001c9d: PUSH1 0x20
00001c9f: MSTORE
00001ca0: PUSH1 0x40
00001ca2: SWAP1
00001ca3: KECCAK256
00001ca4: SLOAD
00001ca5: PUSH1 0xff
00001ca7: AND
00001ca8: PUSH2 0x1ce6
00001cab: JUMPI
00001cac: PUSH1 0x40
00001cae: DUP1
00001caf: MLOAD
00001cb0: PUSH3 0x461bcd
00001cb4: PUSH1 0xe5
00001cb6: SHL
00001cb7: DUP2
00001cb8: MSTORE
00001cb9: PUSH1 0x20
00001cbb: PUSH1 0x04
00001cbd: DUP3
00001cbe: ADD
00001cbf: MSTORE
00001cc0: PUSH1 0x1b
00001cc2: PUSH1 0x24
00001cc4: DUP3
00001cc5: ADD
00001cc6: MSTORE
00001cc7: PUSH1 0x00
00001cc9: DUP1
00001cca: MLOAD
00001ccb: PUSH1 0x20
00001ccd: PUSH2 0x2d13
00001cd0: DUP4
00001cd1: CODECOPY
00001cd2: DUP2
00001cd3: MLOAD
00001cd4: SWAP2
00001cd5: MSTORE
00001cd6: PUSH1 0x44
00001cd8: DUP3
00001cd9: ADD
00001cda: MSTORE
00001cdb: SWAP1
00001cdc: MLOAD
00001cdd: SWAP1
00001cde: DUP2
00001cdf: SWAP1
00001ce0: SUB
00001ce1: PUSH1 0x64
00001ce3: ADD
00001ce4: SWAP1
00001ce5: REVERT
00001ce6: JUMPDEST
00001ce7: PUSH2 0x1cef
00001cea: DUP6
00001ceb: PUSH2 0x259d
00001cee: JUMP
00001cef: JUMPDEST
00001cf0: PUSH2 0x1cf8
00001cf3: JUMPI
00001cf4: PUSH1 0x00
00001cf6: DUP1
00001cf7: REVERT
00001cf8: JUMPDEST
00001cf9: PUSH1 0x00
00001cfb: DUP6
00001cfc: DUP2
00001cfd: MSTORE
00001cfe: PUSH1 0x05
00001d00: PUSH1 0x20
00001d02: MSTORE
00001d03: PUSH1 0x40
00001d05: SWAP1
00001d06: KECCAK256
00001d07: SLOAD
00001d08: PUSH1 0x01
00001d0a: DUP2
00001d0b: ADD
00001d0c: SWAP1
00001d0d: PUSH2 0x1d1d
00001d10: SWAP1
00001d11: DUP6
00001d12: SWAP1
00001d13: PUSH4 0xffffffff
00001d18: PUSH2 0x28da
00001d1b: AND
00001d1c: JUMP
00001d1d: JUMPDEST
00001d1e: PUSH1 0x00
00001d20: DUP8
00001d21: DUP2
00001d22: MSTORE
00001d23: PUSH1 0x05
00001d25: PUSH1 0x20
00001d27: MSTORE
00001d28: PUSH1 0x40
00001d2a: DUP2
00001d2b: KECCAK256
00001d2c: SWAP2
00001d2d: SWAP1
00001d2e: SWAP2
00001d2f: SSTORE
00001d30: JUMPDEST
00001d31: DUP5
00001d32: DUP2
00001d33: LT
00001d34: ISZERO
00001d35: PUSH2 0x1f32
00001d38: JUMPI
00001d39: PUSH1 0x00
00001d3b: DUP7
00001d3c: DUP7
00001d3d: DUP4
00001d3e: DUP2
00001d3f: DUP2
00001d40: LT
00001d41: PUSH2 0x1d46
00001d44: JUMPI
00001d45: INVALID
00001d46: JUMPDEST
00001d47: SWAP1
00001d48: POP
00001d49: PUSH1 0x20
00001d4b: MUL
00001d4c: ADD
00001d4d: CALLDATALOAD
00001d4e: PUSH1 0x01
00001d50: PUSH1 0x01
00001d52: PUSH1 0xa0
00001d54: SHL
00001d55: SUB
00001d56: AND
00001d57: SWAP1
00001d58: POP
00001d59: PUSH1 0x00
00001d5b: DUP3
00001d5c: DUP5
00001d5d: ADD
00001d5e: DUP10
00001d5f: OR
00001d60: SWAP1
00001d61: POP
00001d62: PUSH1 0x08
00001d64: PUSH1 0x00
00001d66: DUP11
00001d67: DUP2
00001d68: MSTORE
00001d69: PUSH1 0x20
00001d6b: ADD
00001d6c: SWAP1
00001d6d: DUP2
00001d6e: MSTORE
00001d6f: PUSH1 0x20
00001d71: ADD
00001d72: PUSH1 0x00
00001d74: KECCAK256
00001d75: SLOAD
00001d76: PUSH1 0x00
00001d78: EQ
00001d79: DUP1
00001d7a: PUSH2 0x1dad
00001d7d: JUMPI
00001d7e: POP
00001d7f: PUSH1 0x00
00001d81: DUP10
00001d82: DUP2
00001d83: MSTORE
00001d84: PUSH1 0x08
00001d86: PUSH1 0x20
00001d88: SWAP1
00001d89: DUP2
00001d8a: MSTORE
00001d8b: PUSH1 0x40
00001d8d: DUP1
00001d8e: DUP4
00001d8f: KECCAK256
00001d90: SLOAD
00001d91: PUSH1 0x07
00001d93: SWAP1
00001d94: SWAP3
00001d95: MSTORE
00001d96: SWAP1
00001d97: SWAP2
00001d98: KECCAK256
00001d99: SLOAD
00001d9a: PUSH2 0x1daa
00001d9d: SWAP1
00001d9e: PUSH1 0x01
00001da0: PUSH4 0xffffffff
00001da5: PUSH2 0x28da
00001da8: AND
00001da9: JUMP
00001daa: JUMPDEST
00001dab: GT
00001dac: ISZERO
00001dad: JUMPDEST
00001dae: PUSH2 0x1dfe
00001db1: JUMPI
00001db2: PUSH1 0x40
00001db4: DUP1
00001db5: MLOAD
00001db6: PUSH3 0x461bcd
00001dba: PUSH1 0xe5
00001dbc: SHL
00001dbd: DUP2
00001dbe: MSTORE
00001dbf: PUSH1 0x20
00001dc1: PUSH1 0x04
00001dc3: DUP3
00001dc4: ADD
00001dc5: MSTORE
00001dc6: PUSH1 0x1b
00001dc8: PUSH1 0x24
00001dca: DUP3
00001dcb: ADD
00001dcc: MSTORE
00001dcd: PUSH32 0x546f6b656e20737570706c79206c696d69742065786365656465640000000000
00001dee: PUSH1 0x44
00001df0: DUP3
00001df1: ADD
00001df2: MSTORE
00001df3: SWAP1
00001df4: MLOAD
00001df5: SWAP1
00001df6: DUP2
00001df7: SWAP1
00001df8: SUB
00001df9: PUSH1 0x64
00001dfb: ADD
00001dfc: SWAP1
00001dfd: REVERT
00001dfe: JUMPDEST
00001dff: PUSH1 0x00
00001e01: DUP2
00001e02: DUP2
00001e03: MSTORE
00001e04: PUSH1 0x04
00001e06: PUSH1 0x20
00001e08: SWAP1
00001e09: DUP2
00001e0a: MSTORE
00001e0b: PUSH1 0x40
00001e0d: DUP1
00001e0e: DUP4
00001e0f: KECCAK256
00001e10: DUP1
00001e11: SLOAD
00001e12: PUSH1 0x01
00001e14: PUSH1 0x01
00001e16: PUSH1 0xa0
00001e18: SHL
00001e19: SUB
00001e1a: NOT
00001e1b: AND
00001e1c: PUSH1 0x01
00001e1e: PUSH1 0x01
00001e20: PUSH1 0xa0
00001e22: SHL
00001e23: SUB
00001e24: DUP8
00001e25: AND
00001e26: OR
00001e27: SWAP1
00001e28: SSTORE
00001e29: DUP12
00001e2a: DUP4
00001e2b: MSTORE
00001e2c: PUSH1 0x07
00001e2e: SWAP1
00001e2f: SWAP2
00001e30: MSTORE
00001e31: SWAP1
00001e32: KECCAK256
00001e33: SLOAD
00001e34: PUSH2 0x1e3e
00001e37: SWAP1
00001e38: PUSH1 0x01
00001e3a: PUSH2 0x28da
00001e3d: JUMP
00001e3e: JUMPDEST
00001e3f: PUSH1 0x00
00001e41: DUP11
00001e42: DUP2
00001e43: MSTORE
00001e44: PUSH1 0x07
00001e46: PUSH1 0x20
00001e48: SWAP1
00001e49: DUP2
00001e4a: MSTORE
00001e4b: PUSH1 0x40
00001e4d: DUP1
00001e4e: DUP4
00001e4f: KECCAK256
00001e50: SWAP4
00001e51: SWAP1
00001e52: SWAP4
00001e53: SSTORE
00001e54: PUSH1 0x02
00001e56: DUP2
00001e57: MSTORE
00001e58: DUP3
00001e59: DUP3
00001e5a: KECCAK256
00001e5b: PUSH1 0x01
00001e5d: PUSH1 0x01
00001e5f: PUSH1 0xa0
00001e61: SHL
00001e62: SUB
00001e63: DUP7
00001e64: AND
00001e65: DUP4
00001e66: MSTORE
00001e67: SWAP1
00001e68: MSTORE
00001e69: KECCAK256
00001e6a: SLOAD
00001e6b: PUSH2 0x1e7b
00001e6e: SWAP1
00001e6f: PUSH1 0x01
00001e71: PUSH4 0xffffffff
00001e76: PUSH2 0x28da
00001e79: AND
00001e7a: JUMP
00001e7b: JUMPDEST
00001e7c: PUSH1 0x00
00001e7e: DUP11
00001e7f: DUP2
00001e80: MSTORE
00001e81: PUSH1 0x02
00001e83: PUSH1 0x20
00001e85: SWAP1
00001e86: DUP2
00001e87: MSTORE
00001e88: PUSH1 0x40
00001e8a: DUP1
00001e8b: DUP4
00001e8c: KECCAK256
00001e8d: PUSH1 0x01
00001e8f: PUSH1 0x01
00001e91: PUSH1 0xa0
00001e93: SHL
00001e94: SUB
00001e95: DUP8
00001e96: AND
00001e97: DUP1
00001e98: DUP6
00001e99: MSTORE
00001e9a: SWAP1
00001e9b: DUP4
00001e9c: MSTORE
00001e9d: DUP2
00001e9e: DUP5
00001e9f: KECCAK256
00001ea0: SWAP5
00001ea1: SWAP1
00001ea2: SWAP5
00001ea3: SSTORE
00001ea4: DUP1
00001ea5: MLOAD
00001ea6: DUP6
00001ea7: DUP2
00001ea8: MSTORE
00001ea9: PUSH1 0x01
00001eab: SWAP3
00001eac: DUP2
00001ead: ADD
00001eae: SWAP3
00001eaf: SWAP1
00001eb0: SWAP3
00001eb1: MSTORE
00001eb2: DUP1
00001eb3: MLOAD
00001eb4: CALLER
00001eb5: SWAP3
00001eb6: PUSH1 0x00
00001eb8: DUP1
00001eb9: MLOAD
00001eba: PUSH1 0x20
00001ebc: PUSH2 0x2c5c
00001ebf: DUP4
00001ec0: CODECOPY
00001ec1: DUP2
00001ec2: MLOAD
00001ec3: SWAP2
00001ec4: MSTORE
00001ec5: SWAP3
00001ec6: SWAP1
00001ec7: DUP3
00001ec8: SWAP1
00001ec9: SUB
00001eca: ADD
00001ecb: SWAP1
00001ecc: LOG4
00001ecd: PUSH2 0x1ede
00001ed0: DUP3
00001ed1: PUSH1 0x01
00001ed3: PUSH1 0x01
00001ed5: PUSH1 0xa0
00001ed7: SHL
00001ed8: SUB
00001ed9: AND
00001eda: PUSH2 0x28e7
00001edd: JUMP
00001ede: JUMPDEST
00001edf: ISZERO
00001ee0: PUSH2 0x1f28
00001ee3: JUMPI
00001ee4: PUSH2 0x1f28
00001ee7: CALLER
00001ee8: CALLER
00001ee9: DUP5
00001eea: DUP5
00001eeb: PUSH1 0x01
00001eed: DUP12
00001eee: DUP12
00001eef: DUP1
00001ef0: DUP1
00001ef1: PUSH1 0x1f
00001ef3: ADD
00001ef4: PUSH1 0x20
00001ef6: DUP1
00001ef7: SWAP2
00001ef8: DIV
00001ef9: MUL
00001efa: PUSH1 0x20
00001efc: ADD
00001efd: PUSH1 0x40
00001eff: MLOAD
00001f00: SWAP1
00001f01: DUP2
00001f02: ADD
00001f03: PUSH1 0x40
00001f05: MSTORE
00001f06: DUP1
00001f07: SWAP4
00001f08: SWAP3
00001f09: SWAP2
00001f0a: SWAP1
00001f0b: DUP2
00001f0c: DUP2
00001f0d: MSTORE
00001f0e: PUSH1 0x20
00001f10: ADD
00001f11: DUP4
00001f12: DUP4
00001f13: DUP1
00001f14: DUP3
00001f15: DUP5
00001f16: CALLDATACOPY
00001f17: PUSH1 0x00
00001f19: SWAP3
00001f1a: ADD
00001f1b: SWAP2
00001f1c: SWAP1
00001f1d: SWAP2
00001f1e: MSTORE
00001f1f: POP
00001f20: PUSH2 0x28ed
00001f23: SWAP3
00001f24: POP
00001f25: POP
00001f26: POP
00001f27: JUMP
00001f28: JUMPDEST
00001f29: POP
00001f2a: POP
00001f2b: PUSH1 0x01
00001f2d: ADD
00001f2e: PUSH2 0x1d30
00001f31: JUMP
00001f32: JUMPDEST
00001f33: POP
00001f34: POP
00001f35: POP
00001f36: POP
00001f37: POP
00001f38: POP
00001f39: POP
00001f3a: JUMP
00001f3b: JUMPDEST
00001f3c: PUSH1 0x01
00001f3e: PUSH1 0x01
00001f40: PUSH1 0xa0
00001f42: SHL
00001f43: SUB
00001f44: SWAP3
00001f45: DUP4
00001f46: AND
00001f47: PUSH1 0x00
00001f49: SWAP1
00001f4a: DUP2
00001f4b: MSTORE
00001f4c: PUSH1 0x06
00001f4e: PUSH1 0x20
00001f50: SWAP1
00001f51: DUP2
00001f52: MSTORE
00001f53: PUSH1 0x40
00001f55: DUP1
00001f56: DUP4
00001f57: KECCAK256
00001f58: SWAP5
00001f59: SWAP1
00001f5a: SWAP6
00001f5b: AND
00001f5c: DUP3
00001f5d: MSTORE
00001f5e: SWAP3
00001f5f: DUP4
00001f60: MSTORE
00001f61: DUP4
00001f62: DUP2
00001f63: KECCAK256
00001f64: SWAP2
00001f65: DUP2
00001f66: MSTORE
00001f67: SWAP2
00001f68: MSTORE
00001f69: KECCAK256
00001f6a: SLOAD
00001f6b: SWAP1
00001f6c: JUMP
00001f6d: JUMPDEST
00001f6e: DUP5
00001f6f: DUP4
00001f70: EQ
00001f71: PUSH2 0x1fc1
00001f74: JUMPI
00001f75: PUSH1 0x40
00001f77: DUP1
00001f78: MLOAD
00001f79: PUSH3 0x461bcd
00001f7d: PUSH1 0xe5
00001f7f: SHL
00001f80: DUP2
00001f81: MSTORE
00001f82: PUSH1 0x20
00001f84: PUSH1 0x04
00001f86: DUP3
00001f87: ADD
00001f88: MSTORE
00001f89: PUSH1 0x1a
00001f8b: PUSH1 0x24
00001f8d: DUP3
00001f8e: ADD
00001f8f: MSTORE
00001f90: PUSH32 0x417272617973206d7573742062652073616d65206c656e677468000000000000
00001fb1: PUSH1 0x44
00001fb3: DUP3
00001fb4: ADD
00001fb5: MSTORE
00001fb6: SWAP1
00001fb7: MLOAD
00001fb8: SWAP1
00001fb9: DUP2
00001fba: SWAP1
00001fbb: SUB
00001fbc: PUSH1 0x64
00001fbe: ADD
00001fbf: SWAP1
00001fc0: REVERT
00001fc1: JUMPDEST
00001fc2: DUP3
00001fc3: DUP2
00001fc4: EQ
00001fc5: PUSH2 0x2015
00001fc8: JUMPI
00001fc9: PUSH1 0x40
00001fcb: DUP1
00001fcc: MLOAD
00001fcd: PUSH3 0x461bcd
00001fd1: PUSH1 0xe5
00001fd3: SHL
00001fd4: DUP2
00001fd5: MSTORE
00001fd6: PUSH1 0x20
00001fd8: PUSH1 0x04
00001fda: DUP3
00001fdb: ADD
00001fdc: MSTORE
00001fdd: PUSH1 0x1a
00001fdf: PUSH1 0x24
00001fe1: DUP3
00001fe2: ADD
00001fe3: MSTORE
00001fe4: PUSH32 0x417272617973206d7573742062652073616d65206c656e677468000000000000
00002005: PUSH1 0x44
00002007: DUP3
00002008: ADD
00002009: MSTORE
0000200a: SWAP1
0000200b: MLOAD
0000200c: SWAP1
0000200d: DUP2
0000200e: SWAP1
0000200f: SUB
00002010: PUSH1 0x64
00002012: ADD
00002013: SWAP1
00002014: REVERT
00002015: JUMPDEST
00002016: PUSH1 0x00
00002018: JUMPDEST
00002019: DUP2
0000201a: DUP2
0000201b: LT
0000201c: ISZERO
0000201d: PUSH2 0x10d3
00002020: JUMPI
00002021: PUSH1 0x00
00002023: DUP8
00002024: DUP8
00002025: DUP4
00002026: DUP2
00002027: DUP2
00002028: LT
00002029: PUSH2 0x202e
0000202c: JUMPI
0000202d: INVALID
0000202e: JUMPDEST
0000202f: SWAP1
00002030: POP
00002031: PUSH1 0x20
00002033: MUL
00002034: ADD
00002035: CALLDATALOAD
00002036: SWAP1
00002037: POP
00002038: PUSH1 0x00
0000203a: DUP7
0000203b: DUP7
0000203c: DUP5
0000203d: DUP2
0000203e: DUP2
0000203f: LT
00002040: PUSH2 0x2045
00002043: JUMPI
00002044: INVALID
00002045: JUMPDEST
00002046: SWAP1
00002047: POP
00002048: PUSH1 0x20
0000204a: MUL
0000204b: ADD
0000204c: CALLDATALOAD
0000204d: SWAP1
0000204e: POP
0000204f: PUSH1 0x00
00002051: DUP6
00002052: DUP6
00002053: DUP6
00002054: DUP2
00002055: DUP2
00002056: LT
00002057: PUSH2 0x205c
0000205a: JUMPI
0000205b: INVALID
0000205c: JUMPDEST
0000205d: SWAP1
0000205e: POP
0000205f: PUSH1 0x20
00002061: MUL
00002062: ADD
00002063: CALLDATALOAD
00002064: SWAP1
00002065: POP
00002066: DUP2
00002067: PUSH1 0x06
00002069: PUSH1 0x00
0000206b: CALLER
0000206c: PUSH1 0x01
0000206e: PUSH1 0x01
00002070: PUSH1 0xa0
00002072: SHL
00002073: SUB
00002074: AND
00002075: PUSH1 0x01
00002077: PUSH1 0x01
00002079: PUSH1 0xa0
0000207b: SHL
0000207c: SUB
0000207d: AND
0000207e: DUP2
0000207f: MSTORE
00002080: PUSH1 0x20
00002082: ADD
00002083: SWAP1
00002084: DUP2
00002085: MSTORE
00002086: PUSH1 0x20
00002088: ADD
00002089: PUSH1 0x00
0000208b: KECCAK256
0000208c: PUSH1 0x00
0000208e: DUP14
0000208f: PUSH1 0x01
00002091: PUSH1 0x01
00002093: PUSH1 0xa0
00002095: SHL
00002096: SUB
00002097: AND
00002098: PUSH1 0x01
0000209a: PUSH1 0x01
0000209c: PUSH1 0xa0
0000209e: SHL
0000209f: SUB
000020a0: AND
000020a1: DUP2
000020a2: MSTORE
000020a3: PUSH1 0x20
000020a5: ADD
000020a6: SWAP1
000020a7: DUP2
000020a8: MSTORE
000020a9: PUSH1 0x20
000020ab: ADD
000020ac: PUSH1 0x00
000020ae: KECCAK256
000020af: PUSH1 0x00
000020b1: DUP6
000020b2: DUP2
000020b3: MSTORE
000020b4: PUSH1 0x20
000020b6: ADD
000020b7: SWAP1
000020b8: DUP2
000020b9: MSTORE
000020ba: PUSH1 0x20
000020bc: ADD
000020bd: PUSH1 0x00
000020bf: KECCAK256
000020c0: SLOAD
000020c1: EQ
000020c2: PUSH2 0x20ca
000020c5: JUMPI
000020c6: PUSH1 0x00
000020c8: DUP1
000020c9: REVERT
000020ca: JUMPDEST
000020cb: DUP1
000020cc: PUSH1 0x06
000020ce: PUSH1 0x00
000020d0: CALLER
000020d1: PUSH1 0x01
000020d3: PUSH1 0x01
000020d5: PUSH1 0xa0
000020d7: SHL
000020d8: SUB
000020d9: AND
000020da: PUSH1 0x01
000020dc: PUSH1 0x01
000020de: PUSH1 0xa0
000020e0: SHL
000020e1: SUB
000020e2: AND
000020e3: DUP2
000020e4: MSTORE
000020e5: PUSH1 0x20
000020e7: ADD
000020e8: SWAP1
000020e9: DUP2
000020ea: MSTORE
000020eb: PUSH1 0x20
000020ed: ADD
000020ee: PUSH1 0x00
000020f0: KECCAK256
000020f1: PUSH1 0x00
000020f3: DUP14
000020f4: PUSH1 0x01
000020f6: PUSH1 0x01
000020f8: PUSH1 0xa0
000020fa: SHL
000020fb: SUB
000020fc: AND
000020fd: PUSH1 0x01
000020ff: PUSH1 0x01
00002101: PUSH1 0xa0
00002103: SHL
00002104: SUB
00002105: AND
00002106: DUP2
00002107: MSTORE
00002108: PUSH1 0x20
0000210a: ADD
0000210b: SWAP1
0000210c: DUP2
0000210d: MSTORE
0000210e: PUSH1 0x20
00002110: ADD
00002111: PUSH1 0x00
00002113: KECCAK256
00002114: PUSH1 0x00
00002116: DUP6
00002117: DUP2
00002118: MSTORE
00002119: PUSH1 0x20
0000211b: ADD
0000211c: SWAP1
0000211d: DUP2
0000211e: MSTORE
0000211f: PUSH1 0x20
00002121: ADD
00002122: PUSH1 0x00
00002124: KECCAK256
00002125: DUP2
00002126: SWAP1
00002127: SSTORE
00002128: POP
00002129: DUP3
0000212a: DUP12
0000212b: PUSH1 0x01
0000212d: PUSH1 0x01
0000212f: PUSH1 0xa0
00002131: SHL
00002132: SUB
00002133: AND
00002134: CALLER
00002135: PUSH1 0x01
00002137: PUSH1 0x01
00002139: PUSH1 0xa0
0000213b: SHL
0000213c: SUB
0000213d: AND
0000213e: PUSH32 0x3a9c85c6b31f7a9d7fe1478f53e1be42e85db97ca30d1789cfef9196dbc472c9
0000215f: DUP6
00002160: DUP6
00002161: PUSH1 0x40
00002163: MLOAD
00002164: DUP1
00002165: DUP4
00002166: DUP2
00002167: MSTORE
00002168: PUSH1 0x20
0000216a: ADD
0000216b: DUP3
0000216c: DUP2
0000216d: MSTORE
0000216e: PUSH1 0x20
00002170: ADD
00002171: SWAP3
00002172: POP
00002173: POP
00002174: POP
00002175: PUSH1 0x40
00002177: MLOAD
00002178: DUP1
00002179: SWAP2
0000217a: SUB
0000217b: SWAP1
0000217c: LOG4
0000217d: POP
0000217e: POP
0000217f: POP
00002180: PUSH1 0x01
00002182: ADD
00002183: PUSH2 0x2018
00002186: JUMP
00002187: JUMPDEST
00002188: PUSH1 0x00
0000218a: PUSH1 0x01
0000218c: PUSH1 0xff
0000218e: SHL
0000218f: DUP1
00002190: DUP4
00002191: AND
00002192: EQ
00002193: DUP1
00002194: ISZERO
00002195: PUSH2 0x0cf0
00002198: JUMPI
00002199: POP
0000219a: POP
0000219b: PUSH1 0x01
0000219d: PUSH1 0x01
0000219f: PUSH1 0x80
000021a1: SHL
000021a2: SUB
000021a3: AND
000021a4: ISZERO
000021a5: ISZERO
000021a6: SWAP1
000021a7: JUMP
000021a8: JUMPDEST
000021a9: PUSH1 0x00
000021ab: SWAP1
000021ac: DUP2
000021ad: MSTORE
000021ae: PUSH1 0x04
000021b0: PUSH1 0x20
000021b2: MSTORE
000021b3: PUSH1 0x40
000021b5: SWAP1
000021b6: KECCAK256
000021b7: SLOAD
000021b8: PUSH1 0x01
000021ba: PUSH1 0x01
000021bc: PUSH1 0xa0
000021be: SHL
000021bf: SUB
000021c0: AND
000021c1: SWAP1
000021c2: JUMP
000021c3: JUMPDEST
000021c4: PUSH16 0xffffffffffffffffffffffffffffffff
000021d5: NOT
000021d6: AND
000021d7: SWAP1
000021d8: JUMP
000021d9: JUMPDEST
000021da: PUSH1 0x00
000021dc: PUSH1 0x01
000021de: PUSH1 0xff
000021e0: SHL
000021e1: DUP1
000021e2: DUP4
000021e3: AND
000021e4: EQ
000021e5: DUP1
000021e6: ISZERO
000021e7: PUSH2 0x0cf0
000021ea: JUMPI
000021eb: POP
000021ec: POP
000021ed: PUSH1 0x01
000021ef: PUSH1 0x01
000021f1: PUSH1 0x80
000021f3: SHL
000021f4: SUB
000021f5: AND
000021f6: ISZERO
000021f7: SWAP1
000021f8: JUMP
000021f9: JUMPDEST
000021fa: CALLER
000021fb: PUSH1 0x00
000021fd: SWAP1
000021fe: DUP2
000021ff: MSTORE
00002200: PUSH1 0x09
00002202: PUSH1 0x20
00002204: MSTORE
00002205: PUSH1 0x40
00002207: SWAP1
00002208: KECCAK256
00002209: SLOAD
0000220a: PUSH1 0xff
0000220c: AND
0000220d: PUSH2 0x224b
00002210: JUMPI
00002211: PUSH1 0x40
00002213: DUP1
00002214: MLOAD
00002215: PUSH3 0x461bcd
00002219: PUSH1 0xe5
0000221b: SHL
0000221c: DUP2
0000221d: MSTORE
0000221e: PUSH1 0x20
00002220: PUSH1 0x04
00002222: DUP3
00002223: ADD
00002224: MSTORE
00002225: PUSH1 0x1b
00002227: PUSH1 0x24
00002229: DUP3
0000222a: ADD
0000222b: MSTORE
0000222c: PUSH1 0x00
0000222e: DUP1
0000222f: MLOAD
00002230: PUSH1 0x20
00002232: PUSH2 0x2d13
00002235: DUP4
00002236: CODECOPY
00002237: DUP2
00002238: MLOAD
00002239: SWAP2
0000223a: MSTORE
0000223b: PUSH1 0x44
0000223d: DUP3
0000223e: ADD
0000223f: MSTORE
00002240: SWAP1
00002241: MLOAD
00002242: SWAP1
00002243: DUP2
00002244: SWAP1
00002245: SUB
00002246: PUSH1 0x64
00002248: ADD
00002249: SWAP1
0000224a: REVERT
0000224b: JUMPDEST
0000224c: PUSH1 0x00
0000224e: DUP2
0000224f: GT
00002250: PUSH2 0x2258
00002253: JUMPI
00002254: PUSH1 0x00
00002256: DUP1
00002257: REVERT
00002258: JUMPDEST
00002259: PUSH2 0x2261
0000225c: DUP3
0000225d: PUSH2 0x2187
00002260: JUMP
00002261: JUMPDEST
00002262: ISZERO
00002263: PUSH2 0x22da
00002266: JUMPI
00002267: PUSH1 0x00
00002269: PUSH2 0x2271
0000226c: DUP4
0000226d: PUSH2 0x21c3
00002270: JUMP
00002271: JUMPDEST
00002272: PUSH1 0x00
00002274: DUP2
00002275: DUP2
00002276: MSTORE
00002277: PUSH1 0x08
00002279: PUSH1 0x20
0000227b: MSTORE
0000227c: PUSH1 0x40
0000227e: SWAP1
0000227f: KECCAK256
00002280: SLOAD
00002281: SWAP1
00002282: SWAP2
00002283: POP
00002284: ISZERO
00002285: PUSH2 0x228d
00002288: JUMPI
00002289: PUSH1 0x00
0000228b: DUP1
0000228c: REVERT
0000228d: JUMPDEST
0000228e: PUSH1 0x00
00002290: DUP2
00002291: DUP2
00002292: MSTORE
00002293: PUSH1 0x08
00002295: PUSH1 0x20
00002297: SWAP1
00002298: DUP2
00002299: MSTORE
0000229a: PUSH1 0x40
0000229c: SWAP2
0000229d: DUP3
0000229e: SWAP1
0000229f: KECCAK256
000022a0: DUP5
000022a1: SWAP1
000022a2: SSTORE
000022a3: DUP2
000022a4: MLOAD
000022a5: DUP5
000022a6: DUP2
000022a7: MSTORE
000022a8: SWAP2
000022a9: MLOAD
000022aa: DUP4
000022ab: SWAP3
000022ac: PUSH32 0x4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae
000022cd: SWAP3
000022ce: SWAP1
000022cf: DUP3
000022d0: SWAP1
000022d1: SUB
000022d2: ADD
000022d3: SWAP1
000022d4: LOG2
000022d5: POP
000022d6: PUSH2 0x233b
000022d9: JUMP
000022da: JUMPDEST
000022db: PUSH1 0x00
000022dd: DUP3
000022de: DUP2
000022df: MSTORE
000022e0: PUSH1 0x08
000022e2: PUSH1 0x20
000022e4: MSTORE
000022e5: PUSH1 0x40
000022e7: SWAP1
000022e8: KECCAK256
000022e9: SLOAD
000022ea: ISZERO
000022eb: PUSH2 0x22f3
000022ee: JUMPI
000022ef: PUSH1 0x00
000022f1: DUP1
000022f2: REVERT
000022f3: JUMPDEST
000022f4: PUSH1 0x00
000022f6: DUP3
000022f7: DUP2
000022f8: MSTORE
000022f9: PUSH1 0x08
000022fb: PUSH1 0x20
000022fd: SWAP1
000022fe: DUP2
000022ff: MSTORE
00002300: PUSH1 0x40
00002302: SWAP2
00002303: DUP3
00002304: SWAP1
00002305: KECCAK256
00002306: DUP4
00002307: SWAP1
00002308: SSTORE
00002309: DUP2
0000230a: MLOAD
0000230b: DUP4
0000230c: DUP2
0000230d: MSTORE
0000230e: SWAP2
0000230f: MLOAD
00002310: DUP5
00002311: SWAP3
00002312: PUSH32 0x4a92cb8a98b3c42468f2ffd7b4dc17755416ebcfd17fd0040895ea07895c0fae
00002333: SWAP3
00002334: SWAP1
00002335: DUP3
00002336: SWAP1
00002337: SUB
00002338: ADD
00002339: SWAP1
0000233a: LOG2
0000233b: JUMPDEST
0000233c: POP
0000233d: POP
0000233e: JUMP
0000233f: JUMPDEST
00002340: PUSH1 0x01
00002342: SLOAD
00002343: PUSH1 0x01
00002345: PUSH1 0x01
00002347: PUSH1 0xa0
00002349: SHL
0000234a: SUB
0000234b: AND
0000234c: DUP2
0000234d: JUMP
0000234e: JUMPDEST
0000234f: PUSH1 0x01
00002351: PUSH1 0x01
00002353: PUSH1 0x80
00002355: SHL
00002356: SUB
00002357: AND
00002358: SWAP1
00002359: JUMP
0000235a: JUMPDEST
0000235b: CALLER
0000235c: PUSH1 0x00
0000235e: DUP2
0000235f: DUP2
00002360: MSTORE
00002361: PUSH1 0x03
00002363: PUSH1 0x20
00002365: SWAP1
00002366: DUP2
00002367: MSTORE
00002368: PUSH1 0x40
0000236a: DUP1
0000236b: DUP4
0000236c: KECCAK256
0000236d: PUSH1 0x01
0000236f: PUSH1 0x01
00002371: PUSH1 0xa0
00002373: SHL
00002374: SUB
00002375: DUP8
00002376: AND
00002377: DUP1
00002378: DUP6
00002379: MSTORE
0000237a: SWAP1
0000237b: DUP4
0000237c: MSTORE
0000237d: SWAP3
0000237e: DUP2
0000237f: SWAP1
00002380: KECCAK256
00002381: DUP1
00002382: SLOAD
00002383: PUSH1 0xff
00002385: NOT
00002386: AND
00002387: DUP7
00002388: ISZERO
00002389: ISZERO
0000238a: SWAP1
0000238b: DUP2
0000238c: OR
0000238d: SWAP1
0000238e: SWAP2
0000238f: SSTORE
00002390: DUP2
00002391: MLOAD
00002392: SWAP1
00002393: DUP2
00002394: MSTORE
00002395: SWAP1
00002396: MLOAD
00002397: SWAP3
00002398: SWAP4
00002399: SWAP3
0000239a: PUSH32 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31
000023bb: SWAP3
000023bc: SWAP2
000023bd: DUP2
000023be: SWAP1
000023bf: SUB
000023c0: SWAP1
000023c1: SWAP2
000023c2: ADD
000023c3: SWAP1
000023c4: LOG3
000023c5: POP
000023c6: POP
000023c7: JUMP
000023c8: JUMPDEST
000023c9: PUSH1 0x01
000023cb: SLOAD
000023cc: PUSH1 0x01
000023ce: PUSH1 0x01
000023d0: PUSH1 0xa0
000023d2: SHL
000023d3: SUB
000023d4: AND
000023d5: CALLER
000023d6: EQ
000023d7: PUSH2 0x23df
000023da: JUMPI
000023db: PUSH1 0x00
000023dd: DUP1
000023de: REVERT
000023df: JUMPDEST
000023e0: PUSH1 0x00
000023e2: JUMPDEST
000023e3: DUP2
000023e4: DUP2
000023e5: LT
000023e6: ISZERO
000023e7: PUSH2 0x175a
000023ea: JUMPI
000023eb: PUSH32 0x77b942a0834ead73d2e76c27f611bd4f14e4cd55de82e1d4bbd5521905f69f0f
0000240c: DUP4
0000240d: DUP4
0000240e: DUP4
0000240f: DUP2
00002410: DUP2
00002411: LT
00002412: PUSH2 0x2417
00002415: JUMPI
00002416: INVALID
00002417: JUMPDEST
00002418: PUSH1 0x40
0000241a: DUP1
0000241b: MLOAD
0000241c: PUSH1 0x20
0000241e: SWAP3
0000241f: DUP4
00002420: MUL
00002421: SWAP5
00002422: SWAP1
00002423: SWAP5
00002424: ADD
00002425: CALLDATALOAD
00002426: PUSH1 0x01
00002428: PUSH1 0x01
0000242a: PUSH1 0xa0
0000242c: SHL
0000242d: SUB
0000242e: AND
0000242f: DUP5
00002430: MSTORE
00002431: MLOAD
00002432: SWAP3
00002433: DUP4
00002434: SWAP1
00002435: SUB
00002436: ADD
00002437: SWAP2
00002438: SWAP1
00002439: POP
0000243a: LOG1
0000243b: PUSH1 0x01
0000243d: PUSH1 0x09
0000243f: PUSH1 0x00
00002441: DUP6
00002442: DUP6
00002443: DUP6
00002444: DUP2
00002445: DUP2
00002446: LT
00002447: PUSH2 0x244c
0000244a: JUMPI
0000244b: INVALID
0000244c: JUMPDEST
0000244d: PUSH1 0x20
0000244f: SWAP1
00002450: DUP2
00002451: MUL
00002452: SWAP3
00002453: SWAP1
00002454: SWAP3
00002455: ADD
00002456: CALLDATALOAD
00002457: PUSH1 0x01
00002459: PUSH1 0x01
0000245b: PUSH1 0xa0
0000245d: SHL
0000245e: SUB
0000245f: AND
00002460: DUP4
00002461: MSTORE
00002462: POP
00002463: DUP2
00002464: ADD
00002465: SWAP2
00002466: SWAP1
00002467: SWAP2
00002468: MSTORE
00002469: PUSH1 0x40
0000246b: ADD
0000246c: PUSH1 0x00
0000246e: KECCAK256
0000246f: DUP1
00002470: SLOAD
00002471: PUSH1 0xff
00002473: NOT
00002474: AND
00002475: SWAP2
00002476: ISZERO
00002477: ISZERO
00002478: SWAP2
00002479: SWAP1
0000247a: SWAP2
0000247b: OR
0000247c: SWAP1
0000247d: SSTORE
0000247e: PUSH1 0x01
00002480: ADD
00002481: PUSH2 0x23e2
00002484: JUMP
00002485: JUMPDEST
00002486: PUSH1 0x01
00002488: PUSH1 0xff
0000248a: SHL
0000248b: AND
0000248c: ISZERO
0000248d: SWAP1
0000248e: JUMP
0000248f: JUMPDEST
00002490: CALLER
00002491: PUSH1 0x00
00002493: SWAP1
00002494: DUP2
00002495: MSTORE
00002496: PUSH1 0x09
00002498: PUSH1 0x20
0000249a: MSTORE
0000249b: PUSH1 0x40
0000249d: DUP2
0000249e: KECCAK256
0000249f: SLOAD
000024a0: PUSH1 0xff
000024a2: AND
000024a3: PUSH2 0x24e1
000024a6: JUMPI
000024a7: PUSH1 0x40
000024a9: DUP1
000024aa: MLOAD
000024ab: PUSH3 0x461bcd
000024af: PUSH1 0xe5
000024b1: SHL
000024b2: DUP2
000024b3: MSTORE
000024b4: PUSH1 0x20
000024b6: PUSH1 0x04
000024b8: DUP3
000024b9: ADD
000024ba: MSTORE
000024bb: PUSH1 0x1b
000024bd: PUSH1 0x24
000024bf: DUP3
000024c0: ADD
000024c1: MSTORE
000024c2: PUSH1 0x00
000024c4: DUP1
000024c5: MLOAD
000024c6: PUSH1 0x20
000024c8: PUSH2 0x2d13
000024cb: DUP4
000024cc: CODECOPY
000024cd: DUP2
000024ce: MLOAD
000024cf: SWAP2
000024d0: MSTORE
000024d1: PUSH1 0x44
000024d3: DUP3
000024d4: ADD
000024d5: MSTORE
000024d6: SWAP1
000024d7: MLOAD
000024d8: SWAP1
000024d9: DUP2
000024da: SWAP1
000024db: SUB
000024dc: PUSH1 0x64
000024de: ADD
000024df: SWAP1
000024e0: REVERT
000024e1: JUMPDEST
000024e2: POP
000024e3: PUSH1 0x00
000024e5: DUP1
000024e6: SLOAD
000024e7: PUSH1 0x01
000024e9: ADD
000024ea: SWAP1
000024eb: DUP2
000024ec: SWAP1
000024ed: SSTORE
000024ee: PUSH1 0x80
000024f0: SHL
000024f1: DUP2
000024f2: ISZERO
000024f3: PUSH2 0x24fd
000024f6: JUMPI
000024f7: PUSH1 0x01
000024f9: PUSH1 0xff
000024fb: SHL
000024fc: OR
000024fd: JUMPDEST
000024fe: PUSH1 0x40
00002500: DUP1
00002501: MLOAD
00002502: DUP3
00002503: DUP2
00002504: MSTORE
00002505: PUSH1 0x00
00002507: PUSH1 0x20
00002509: DUP3
0000250a: ADD
0000250b: DUP2
0000250c: SWAP1
0000250d: MSTORE
0000250e: DUP3
0000250f: MLOAD
00002510: SWAP1
00002511: SWAP3
00002512: DUP4
00002513: SWAP3
00002514: CALLER
00002515: SWAP3
00002516: PUSH1 0x00
00002518: DUP1
00002519: MLOAD
0000251a: PUSH1 0x20
0000251c: PUSH2 0x2c5c
0000251f: DUP4
00002520: CODECOPY
00002521: DUP2
00002522: MLOAD
00002523: SWAP2
00002524: MSTORE
00002525: SWAP3
00002526: SWAP2
00002527: DUP2
00002528: SWAP1
00002529: SUB
0000252a: SWAP1
0000252b: SWAP2
0000252c: ADD
0000252d: SWAP1
0000252e: LOG4
0000252f: DUP3
00002530: ISZERO
00002531: PUSH2 0x2596
00002534: JUMPI
00002535: DUP1
00002536: PUSH32 0x6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b
00002557: DUP6
00002558: DUP6
00002559: PUSH1 0x40
0000255b: MLOAD
0000255c: DUP1
0000255d: DUP1
0000255e: PUSH1 0x20
00002560: ADD
00002561: DUP3
00002562: DUP2
00002563: SUB
00002564: DUP3
00002565: MSTORE
00002566: DUP5
00002567: DUP5
00002568: DUP3
00002569: DUP2
0000256a: DUP2
0000256b: MSTORE
0000256c: PUSH1 0x20
0000256e: ADD
0000256f: SWAP3
00002570: POP
00002571: DUP1
00002572: DUP3
00002573: DUP5
00002574: CALLDATACOPY
00002575: PUSH1 0x00
00002577: DUP4
00002578: DUP3
00002579: ADD
0000257a: MSTORE
0000257b: PUSH1 0x40
0000257d: MLOAD
0000257e: PUSH1 0x1f
00002580: SWAP1
00002581: SWAP2
00002582: ADD
00002583: PUSH1 0x1f
00002585: NOT
00002586: AND
00002587: SWAP1
00002588: SWAP3
00002589: ADD
0000258a: DUP3
0000258b: SWAP1
0000258c: SUB
0000258d: SWAP6
0000258e: POP
0000258f: SWAP1
00002590: SWAP4
00002591: POP
00002592: POP
00002593: POP
00002594: POP
00002595: LOG2
00002596: JUMPDEST
00002597: SWAP4
00002598: SWAP3
00002599: POP
0000259a: POP
0000259b: POP
0000259c: JUMP
0000259d: JUMPDEST
0000259e: PUSH1 0x01
000025a0: PUSH1 0xff
000025a2: SHL
000025a3: SWAP1
000025a4: DUP2
000025a5: AND
000025a6: EQ
000025a7: SWAP1
000025a8: JUMP
000025a9: JUMPDEST
000025aa: PUSH1 0x01
000025ac: PUSH1 0x01
000025ae: PUSH1 0xa0
000025b0: SHL
000025b1: SUB
000025b2: SWAP2
000025b3: DUP3
000025b4: AND
000025b5: PUSH1 0x00
000025b7: SWAP1
000025b8: DUP2
000025b9: MSTORE
000025ba: PUSH1 0x03
000025bc: PUSH1 0x20
000025be: SWAP1
000025bf: DUP2
000025c0: MSTORE
000025c1: PUSH1 0x40
000025c3: DUP1
000025c4: DUP4
000025c5: KECCAK256
000025c6: SWAP4
000025c7: SWAP1
000025c8: SWAP5
000025c9: AND
000025ca: DUP3
000025cb: MSTORE
000025cc: SWAP2
000025cd: SWAP1
000025ce: SWAP2
000025cf: MSTORE
000025d0: KECCAK256
000025d1: SLOAD
000025d2: PUSH1 0xff
000025d4: AND
000025d5: SWAP1
000025d6: JUMP
000025d7: JUMPDEST
000025d8: PUSH1 0x01
000025da: PUSH1 0x01
000025dc: PUSH1 0xa0
000025de: SHL
000025df: SUB
000025e0: DUP6
000025e1: AND
000025e2: PUSH2 0x2632
000025e5: JUMPI
000025e6: PUSH1 0x40
000025e8: DUP1
000025e9: MLOAD
000025ea: PUSH3 0x461bcd
000025ee: PUSH1 0xe5
000025f0: SHL
000025f1: DUP2
000025f2: MSTORE
000025f3: PUSH1 0x20
000025f5: PUSH1 0x04
000025f7: DUP3
000025f8: ADD
000025f9: MSTORE
000025fa: PUSH1 0x1b
000025fc: PUSH1 0x24
000025fe: DUP3
000025ff: ADD
00002600: MSTORE
00002601: PUSH32 0x63616e6e6f742073656e6420746f207a65726f20616464726573730000000000
00002622: PUSH1 0x44
00002624: DUP3
00002625: ADD
00002626: MSTORE
00002627: SWAP1
00002628: MLOAD
00002629: SWAP1
0000262a: DUP2
0000262b: SWAP1
0000262c: SUB
0000262d: PUSH1 0x64
0000262f: ADD
00002630: SWAP1
00002631: REVERT
00002632: JUMPDEST
00002633: PUSH1 0x01
00002635: PUSH1 0x01
00002637: PUSH1 0xa0
00002639: SHL
0000263a: SUB
0000263b: DUP7
0000263c: AND
0000263d: CALLER
0000263e: EQ
0000263f: DUP1
00002640: PUSH2 0x2671
00002643: JUMPI
00002644: POP
00002645: PUSH1 0x01
00002647: PUSH1 0x01
00002649: PUSH1 0xa0
0000264b: SHL
0000264c: SUB
0000264d: DUP7
0000264e: AND
0000264f: PUSH1 0x00
00002651: SWAP1
00002652: DUP2
00002653: MSTORE
00002654: PUSH1 0x03
00002656: PUSH1 0x20
00002658: SWAP1
00002659: DUP2
0000265a: MSTORE
0000265b: PUSH1 0x40
0000265d: DUP1
0000265e: DUP4
0000265f: KECCAK256
00002660: CALLER
00002661: DUP5
00002662: MSTORE
00002663: SWAP1
00002664: SWAP2
00002665: MSTORE
00002666: SWAP1
00002667: KECCAK256
00002668: SLOAD
00002669: PUSH1 0xff
0000266b: AND
0000266c: ISZERO
0000266d: ISZERO
0000266e: PUSH1 0x01
00002670: EQ
00002671: JUMPDEST
00002672: PUSH2 0x26ac
00002675: JUMPI
00002676: PUSH1 0x40
00002678: MLOAD
00002679: PUSH3 0x461bcd
0000267d: PUSH1 0xe5
0000267f: SHL
00002680: DUP2
00002681: MSTORE
00002682: PUSH1 0x04
00002684: ADD
00002685: DUP1
00002686: DUP1
00002687: PUSH1 0x20
00002689: ADD
0000268a: DUP3
0000268b: DUP2
0000268c: SUB
0000268d: DUP3
0000268e: MSTORE
0000268f: PUSH1 0x2f
00002691: DUP2
00002692: MSTORE
00002693: PUSH1 0x20
00002695: ADD
00002696: DUP1
00002697: PUSH2 0x2c7c
0000269a: PUSH1 0x2f
0000269c: SWAP2
0000269d: CODECOPY
0000269e: PUSH1 0x40
000026a0: ADD
000026a1: SWAP2
000026a2: POP
000026a3: POP
000026a4: PUSH1 0x40
000026a6: MLOAD
000026a7: DUP1
000026a8: SWAP2
000026a9: SUB
000026aa: SWAP1
000026ab: REVERT
000026ac: JUMPDEST
000026ad: PUSH2 0x26b5
000026b0: DUP5
000026b1: PUSH2 0x259d
000026b4: JUMP
000026b5: JUMPDEST
000026b6: ISZERO
000026b7: PUSH2 0x27a6
000026ba: JUMPI
000026bb: PUSH1 0x00
000026bd: DUP5
000026be: DUP2
000026bf: MSTORE
000026c0: PUSH1 0x04
000026c2: PUSH1 0x20
000026c4: MSTORE
000026c5: PUSH1 0x40
000026c7: SWAP1
000026c8: KECCAK256
000026c9: SLOAD
000026ca: PUSH1 0x01
000026cc: PUSH1 0x01
000026ce: PUSH1 0xa0
000026d0: SHL
000026d1: SUB
000026d2: DUP8
000026d3: DUP2
000026d4: AND
000026d5: SWAP2
000026d6: AND
000026d7: EQ
000026d8: PUSH2 0x26e0
000026db: JUMPI
000026dc: PUSH1 0x00
000026de: DUP1
000026df: REVERT
000026e0: JUMPDEST
000026e1: PUSH1 0x00
000026e3: DUP5
000026e4: DUP2
000026e5: MSTORE
000026e6: PUSH1 0x04
000026e8: PUSH1 0x20
000026ea: MSTORE
000026eb: PUSH1 0x40
000026ed: DUP2
000026ee: KECCAK256
000026ef: DUP1
000026f0: SLOAD
000026f1: PUSH1 0x01
000026f3: PUSH1 0x01
000026f5: PUSH1 0xa0
000026f7: SHL
000026f8: SUB
000026f9: NOT
000026fa: AND
000026fb: PUSH1 0x01
000026fd: PUSH1 0x01
000026ff: PUSH1 0xa0
00002701: SHL
00002702: SUB
00002703: DUP9
00002704: AND
00002705: OR
00002706: SWAP1
00002707: SSTORE
00002708: PUSH2 0x2710
0000270b: DUP6
0000270c: PUSH2 0x21c3
0000270f: JUMP
00002710: JUMPDEST
00002711: PUSH1 0x00
00002713: DUP2
00002714: DUP2
00002715: MSTORE
00002716: PUSH1 0x02
00002718: PUSH1 0x20
0000271a: SWAP1
0000271b: DUP2
0000271c: MSTORE
0000271d: PUSH1 0x40
0000271f: DUP1
00002720: DUP4
00002721: KECCAK256
00002722: PUSH1 0x01
00002724: PUSH1 0x01
00002726: PUSH1 0xa0
00002728: SHL
00002729: SUB
0000272a: DUP13
0000272b: AND
0000272c: DUP5
0000272d: MSTORE
0000272e: SWAP1
0000272f: SWAP2
00002730: MSTORE
00002731: SWAP1
00002732: KECCAK256
00002733: SLOAD
00002734: SWAP1
00002735: SWAP2
00002736: POP
00002737: PUSH2 0x2746
0000273a: SWAP1
0000273b: DUP6
0000273c: PUSH4 0xffffffff
00002741: PUSH2 0x2a5d
00002744: AND
00002745: JUMP
00002746: JUMPDEST
00002747: PUSH1 0x00
00002749: DUP3
0000274a: DUP2
0000274b: MSTORE
0000274c: PUSH1 0x02
0000274e: PUSH1 0x20
00002750: SWAP1
00002751: DUP2
00002752: MSTORE
00002753: PUSH1 0x40
00002755: DUP1
00002756: DUP4
00002757: KECCAK256
00002758: PUSH1 0x01
0000275a: PUSH1 0x01
0000275c: PUSH1 0xa0
0000275e: SHL
0000275f: SUB
00002760: DUP13
00002761: DUP2
00002762: AND
00002763: DUP6
00002764: MSTORE
00002765: SWAP3
00002766: MSTORE
00002767: DUP1
00002768: DUP4
00002769: KECCAK256
0000276a: SWAP4
0000276b: SWAP1
0000276c: SWAP4
0000276d: SSTORE
0000276e: DUP9
0000276f: AND
00002770: DUP2
00002771: MSTORE
00002772: KECCAK256
00002773: SLOAD
00002774: PUSH2 0x277d
00002777: SWAP1
00002778: DUP6
00002779: PUSH2 0x28da
0000277c: JUMP
0000277d: JUMPDEST
0000277e: PUSH1 0x00
00002780: SWAP2
00002781: DUP3
00002782: MSTORE
00002783: PUSH1 0x02
00002785: PUSH1 0x20
00002787: SWAP1
00002788: DUP2
00002789: MSTORE
0000278a: PUSH1 0x40
0000278c: DUP1
0000278d: DUP5
0000278e: KECCAK256
0000278f: PUSH1 0x01
00002791: PUSH1 0x01
00002793: PUSH1 0xa0
00002795: SHL
00002796: SUB
00002797: DUP11
00002798: AND
00002799: DUP6
0000279a: MSTORE
0000279b: SWAP1
0000279c: SWAP2
0000279d: MSTORE
0000279e: SWAP1
0000279f: SWAP2
000027a0: KECCAK256
000027a1: SSTORE
000027a2: PUSH2 0x2834
000027a5: JUMP
000027a6: JUMPDEST
000027a7: PUSH1 0x00
000027a9: DUP5
000027aa: DUP2
000027ab: MSTORE
000027ac: PUSH1 0x02
000027ae: PUSH1 0x20
000027b0: SWAP1
000027b1: DUP2
000027b2: MSTORE
000027b3: PUSH1 0x40
000027b5: DUP1
000027b6: DUP4
000027b7: KECCAK256
000027b8: PUSH1 0x01
000027ba: PUSH1 0x01
000027bc: PUSH1 0xa0
000027be: SHL
000027bf: SUB
000027c0: DUP11
000027c1: AND
000027c2: DUP5
000027c3: MSTORE
000027c4: SWAP1
000027c5: SWAP2
000027c6: MSTORE
000027c7: SWAP1
000027c8: KECCAK256
000027c9: SLOAD
000027ca: PUSH2 0x27d9
000027cd: SWAP1
000027ce: DUP5
000027cf: PUSH4 0xffffffff
000027d4: PUSH2 0x2a5d
000027d7: AND
000027d8: JUMP
000027d9: JUMPDEST
000027da: PUSH1 0x00
000027dc: DUP6
000027dd: DUP2
000027de: MSTORE
000027df: PUSH1 0x02
000027e1: PUSH1 0x20
000027e3: SWAP1
000027e4: DUP2
000027e5: MSTORE
000027e6: PUSH1 0x40
000027e8: DUP1
000027e9: DUP4
000027ea: KECCAK256
000027eb: PUSH1 0x01
000027ed: PUSH1 0x01
000027ef: PUSH1 0xa0
000027f1: SHL
000027f2: SUB
000027f3: DUP12
000027f4: DUP2
000027f5: AND
000027f6: DUP6
000027f7: MSTORE
000027f8: SWAP3
000027f9: MSTORE
000027fa: DUP1
000027fb: DUP4
000027fc: KECCAK256
000027fd: SWAP4
000027fe: SWAP1
000027ff: SWAP4
00002800: SSTORE
00002801: DUP8
00002802: AND
00002803: DUP2
00002804: MSTORE
00002805: KECCAK256
00002806: SLOAD
00002807: PUSH2 0x2810
0000280a: SWAP1
0000280b: DUP5
0000280c: PUSH2 0x28da
0000280f: JUMP
00002810: JUMPDEST
00002811: PUSH1 0x00
00002813: DUP6
00002814: DUP2
00002815: MSTORE
00002816: PUSH1 0x02
00002818: PUSH1 0x20
0000281a: SWAP1
0000281b: DUP2
0000281c: MSTORE
0000281d: PUSH1 0x40
0000281f: DUP1
00002820: DUP4
00002821: KECCAK256
00002822: PUSH1 0x01
00002824: PUSH1 0x01
00002826: PUSH1 0xa0
00002828: SHL
00002829: SUB
0000282a: DUP11
0000282b: AND
0000282c: DUP5
0000282d: MSTORE
0000282e: SWAP1
0000282f: SWAP2
00002830: MSTORE
00002831: SWAP1
00002832: KECCAK256
00002833: SSTORE
00002834: JUMPDEST
00002835: DUP5
00002836: PUSH1 0x01
00002838: PUSH1 0x01
0000283a: PUSH1 0xa0
0000283c: SHL
0000283d: SUB
0000283e: AND
0000283f: DUP7
00002840: PUSH1 0x01
00002842: PUSH1 0x01
00002844: PUSH1 0xa0
00002846: SHL
00002847: SUB
00002848: AND
00002849: CALLER
0000284a: PUSH1 0x01
0000284c: PUSH1 0x01
0000284e: PUSH1 0xa0
00002850: SHL
00002851: SUB
00002852: AND
00002853: PUSH1 0x00
00002855: DUP1
00002856: MLOAD
00002857: PUSH1 0x20
00002859: PUSH2 0x2c5c
0000285c: DUP4
0000285d: CODECOPY
0000285e: DUP2
0000285f: MLOAD
00002860: SWAP2
00002861: MSTORE
00002862: DUP8
00002863: DUP8
00002864: PUSH1 0x40
00002866: MLOAD
00002867: DUP1
00002868: DUP4
00002869: DUP2
0000286a: MSTORE
0000286b: PUSH1 0x20
0000286d: ADD
0000286e: DUP3
0000286f: DUP2
00002870: MSTORE
00002871: PUSH1 0x20
00002873: ADD
00002874: SWAP3
00002875: POP
00002876: POP
00002877: POP
00002878: PUSH1 0x40
0000287a: MLOAD
0000287b: DUP1
0000287c: SWAP2
0000287d: SUB
0000287e: SWAP1
0000287f: LOG4
00002880: PUSH2 0x2891
00002883: DUP6
00002884: PUSH1 0x01
00002886: PUSH1 0x01
00002888: PUSH1 0xa0
0000288a: SHL
0000288b: SUB
0000288c: AND
0000288d: PUSH2 0x28e7
00002890: JUMP
00002891: JUMPDEST
00002892: ISZERO
00002893: PUSH2 0x1b41
00002896: JUMPI
00002897: PUSH2 0x1b41
0000289a: CALLER
0000289b: DUP8
0000289c: DUP8
0000289d: DUP8
0000289e: DUP8
0000289f: DUP8
000028a0: DUP8
000028a1: DUP1
000028a2: DUP1
000028a3: PUSH1 0x1f
000028a5: ADD
000028a6: PUSH1 0x20
000028a8: DUP1
000028a9: SWAP2
000028aa: DIV
000028ab: MUL
000028ac: PUSH1 0x20
000028ae: ADD
000028af: PUSH1 0x40
000028b1: MLOAD
000028b2: SWAP1
000028b3: DUP2
000028b4: ADD
000028b5: PUSH1 0x40
000028b7: MSTORE
000028b8: DUP1
000028b9: SWAP4
000028ba: SWAP3
000028bb: SWAP2
000028bc: SWAP1
000028bd: DUP2
000028be: DUP2
000028bf: MSTORE
000028c0: PUSH1 0x20
000028c2: ADD
000028c3: DUP4
000028c4: DUP4
000028c5: DUP1
000028c6: DUP3
000028c7: DUP5
000028c8: CALLDATACOPY
000028c9: PUSH1 0x00
000028cb: SWAP3
000028cc: ADD
000028cd: SWAP2
000028ce: SWAP1
000028cf: SWAP2
000028d0: MSTORE
000028d1: POP
000028d2: PUSH2 0x28ed
000028d5: SWAP3
000028d6: POP
000028d7: POP
000028d8: POP
000028d9: JUMP
000028da: JUMPDEST
000028db: DUP2
000028dc: DUP2
000028dd: ADD
000028de: DUP3
000028df: DUP2
000028e0: LT
000028e1: ISZERO
000028e2: PUSH2 0x0cf0
000028e5: JUMPI
000028e6: INVALID
000028e7: JUMPDEST
000028e8: EXTCODESIZE
000028e9: ISZERO
000028ea: ISZERO
000028eb: SWAP1
000028ec: JUMP
000028ed: JUMPDEST
000028ee: PUSH4 0xf23a6e61
000028f3: PUSH1 0xe0
000028f5: SHL
000028f6: PUSH1 0x01
000028f8: PUSH1 0x01
000028fa: PUSH1 0xe0
000028fc: SHL
000028fd: SUB
000028fe: NOT
000028ff: AND
00002900: DUP5
00002901: PUSH1 0x01
00002903: PUSH1 0x01
00002905: PUSH1 0xa0
00002907: SHL
00002908: SUB
00002909: AND
0000290a: PUSH4 0xf23a6e61
0000290f: DUP9
00002910: DUP9
00002911: DUP8
00002912: DUP8
00002913: DUP8
00002914: PUSH1 0x40
00002916: MLOAD
00002917: DUP7
00002918: PUSH4 0xffffffff
0000291d: AND
0000291e: PUSH1 0xe0
00002920: SHL
00002921: DUP2
00002922: MSTORE
00002923: PUSH1 0x04
00002925: ADD
00002926: DUP1
00002927: DUP7
00002928: PUSH1 0x01
0000292a: PUSH1 0x01
0000292c: PUSH1 0xa0
0000292e: SHL
0000292f: SUB
00002930: AND
00002931: PUSH1 0x01
00002933: PUSH1 0x01
00002935: PUSH1 0xa0
00002937: SHL
00002938: SUB
00002939: AND
0000293a: DUP2
0000293b: MSTORE
0000293c: PUSH1 0x20
0000293e: ADD
0000293f: DUP6
00002940: PUSH1 0x01
00002942: PUSH1 0x01
00002944: PUSH1 0xa0
00002946: SHL
00002947: SUB
00002948: AND
00002949: PUSH1 0x01
0000294b: PUSH1 0x01
0000294d: PUSH1 0xa0
0000294f: SHL
00002950: SUB
00002951: AND
00002952: DUP2
00002953: MSTORE
00002954: PUSH1 0x20
00002956: ADD
00002957: DUP5
00002958: DUP2
00002959: MSTORE
0000295a: PUSH1 0x20
0000295c: ADD
0000295d: DUP4
0000295e: DUP2
0000295f: MSTORE
00002960: PUSH1 0x20
00002962: ADD
00002963: DUP1
00002964: PUSH1 0x20
00002966: ADD
00002967: DUP3
00002968: DUP2
00002969: SUB
0000296a: DUP3
0000296b: MSTORE
0000296c: DUP4
0000296d: DUP2
0000296e: DUP2
0000296f: MLOAD
00002970: DUP2
00002971: MSTORE
00002972: PUSH1 0x20
00002974: ADD
00002975: SWAP2
00002976: POP
00002977: DUP1
00002978: MLOAD
00002979: SWAP1
0000297a: PUSH1 0x20
0000297c: ADD
0000297d: SWAP1
0000297e: DUP1
0000297f: DUP4
00002980: DUP4
00002981: PUSH1 0x00
00002983: JUMPDEST
00002984: DUP4
00002985: DUP2
00002986: LT
00002987: ISZERO
00002988: PUSH2 0x299b
0000298b: JUMPI
0000298c: DUP2
0000298d: DUP2
0000298e: ADD
0000298f: MLOAD
00002990: DUP4
00002991: DUP3
00002992: ADD
00002993: MSTORE
00002994: PUSH1 0x20
00002996: ADD
00002997: PUSH2 0x2983
0000299a: JUMP
0000299b: JUMPDEST
0000299c: POP
0000299d: POP
0000299e: POP
0000299f: POP
000029a0: SWAP1
000029a1: POP
000029a2: SWAP1
000029a3: DUP2
000029a4: ADD
000029a5: SWAP1
000029a6: PUSH1 0x1f
000029a8: AND
000029a9: DUP1
000029aa: ISZERO
000029ab: PUSH2 0x29c8
000029ae: JUMPI
000029af: DUP1
000029b0: DUP3
000029b1: SUB
000029b2: DUP1
000029b3: MLOAD
000029b4: PUSH1 0x01
000029b6: DUP4
000029b7: PUSH1 0x20
000029b9: SUB
000029ba: PUSH2 0x0100
000029bd: EXP
000029be: SUB
000029bf: NOT
000029c0: AND
000029c1: DUP2
000029c2: MSTORE
000029c3: PUSH1 0x20
000029c5: ADD
000029c6: SWAP2
000029c7: POP
000029c8: JUMPDEST
000029c9: POP
000029ca: SWAP7
000029cb: POP
000029cc: POP
000029cd: POP
000029ce: POP
000029cf: POP
000029d0: POP
000029d1: POP
000029d2: PUSH1 0x20
000029d4: PUSH1 0x40
000029d6: MLOAD
000029d7: DUP1
000029d8: DUP4
000029d9: SUB
000029da: DUP2
000029db: PUSH1 0x00
000029dd: DUP8
000029de: DUP1
000029df: EXTCODESIZE
000029e0: ISZERO
000029e1: DUP1
000029e2: ISZERO
000029e3: PUSH2 0x29eb
000029e6: JUMPI
000029e7: PUSH1 0x00
000029e9: DUP1
000029ea: REVERT
000029eb: JUMPDEST
000029ec: POP
000029ed: GAS
000029ee: CALL
000029ef: ISZERO
000029f0: DUP1
000029f1: ISZERO
000029f2: PUSH2 0x29ff
000029f5: JUMPI
000029f6: RETURNDATASIZE
000029f7: PUSH1 0x00
000029f9: DUP1
000029fa: RETURNDATACOPY
000029fb: RETURNDATASIZE
000029fc: PUSH1 0x00
000029fe: REVERT
000029ff: JUMPDEST
00002a00: POP
00002a01: POP
00002a02: POP
00002a03: POP
00002a04: PUSH1 0x40
00002a06: MLOAD
00002a07: RETURNDATASIZE
00002a08: PUSH1 0x20
00002a0a: DUP2
00002a0b: LT
00002a0c: ISZERO
00002a0d: PUSH2 0x2a15
00002a10: JUMPI
00002a11: PUSH1 0x00
00002a13: DUP1
00002a14: REVERT
00002a15: JUMPDEST
00002a16: POP
00002a17: MLOAD
00002a18: PUSH1 0x01
00002a1a: PUSH1 0x01
00002a1c: PUSH1 0xe0
00002a1e: SHL
00002a1f: SUB
00002a20: NOT
00002a21: AND
00002a22: EQ
00002a23: PUSH2 0x1b41
00002a26: JUMPI
00002a27: PUSH1 0x40
00002a29: MLOAD
00002a2a: PUSH3 0x461bcd
00002a2e: PUSH1 0xe5
00002a30: SHL
00002a31: DUP2
00002a32: MSTORE
00002a33: PUSH1 0x04
00002a35: ADD
00002a36: DUP1
00002a37: DUP1
00002a38: PUSH1 0x20
00002a3a: ADD
00002a3b: DUP3
00002a3c: DUP2
00002a3d: SUB
00002a3e: DUP3
00002a3f: MSTORE
00002a40: PUSH1 0x39
00002a42: DUP2
00002a43: MSTORE
00002a44: PUSH1 0x20
00002a46: ADD
00002a47: DUP1
00002a48: PUSH2 0x2d33
00002a4b: PUSH1 0x39
00002a4d: SWAP2
00002a4e: CODECOPY
00002a4f: PUSH1 0x40
00002a51: ADD
00002a52: SWAP2
00002a53: POP
00002a54: POP
00002a55: PUSH1 0x40
00002a57: MLOAD
00002a58: DUP1
00002a59: SWAP2
00002a5a: SUB
00002a5b: SWAP1
00002a5c: REVERT
00002a5d: JUMPDEST
00002a5e: PUSH1 0x00
00002a60: DUP3
00002a61: DUP3
00002a62: GT
00002a63: ISZERO
00002a64: PUSH2 0x2a69
00002a67: JUMPI
00002a68: INVALID
00002a69: JUMPDEST
00002a6a: POP
00002a6b: SWAP1
00002a6c: SUB
00002a6d: SWAP1
00002a6e: JUMP
00002a6f: JUMPDEST
00002a70: PUSH4 0xbc197c81
00002a75: PUSH1 0xe0
00002a77: SHL
00002a78: PUSH1 0x01
00002a7a: PUSH1 0x01
00002a7c: PUSH1 0xe0
00002a7e: SHL
00002a7f: SUB
00002a80: NOT
00002a81: AND
00002a82: DUP5
00002a83: PUSH1 0x01
00002a85: PUSH1 0x01
00002a87: PUSH1 0xa0
00002a89: SHL
00002a8a: SUB
00002a8b: AND
00002a8c: PUSH4 0xbc197c81
00002a91: DUP9
00002a92: DUP9
00002a93: DUP8
00002a94: DUP8
00002a95: DUP8
00002a96: PUSH1 0x40
00002a98: MLOAD
00002a99: DUP7
00002a9a: PUSH4 0xffffffff
00002a9f: AND
00002aa0: PUSH1 0xe0
00002aa2: SHL
00002aa3: DUP2
00002aa4: MSTORE
00002aa5: PUSH1 0x04
00002aa7: ADD
00002aa8: DUP1
00002aa9: DUP7
00002aaa: PUSH1 0x01
00002aac: PUSH1 0x01
00002aae: PUSH1 0xa0
00002ab0: SHL
00002ab1: SUB
00002ab2: AND
00002ab3: PUSH1 0x01
00002ab5: PUSH1 0x01
00002ab7: PUSH1 0xa0
00002ab9: SHL
00002aba: SUB
00002abb: AND
00002abc: DUP2
00002abd: MSTORE
00002abe: PUSH1 0x20
00002ac0: ADD
00002ac1: DUP6
00002ac2: PUSH1 0x01
00002ac4: PUSH1 0x01
00002ac6: PUSH1 0xa0
00002ac8: SHL
00002ac9: SUB
00002aca: AND
00002acb: PUSH1 0x01
00002acd: PUSH1 0x01
00002acf: PUSH1 0xa0
00002ad1: SHL
00002ad2: SUB
00002ad3: AND
00002ad4: DUP2
00002ad5: MSTORE
00002ad6: PUSH1 0x20
00002ad8: ADD
00002ad9: DUP1
00002ada: PUSH1 0x20
00002adc: ADD
00002add: DUP1
00002ade: PUSH1 0x20
00002ae0: ADD
00002ae1: DUP1
00002ae2: PUSH1 0x20
00002ae4: ADD
00002ae5: DUP5
00002ae6: DUP2
00002ae7: SUB
00002ae8: DUP5
00002ae9: MSTORE
00002aea: DUP8
00002aeb: DUP2
00002aec: DUP2
00002aed: MLOAD
00002aee: DUP2
00002aef: MSTORE
00002af0: PUSH1 0x20
00002af2: ADD
00002af3: SWAP2
00002af4: POP
00002af5: DUP1
00002af6: MLOAD
00002af7: SWAP1
00002af8: PUSH1 0x20
00002afa: ADD
00002afb: SWAP1
00002afc: PUSH1 0x20
00002afe: MUL
00002aff: DUP1
00002b00: DUP4
00002b01: DUP4
00002b02: PUSH1 0x00
00002b04: JUMPDEST
00002b05: DUP4
00002b06: DUP2
00002b07: LT
00002b08: ISZERO
00002b09: PUSH2 0x2b1c
00002b0c: JUMPI
00002b0d: DUP2
00002b0e: DUP2
00002b0f: ADD
00002b10: MLOAD
00002b11: DUP4
00002b12: DUP3
00002b13: ADD
00002b14: MSTORE
00002b15: PUSH1 0x20
00002b17: ADD
00002b18: PUSH2 0x2b04
00002b1b: JUMP
00002b1c: JUMPDEST
00002b1d: POP
00002b1e: POP
00002b1f: POP
00002b20: POP
00002b21: SWAP1
00002b22: POP
00002b23: ADD
00002b24: DUP5
00002b25: DUP2
00002b26: SUB
00002b27: DUP4
00002b28: MSTORE
00002b29: DUP7
00002b2a: DUP2
00002b2b: DUP2
00002b2c: MLOAD
00002b2d: DUP2
00002b2e: MSTORE
00002b2f: PUSH1 0x20
00002b31: ADD
00002b32: SWAP2
00002b33: POP
00002b34: DUP1
00002b35: MLOAD
00002b36: SWAP1
00002b37: PUSH1 0x20
00002b39: ADD
00002b3a: SWAP1
00002b3b: PUSH1 0x20
00002b3d: MUL
00002b3e: DUP1
00002b3f: DUP4
00002b40: DUP4
00002b41: PUSH1 0x00
00002b43: JUMPDEST
00002b44: DUP4
00002b45: DUP2
00002b46: LT
00002b47: ISZERO
00002b48: PUSH2 0x2b5b
00002b4b: JUMPI
00002b4c: DUP2
00002b4d: DUP2
00002b4e: ADD
00002b4f: MLOAD
00002b50: DUP4
00002b51: DUP3
00002b52: ADD
00002b53: MSTORE
00002b54: PUSH1 0x20
00002b56: ADD
00002b57: PUSH2 0x2b43
00002b5a: JUMP
00002b5b: JUMPDEST
00002b5c: POP
00002b5d: POP
00002b5e: POP
00002b5f: POP
00002b60: SWAP1
00002b61: POP
00002b62: ADD
00002b63: DUP5
00002b64: DUP2
00002b65: SUB
00002b66: DUP3
00002b67: MSTORE
00002b68: DUP6
00002b69: DUP2
00002b6a: DUP2
00002b6b: MLOAD
00002b6c: DUP2
00002b6d: MSTORE
00002b6e: PUSH1 0x20
00002b70: ADD
00002b71: SWAP2
00002b72: POP
00002b73: DUP1
00002b74: MLOAD
00002b75: SWAP1
00002b76: PUSH1 0x20
00002b78: ADD
00002b79: SWAP1
00002b7a: DUP1
00002b7b: DUP4
00002b7c: DUP4
00002b7d: PUSH1 0x00
00002b7f: JUMPDEST
00002b80: DUP4
00002b81: DUP2
00002b82: LT
00002b83: ISZERO
00002b84: PUSH2 0x2b97
00002b87: JUMPI
00002b88: DUP2
00002b89: DUP2
00002b8a: ADD
00002b8b: MLOAD
00002b8c: DUP4
00002b8d: DUP3
00002b8e: ADD
00002b8f: MSTORE
00002b90: PUSH1 0x20
00002b92: ADD
00002b93: PUSH2 0x2b7f
00002b96: JUMP
00002b97: JUMPDEST
00002b98: POP
00002b99: POP
00002b9a: POP
00002b9b: POP
00002b9c: SWAP1
00002b9d: POP
00002b9e: SWAP1
00002b9f: DUP2
00002ba0: ADD
00002ba1: SWAP1
00002ba2: PUSH1 0x1f
00002ba4: AND
00002ba5: DUP1
00002ba6: ISZERO
00002ba7: PUSH2 0x2bc4
00002baa: JUMPI
00002bab: DUP1
00002bac: DUP3
00002bad: SUB
00002bae: DUP1
00002baf: MLOAD
00002bb0: PUSH1 0x01
00002bb2: DUP4
00002bb3: PUSH1 0x20
00002bb5: SUB
00002bb6: PUSH2 0x0100
00002bb9: EXP
00002bba: SUB
00002bbb: NOT
00002bbc: AND
00002bbd: DUP2
00002bbe: MSTORE
00002bbf: PUSH1 0x20
00002bc1: ADD
00002bc2: SWAP2
00002bc3: POP
00002bc4: JUMPDEST
00002bc5: POP
00002bc6: SWAP9
00002bc7: POP
00002bc8: POP
00002bc9: POP
00002bca: POP
00002bcb: POP
00002bcc: POP
00002bcd: POP
00002bce: POP
00002bcf: POP
00002bd0: PUSH1 0x20
00002bd2: PUSH1 0x40
00002bd4: MLOAD
00002bd5: DUP1
00002bd6: DUP4
00002bd7: SUB
00002bd8: DUP2
00002bd9: PUSH1 0x00
00002bdb: DUP8
00002bdc: DUP1
00002bdd: EXTCODESIZE
00002bde: ISZERO
00002bdf: DUP1
00002be0: ISZERO
00002be1: PUSH2 0x2be9
00002be4: JUMPI
00002be5: PUSH1 0x00
00002be7: DUP1
00002be8: REVERT
00002be9: JUMPDEST
00002bea: POP
00002beb: GAS
00002bec: CALL
00002bed: ISZERO
00002bee: DUP1
00002bef: ISZERO
00002bf0: PUSH2 0x2bfd
00002bf3: JUMPI
00002bf4: RETURNDATASIZE
00002bf5: PUSH1 0x00
00002bf7: DUP1
00002bf8: RETURNDATACOPY
00002bf9: RETURNDATASIZE
00002bfa: PUSH1 0x00
00002bfc: REVERT
00002bfd: JUMPDEST
00002bfe: POP
00002bff: POP
00002c00: POP
00002c01: POP
00002c02: PUSH1 0x40
00002c04: MLOAD
00002c05: RETURNDATASIZE
00002c06: PUSH1 0x20
00002c08: DUP2
00002c09: LT
00002c0a: ISZERO
00002c0b: PUSH2 0x2c13
00002c0e: JUMPI
00002c0f: PUSH1 0x00
00002c11: DUP1
00002c12: REVERT
00002c13: JUMPDEST
00002c14: POP
00002c15: MLOAD
00002c16: PUSH1 0x01
00002c18: PUSH1 0x01
00002c1a: PUSH1 0xe0
00002c1c: SHL
00002c1d: SUB
00002c1e: NOT
00002c1f: AND
00002c20: EQ
00002c21: PUSH2 0x1b41
00002c24: JUMPI
00002c25: PUSH1 0x40
00002c27: MLOAD
00002c28: PUSH3 0x461bcd
00002c2c: PUSH1 0xe5
00002c2e: SHL
00002c2f: DUP2
00002c30: MSTORE
00002c31: PUSH1 0x04
00002c33: ADD
00002c34: DUP1
00002c35: DUP1
00002c36: PUSH1 0x20
00002c38: ADD
00002c39: DUP3
00002c3a: DUP2
00002c3b: SUB
00002c3c: DUP3
00002c3d: MSTORE
00002c3e: PUSH1 0x3e
00002c40: DUP2
00002c41: MSTORE
00002c42: PUSH1 0x20
00002c44: ADD
00002c45: DUP1
00002c46: PUSH2 0x2cab
00002c49: PUSH1 0x3e
00002c4b: SWAP2
00002c4c: CODECOPY
00002c4d: PUSH1 0x40
00002c4f: ADD
00002c50: SWAP2
00002c51: POP
00002c52: POP
00002c53: PUSH1 0x40
00002c55: MLOAD
00002c56: DUP1
00002c57: SWAP2
00002c58: SUB
00002c59: SWAP1
00002c5a: REVERT
00002c5b: INVALID
00002c5c: UNKNOWN(0xC3)
00002c5d: UNKNOWN(0xD5)
00002c5e: DUP2
00002c5f: PUSH9 0xc5ae7397731d063d5b
00002c69: UNKNOWN(0xBF)
00002c6a: RETURNDATASIZE
00002c6b: PUSH6 0x7854427343f4
00002c72: UNKNOWN(0xC0)
00002c73: DUP4
00002c74: UNKNOWN(0x24)
00002c75: UNKNOWN(0x0F)
00002c76: PUSH27 0xacaa2d0f624e656564206f70657261746f7220617070726f76616c
00002c92: KECCAK256
00002c93: PUSH7 0x6f722033726420
00002c9b: PUSH17 0x61727479207472616e73666572732e636f
00002cad: PUSH15 0x74726163742072657475726e656420
00002cbd: PUSH2 0x6e20
00002cc0: PUSH22 0x6e6b6e6f776e2076616c75652066726f6d206f6e4552
00002cd7: NUMBER
00002cd8: BALANCE
00002cd9: BALANCE
00002cda: CALLDATALOAD
00002cdb: CALLDATALOAD
00002cdc: TIMESTAMP
00002cdd: PUSH2 0x7463
00002ce0: PUSH9 0x52656365697665644e
00002cea: PUSH6 0x6564206f7065
00002cf1: PUSH19 0x61746f7220617070726f76616c20666f722033
00002d05: PUSH19 0x64207061727479206275726e2e43726561746f
00002d19: PUSH19 0x207065726d697373696f6e2072657175697265
00002d2d: PUSH5 0x0000000000
00002d33: PUSH4 0x6f6e7472
00002d38: PUSH2 0x6374
00002d3b: KECCAK256
00002d3c: PUSH19 0x657475726e656420616e20756e6b6e6f776e20
00002d50: PUSH23 0x616c75652066726f6d206f6e4552433131353552656365
00002d68: PUSH10 0x766564a265627a7a7231
00002d73: PC
00002d74: KECCAK256
00002d75: UNKNOWN(0xE8)
00002d76: UNKNOWN(0xA6)
00002d77: SAR
00002d78: SSTORE
00002d79: LOG1
00002d7a: SWAP5
00002d7b: UNKNOWN(0xB2)
00002d7c: DELEGATECALL
00002d7d: UNKNOWN(0x2D)
00002d7e: DUP4
00002d7f: UNKNOWN(0xBA)
00002d80: UNKNOWN(0xD5)
00002d81: UNKNOWN(0xCB)
00002d82: POP
00002d83: PUSH21 0x3bb2cae21f6bc9f7b12d8f0056879d500e64736f6c
00002d99: PUSH4 0x43000511
00002d9e: STOP
00002d9f: ORIGIN

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high access_control codex NFT burn lacks ownership check, enabling destruction of others’ tokens 85 no
view
evidence_json
{
    "evidence": "burn() deletes nfOwners[_ids[i]] for non\u2011fungibles without checking that _from owns the token.",
    "locations": [
        "contracts/Gala.sol:385",
        "contracts/Gala.sol:399",
        "contracts/Gala.sol:404",
        "contracts/Gala.sol:405"
    ],
    "recommendation": "Require nfOwners[_id] == _from for non\u2011fungible burns (or require operator approval from the actual owner). Consider also updating tokenSupply when burning if supply tracking is intended.",
    "exploit_scenario": "An attacker who owns any NFT of a base type T (or has approval for their own address) can call burn with _from=attacker and _ids containing a victim\u2019s NFT of the same base type. The function only checks _from approval and then deletes nfOwners[_ids[i]] without verifying ownership, burning the victim\u2019s token while merely decrementing the attacker\u2019s base-type balance."
}
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xcc10e401",
            "selector": "0xcc10e401",
            "calldata_variants": [
                "0xcc10e401",
                "0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe44591f0",
            "selector": "0xe44591f0",
            "calldata_variants": [
                "0xe44591f0",
                "0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe985e9c5",
            "selector": "0xe985e9c5",
            "calldata_variants": [
                "0xe985e9c5",
                "0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf242432a",
            "selector": "0xf242432a",
            "calldata_variants": [
                "0xf242432a",
                "0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa22cb465",
            "selector": "0xa22cb465",
            "calldata_variants": [
                "0xa22cb465",
                "0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9e7d531",
            "selector": "0xa9e7d531",
            "calldata_variants": [
                "0xa9e7d531",
                "0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xadebf6f2",
            "selector": "0xadebf6f2",
            "calldata_variants": [
                "0xadebf6f2",
                "0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7269a327",
            "selector": "0x7269a327",
            "calldata_variants": [
                "0x7269a327",
                "0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 11679,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d
call_targets: 0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xcc10e401",
            "selector": "0xcc10e401",
            "calldata_variants": [
                "0xcc10e401",
                "0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe44591f0",
            "selector": "0xe44591f0",
            "calldata_variants": [
                "0xe44591f0",
                "0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe985e9c5",
            "selector": "0xe985e9c5",
            "calldata_variants": [
                "0xe985e9c5",
                "0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf242432a",
            "selector": "0xf242432a",
            "calldata_variants": [
                "0xf242432a",
                "0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa22cb465",
            "selector": "0xa22cb465",
            "calldata_variants": [
                "0xa22cb465",
                "0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9e7d531",
            "selector": "0xa9e7d531",
            "calldata_variants": [
                "0xa9e7d531",
                "0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xadebf6f2",
            "selector": "0xadebf6f2",
            "calldata_variants": [
                "0xadebf6f2",
                "0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7269a327",
            "selector": "0x7269a327",
            "calldata_variants": [
                "0x7269a327",
                "0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 10734,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11244,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [
        {
            "pc": 11679,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 2
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d
call_targets: 0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x1ead18439ec558cfdd79a81ed62e96a22fe20d32d3caca3558767370e7ee9c4d",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xc36cf0cfcb5d905b8b513860db0cfe63f6cf9f5c"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xcc10e401",
            "selector": "0xcc10e401",
            "calldata_variants": [
                "0xcc10e401",
                "0xcc10e4010000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe44591f0",
            "selector": "0xe44591f0",
            "calldata_variants": [
                "0xe44591f0",
                "0xe44591f00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe985e9c5",
            "selector": "0xe985e9c5",
            "calldata_variants": [
                "0xe985e9c5",
                "0xe985e9c50000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf242432a",
            "selector": "0xf242432a",
            "calldata_variants": [
                "0xf242432a",
                "0xf242432a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa22cb465",
            "selector": "0xa22cb465",
            "calldata_variants": [
                "0xa22cb465",
                "0xa22cb4650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa9e7d531",
            "selector": "0xa9e7d531",
            "calldata_variants": [
                "0xa9e7d531",
                "0xa9e7d5310000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xadebf6f2",
            "selector": "0xadebf6f2",
            "calldata_variants": [
                "0xadebf6f2",
                "0xadebf6f20000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x7269a327",
            "selector": "0x7269a327",
            "calldata_variants": [
                "0x7269a327",
                "0x7269a3270000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 10734,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 11244,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": [
        {
            "pc": 11679,
            "type": "tx_origin_used"
        }
    ]
}
medium other codex Non‑fungible transfers accept arbitrary _value, breaking base‑type accounting 75 no
view
evidence_json
{
    "evidence": "Non\u2011fungible transfers update balances using _value but never enforce _value == 1.",
    "locations": [
        "contracts/Gala.sol:156",
        "contracts/Gala.sol:161",
        "contracts/Gala.sol:175",
        "contracts/Gala.sol:190",
        "contracts/Gala.sol:196"
    ],
    "recommendation": "Require _value == 1 for non\u2011fungible items in both single and batch transfers (or ignore _value and force it to 1) to preserve invariants between nfOwners and base\u2011type balances.",
    "exploit_scenario": "For non\u2011fungible IDs, safeTransferFrom and safeBatchTransferFrom update nfOwners but use the caller\u2011supplied _value to adjust base\u2011type balances. A sender can transfer an NFT with _value=0 to keep their base\u2011type balance while ownership moves, or otherwise desynchronize balances. If base\u2011type balances are relied on (e.g., for burns or supply accounting), this enables inconsistent state and potential abuse."
}
low auth codex Signature verification allows malleable signatures and packed-encoding ambiguity 65 no
view
evidence_json
{
    "evidence": "validateNodeSignature uses splitSignature without v/s validation and hashes with abi.encodePacked over a dynamic string.",
    "locations": [
        "contracts/SignatureVerifier.sol:5",
        "contracts/SignatureVerifier.sol:13",
        "contracts/SignatureVerifier.sol:14",
        "contracts/SignatureVerifier.sol:19"
    ],
    "recommendation": "Enforce v in {27,28} and s in the lower half\u2011order, reject signer == address(0), and switch to abi.encode with explicit domain separation and nonce management to prevent packed\u2011encoding collisions.",
    "exploit_scenario": "If validateNodeSignature is used for authorization, an attacker could present malleable signatures (high\u2011s or non\u2011standard v) or craft (nodeHardwareLicenseId, sigNonce) pairs that hash to the same abi.encodePacked output, reusing signatures for different data. This can weaken signature\u2011based access controls."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 5
}