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

Analysis Run

019ba9e0-bdf4-70c0-8613-6ae209cfb88c

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 10, 2026 9:47 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
Anyone can become executor and gain onlyAuth privileges (ITGToken)
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
38019 artifact.fetch complete 1 / 3 3 months ago
38020 proxy.resolve complete 1 / 3 3 months ago
38021 tool.cast_disasm complete 1 / 3 3 months ago
38022 analysis.bundle complete 1 / 3 3 months ago
38023 capability.graph complete 1 / 3 3 months ago
38024 detector.run complete 1 / 3 3 months ago
38025 validation.fork complete 1 / 3 3 months ago
38169 report.consolidate complete 1 / 6 3 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
4
No findings?
no
Summary
Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.
View stdout
{"no_findings":false,"summary":"Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.","findings":[{"severity":"critical","category":"access_control","title":"Anyone can become executor and gain onlyAuth privileges (ITGToken)","exploit_scenario":"Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner’s balance.","recommendation":"Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.","evidence":"`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.","locations":["contracts/Contract.sol:249","contracts/Contract.sol:851","contracts/Contract.sol:835","contracts/Contract.sol:881"]},{"severity":"medium","category":"access_control","title":"Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable","exploit_scenario":"`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state.","recommendation":"Initialize `owner` in each contract’s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.","evidence":"`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.","locations":["contracts/Contract.sol:244","contracts/Contract.sol:255","contracts/Contract.sol:394","contracts/Contract.sol:486"]},{"severity":"medium","category":"access_control","title":"Token lock bypass via transferFrom ignores locked holder","exploit_scenario":"When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user’s tokens while the lock is active, bypassing the intended restriction.","recommendation":"In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).","evidence":"`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.","locations":["contracts/Contract.sol:805","contracts/Contract.sol:817"]},{"severity":"medium","category":"math","title":"Division by zero and mispricing in 2nd/4th crowdsale pricing","exploit_scenario":"In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing.","recommendation":"Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.","evidence":"Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.","locations":["contracts/Contract.sol:343","contracts/Contract.sol:353"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-jshsl4x5
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019baa61-232b-7f13-85f5-1de96650979c
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Preparing to read instructions**
exec
/bin/bash -lc ls in /tmp/codex-jshsl4x5 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-jshsl4x5 succeeded in 5ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
pragma solidity ^0.4.15;

contract ERC20 {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function allowance(address owner, address spender) constant returns (uint);

  function transfer(address to, uint value) returns (bool ok);
  function transferFrom(address from, address to, uint value) returns (bool ok);
  function approve(address spender, uint value) returns (bool ok);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}


thinking
**Analyzing access control and calculation vulnerabilities**

I'm identifying key security issues where some contracts lack proper owner initialization, letting attackers seize control via setOwner or setExecutor calls. This can lead to critical access escalation, token draining through manipulated fallback calls, and denial-of-service via division-by-zero bugs in sale pricing. I'm focusing on how these gaps in constructor setups and permission checks combine to create serious risks across ITGToken and dependent contracts.
exec
/bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-jshsl4x5 succeeded in 30ms:
     1	pragma solidity ^0.4.15;
     2	
     3	contract ERC20 {
     4	  uint public totalSupply;
     5	  function balanceOf(address who) constant returns (uint);
     6	  function allowance(address owner, address spender) constant returns (uint);
     7	
     8	  function transfer(address to, uint value) returns (bool ok);
     9	  function transferFrom(address from, address to, uint value) returns (bool ok);
    10	  function approve(address spender, uint value) returns (bool ok);
    11	  event Transfer(address indexed from, address indexed to, uint value);
    12	  event Approval(address indexed owner, address indexed spender, uint value);
    13	}
    14	
    15	contract SafeMath {
    16	    function add(uint256 x, uint256 y) constant internal returns (uint256 z) {
    17	        assert((z = x + y) >= x);
    18	    }
    19	
    20	    function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {

thinking
**Summarizing detailed security findings**

I’m gathering comprehensive security issues from Authable, ITGToken, CrowdSale, Games, and Voting contracts, focusing on critical access controls like executor and owner privileges, lock bypass in token transfers, and division-by-zero bugs. I’m organizing all findings into a precise JSON report with severity, categories, exploit scenarios, recommendations, and file locations to provide the user a clear, actionable summary without code edits.
codex
{"no_findings":false,"summary":"Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.","findings":[{"severity":"critical","category":"access_control","title":"Anyone can become executor and gain onlyAuth privileges (ITGToken)","exploit_scenario":"Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner’s balance.","recommendation":"Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.","evidence":"`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.","locations":["contracts/Contract.sol:249","contracts/Contract.sol:851","contracts/Contract.sol:835","contracts/Contract.sol:881"]},{"severity":"medium","category":"access_control","title":"Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable","exploit_scenario":"`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state.","recommendation":"Initialize `owner` in each contract’s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.","evidence":"`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.","locations":["contracts/Contract.sol:244","contracts/Contract.sol:255","contracts/Contract.sol:394","contracts/Contract.sol:486"]},{"severity":"medium","category":"access_control","title":"Token lock bypass via transferFrom ignores locked holder","exploit_scenario":"When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user’s tokens while the lock is active, bypassing the intended restriction.","recommendation":"In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).","evidence":"`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.","locations":["contracts/Contract.sol:805","contracts/Contract.sol:817"]},{"severity":"medium","category":"math","title":"Division by zero and mispricing in 2nd/4th crowdsale pricing","exploit_scenario":"In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing.","recommendation":"Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.","evidence":"Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.","locations":["contracts/Contract.sol:343","contracts/Contract.sol:353"]}]}
tokens used
36,317
Metadata
{
    "codex": {
        "ran_at": "2026-01-11T00:09:20.188892+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.",
    "raw_final": {
        "summary": "Found four issues: a critical executor takeover leading to token drain, unsafe initial ownership in auxiliary contracts, transfer lock bypass via transferFrom, and division-by-zero/mispricing in price sales.",
        "findings": [
            {
                "title": "Anyone can become executor and gain onlyAuth privileges (ITGToken)",
                "category": "access_control",
                "evidence": "`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.",
                "severity": "critical",
                "locations": [
                    "contracts/Contract.sol:249",
                    "contracts/Contract.sol:851",
                    "contracts/Contract.sol:835",
                    "contracts/Contract.sol:881"
                ],
                "recommendation": "Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.",
                "exploit_scenario": "Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner\u2019s balance."
            },
            {
                "title": "Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable",
                "category": "access_control",
                "evidence": "`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:244",
                    "contracts/Contract.sol:255",
                    "contracts/Contract.sol:394",
                    "contracts/Contract.sol:486"
                ],
                "recommendation": "Initialize `owner` in each contract\u2019s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.",
                "exploit_scenario": "`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state."
            },
            {
                "title": "Token lock bypass via transferFrom ignores locked holder",
                "category": "access_control",
                "evidence": "`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:805",
                    "contracts/Contract.sol:817"
                ],
                "recommendation": "In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).",
                "exploit_scenario": "When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user\u2019s tokens while the lock is active, bypassing the intended restriction."
            },
            {
                "title": "Division by zero and mispricing in 2nd/4th crowdsale pricing",
                "category": "math",
                "evidence": "Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:343",
                    "contracts/Contract.sol:353"
                ],
                "recommendation": "Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.",
                "exploit_scenario": "In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
12
EXT*/BALANCE
11
Total opcodes
4725
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLDATASIZE
00000006: ISZERO
00000007: PUSH2 0x0173
0000000a: JUMPI
0000000b: PUSH1 0x00
0000000d: CALLDATALOAD
0000000e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000002c: SWAP1
0000002d: DIV
0000002e: PUSH4 0xffffffff
00000033: AND
00000034: DUP1
00000035: PUSH4 0x0335d533
0000003a: EQ
0000003b: PUSH2 0x0516
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x06fdde03
00000045: EQ
00000046: PUSH2 0x052b
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0x095ea7b3
00000050: EQ
00000051: PUSH2 0x055c
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0x13af4035
0000005b: EQ
0000005c: PUSH2 0x05b6
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0x18160ddd
00000066: EQ
00000067: PUSH2 0x05ef
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0x1c3c0ea8
00000071: EQ
00000072: PUSH2 0x0618
00000075: JUMPI
00000076: DUP1
00000077: PUSH4 0x200d2ed2
0000007c: EQ
0000007d: PUSH2 0x0651
00000080: JUMPI
00000081: DUP1
00000082: PUSH4 0x23b872dd
00000087: EQ
00000088: PUSH2 0x0688
0000008b: JUMPI
0000008c: DUP1
0000008d: PUSH4 0x313ce567
00000092: EQ
00000093: PUSH2 0x0701
00000096: JUMPI
00000097: DUP1
00000098: PUSH4 0x42966c68
0000009d: EQ
0000009e: PUSH2 0x072a
000000a1: JUMPI
000000a2: DUP1
000000a3: PUSH4 0x4369a2c2
000000a8: EQ
000000a9: PUSH2 0x074d
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0x4c524be4
000000b3: EQ
000000b4: PUSH2 0x0786
000000b7: JUMPI
000000b8: DUP1
000000b9: PUSH4 0x55aff5ba
000000be: EQ
000000bf: PUSH2 0x07a9
000000c2: JUMPI
000000c3: DUP1
000000c4: PUSH4 0x607a124f
000000c9: EQ
000000ca: PUSH2 0x07d2
000000cd: JUMPI
000000ce: DUP1
000000cf: PUSH4 0x6997d166
000000d4: EQ
000000d5: PUSH2 0x0867
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x6fceecf8
000000df: EQ
000000e0: PUSH2 0x0893
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x70a08231
000000ea: EQ
000000eb: PUSH2 0x08e0
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x72159335
000000f5: EQ
000000f6: PUSH2 0x092d
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x8da5cb5b
00000100: EQ
00000101: PUSH2 0x097d
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x945c7c59
0000010b: EQ
0000010c: PUSH2 0x09d2
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x95d89b41
00000116: EQ
00000117: PUSH2 0x0a10
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0xa0712d68
00000121: EQ
00000122: PUSH2 0x0a41
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0xa9059cbb
0000012c: EQ
0000012d: PUSH2 0x0a64
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0xb5a9de6e
00000137: EQ
00000138: PUSH2 0x0abe
0000013b: JUMPI
0000013c: DUP1
0000013d: PUSH4 0xc34c08e5
00000142: EQ
00000143: PUSH2 0x0ae7
00000146: JUMPI
00000147: DUP1
00000148: PUSH4 0xdd62ed3e
0000014d: EQ
0000014e: PUSH2 0x0b3c
00000151: JUMPI
00000152: DUP1
00000153: PUSH4 0xe223facb
00000158: EQ
00000159: PUSH2 0x0ba8
0000015c: JUMPI
0000015d: DUP1
0000015e: PUSH4 0xed02dded
00000163: EQ
00000164: PUSH2 0x0bcb
00000167: JUMPI
00000168: DUP1
00000169: PUSH4 0xfe213712
0000016e: EQ
0000016f: PUSH2 0x0c0d
00000172: JUMPI
00000173: JUMPDEST
00000174: JUMPDEST
00000175: PUSH1 0x0c
00000177: SLOAD
00000178: CALLVALUE
00000179: LT
0000017a: ISZERO
0000017b: PUSH2 0x0183
0000017e: JUMPI
0000017f: PUSH1 0x00
00000181: DUP1
00000182: REVERT
00000183: JUMPDEST
00000184: PUSH1 0x00
00000186: PUSH1 0x02
00000188: DUP2
00000189: GT
0000018a: ISZERO
0000018b: PUSH2 0x0190
0000018e: JUMPI
0000018f: INVALID
00000190: JUMPDEST
00000191: PUSH1 0x08
00000193: PUSH1 0x00
00000195: SWAP1
00000196: SLOAD
00000197: SWAP1
00000198: PUSH2 0x0100
0000019b: EXP
0000019c: SWAP1
0000019d: DIV
0000019e: PUSH1 0xff
000001a0: AND
000001a1: PUSH1 0x02
000001a3: DUP2
000001a4: GT
000001a5: ISZERO
000001a6: PUSH2 0x01ab
000001a9: JUMPI
000001aa: INVALID
000001ab: JUMPDEST
000001ac: EQ
000001ad: ISZERO
000001ae: PUSH2 0x033e
000001b1: JUMPI
000001b2: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72
000001d3: CALLER
000001d4: PUSH1 0x00
000001d6: CALLVALUE
000001d7: PUSH1 0x01
000001d9: PUSH1 0x40
000001db: MLOAD
000001dc: DUP1
000001dd: DUP6
000001de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000001f3: AND
000001f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000209: AND
0000020a: DUP2
0000020b: MSTORE
0000020c: PUSH1 0x20
0000020e: ADD
0000020f: DUP5
00000210: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000225: AND
00000226: DUP2
00000227: MSTORE
00000228: PUSH1 0x20
0000022a: ADD
0000022b: DUP4
0000022c: DUP2
0000022d: MSTORE
0000022e: PUSH1 0x20
00000230: ADD
00000231: DUP3
00000232: PUSH1 0xff
00000234: AND
00000235: DUP2
00000236: MSTORE
00000237: PUSH1 0x20
00000239: ADD
0000023a: SWAP5
0000023b: POP
0000023c: POP
0000023d: POP
0000023e: POP
0000023f: POP
00000240: PUSH1 0x40
00000242: MLOAD
00000243: DUP1
00000244: SWAP2
00000245: SUB
00000246: SWAP1
00000247: LOG1
00000248: PUSH2 0x0339
0000024b: PUSH1 0x08
0000024d: PUSH1 0x01
0000024f: SWAP1
00000250: SLOAD
00000251: SWAP1
00000252: PUSH2 0x0100
00000255: EXP
00000256: SWAP1
00000257: DIV
00000258: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000026d: AND
0000026e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000283: AND
00000284: PUSH4 0x7562b0cf
00000289: CALLER
0000028a: CALLVALUE
0000028b: PUSH1 0x00
0000028d: PUSH1 0x40
0000028f: MLOAD
00000290: PUSH1 0x20
00000292: ADD
00000293: MSTORE
00000294: PUSH1 0x40
00000296: MLOAD
00000297: DUP4
00000298: PUSH4 0xffffffff
0000029d: AND
0000029e: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000002bc: MUL
000002bd: DUP2
000002be: MSTORE
000002bf: PUSH1 0x04
000002c1: ADD
000002c2: DUP1
000002c3: DUP4
000002c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002d9: AND
000002da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000002ef: AND
000002f0: DUP2
000002f1: MSTORE
000002f2: PUSH1 0x20
000002f4: ADD
000002f5: DUP3
000002f6: DUP2
000002f7: MSTORE
000002f8: PUSH1 0x20
000002fa: ADD
000002fb: SWAP3
000002fc: POP
000002fd: POP
000002fe: POP
000002ff: PUSH1 0x20
00000301: PUSH1 0x40
00000303: MLOAD
00000304: DUP1
00000305: DUP4
00000306: SUB
00000307: DUP2
00000308: PUSH1 0x00
0000030a: DUP8
0000030b: DUP1
0000030c: EXTCODESIZE
0000030d: ISZERO
0000030e: ISZERO
0000030f: PUSH2 0x0317
00000312: JUMPI
00000313: PUSH1 0x00
00000315: DUP1
00000316: REVERT
00000317: JUMPDEST
00000318: PUSH2 0x02c6
0000031b: GAS
0000031c: SUB
0000031d: CALL
0000031e: ISZERO
0000031f: ISZERO
00000320: PUSH2 0x0328
00000323: JUMPI
00000324: PUSH1 0x00
00000326: DUP1
00000327: REVERT
00000328: JUMPDEST
00000329: POP
0000032a: POP
0000032b: POP
0000032c: PUSH1 0x40
0000032e: MLOAD
0000032f: DUP1
00000330: MLOAD
00000331: SWAP1
00000332: POP
00000333: PUSH1 0x01
00000335: PUSH2 0x0c22
00000338: JUMP
00000339: JUMPDEST
0000033a: PUSH2 0x0513
0000033d: JUMP
0000033e: JUMPDEST
0000033f: PUSH1 0x01
00000341: PUSH1 0x02
00000343: DUP2
00000344: GT
00000345: ISZERO
00000346: PUSH2 0x034b
00000349: JUMPI
0000034a: INVALID
0000034b: JUMPDEST
0000034c: PUSH1 0x08
0000034e: PUSH1 0x00
00000350: SWAP1
00000351: SLOAD
00000352: SWAP1
00000353: PUSH2 0x0100
00000356: EXP
00000357: SWAP1
00000358: DIV
00000359: PUSH1 0xff
0000035b: AND
0000035c: PUSH1 0x02
0000035e: DUP2
0000035f: GT
00000360: ISZERO
00000361: PUSH2 0x0366
00000364: JUMPI
00000365: INVALID
00000366: JUMPDEST
00000367: EQ
00000368: ISZERO
00000369: PUSH2 0x04df
0000036c: JUMPI
0000036d: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72
0000038e: CALLER
0000038f: PUSH1 0x00
00000391: CALLVALUE
00000392: PUSH1 0x01
00000394: PUSH1 0x40
00000396: MLOAD
00000397: DUP1
00000398: DUP6
00000399: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003ae: AND
000003af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003c4: AND
000003c5: DUP2
000003c6: MSTORE
000003c7: PUSH1 0x20
000003c9: ADD
000003ca: DUP5
000003cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000003e0: AND
000003e1: DUP2
000003e2: MSTORE
000003e3: PUSH1 0x20
000003e5: ADD
000003e6: DUP4
000003e7: DUP2
000003e8: MSTORE
000003e9: PUSH1 0x20
000003eb: ADD
000003ec: DUP3
000003ed: PUSH1 0xff
000003ef: AND
000003f0: DUP2
000003f1: MSTORE
000003f2: PUSH1 0x20
000003f4: ADD
000003f5: SWAP5
000003f6: POP
000003f7: POP
000003f8: POP
000003f9: POP
000003fa: POP
000003fb: PUSH1 0x40
000003fd: MLOAD
000003fe: DUP1
000003ff: SWAP2
00000400: SUB
00000401: SWAP1
00000402: LOG1
00000403: PUSH1 0x09
00000405: PUSH1 0x00
00000407: SWAP1
00000408: SLOAD
00000409: SWAP1
0000040a: PUSH2 0x0100
0000040d: EXP
0000040e: SWAP1
0000040f: DIV
00000410: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000425: AND
00000426: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000043b: AND
0000043c: PUSH4 0x7562b0cf
00000441: CALLER
00000442: CALLVALUE
00000443: PUSH1 0x40
00000445: MLOAD
00000446: DUP4
00000447: PUSH4 0xffffffff
0000044c: AND
0000044d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000046b: MUL
0000046c: DUP2
0000046d: MSTORE
0000046e: PUSH1 0x04
00000470: ADD
00000471: DUP1
00000472: DUP4
00000473: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000488: AND
00000489: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000049e: AND
0000049f: DUP2
000004a0: MSTORE
000004a1: PUSH1 0x20
000004a3: ADD
000004a4: DUP3
000004a5: DUP2
000004a6: MSTORE
000004a7: PUSH1 0x20
000004a9: ADD
000004aa: SWAP3
000004ab: POP
000004ac: POP
000004ad: POP
000004ae: PUSH1 0x00
000004b0: PUSH1 0x40
000004b2: MLOAD
000004b3: DUP1
000004b4: DUP4
000004b5: SUB
000004b6: DUP2
000004b7: PUSH1 0x00
000004b9: DUP8
000004ba: DUP1
000004bb: EXTCODESIZE
000004bc: ISZERO
000004bd: ISZERO
000004be: PUSH2 0x04c6
000004c1: JUMPI
000004c2: PUSH1 0x00
000004c4: DUP1
000004c5: REVERT
000004c6: JUMPDEST
000004c7: PUSH2 0x02c6
000004ca: GAS
000004cb: SUB
000004cc: CALL
000004cd: ISZERO
000004ce: ISZERO
000004cf: PUSH2 0x04d7
000004d2: JUMPI
000004d3: PUSH1 0x00
000004d5: DUP1
000004d6: REVERT
000004d7: JUMPDEST
000004d8: POP
000004d9: POP
000004da: POP
000004db: PUSH2 0x0512
000004de: JUMP
000004df: JUMPDEST
000004e0: PUSH1 0x02
000004e2: DUP1
000004e3: DUP2
000004e4: GT
000004e5: ISZERO
000004e6: PUSH2 0x04eb
000004e9: JUMPI
000004ea: INVALID
000004eb: JUMPDEST
000004ec: PUSH1 0x08
000004ee: PUSH1 0x00
000004f0: SWAP1
000004f1: SLOAD
000004f2: SWAP1
000004f3: PUSH2 0x0100
000004f6: EXP
000004f7: SWAP1
000004f8: DIV
000004f9: PUSH1 0xff
000004fb: AND
000004fc: PUSH1 0x02
000004fe: DUP2
000004ff: GT
00000500: ISZERO
00000501: PUSH2 0x0506
00000504: JUMPI
00000505: INVALID
00000506: JUMPDEST
00000507: EQ
00000508: ISZERO
00000509: PUSH2 0x0511
0000050c: JUMPI
0000050d: PUSH1 0x00
0000050f: DUP1
00000510: REVERT
00000511: JUMPDEST
00000512: JUMPDEST
00000513: JUMPDEST
00000514: JUMPDEST
00000515: STOP
00000516: JUMPDEST
00000517: CALLVALUE
00000518: ISZERO
00000519: PUSH2 0x0521
0000051c: JUMPI
0000051d: PUSH1 0x00
0000051f: DUP1
00000520: REVERT
00000521: JUMPDEST
00000522: PUSH2 0x0529
00000525: PUSH2 0x119d
00000528: JUMP
00000529: JUMPDEST
0000052a: STOP
0000052b: JUMPDEST
0000052c: CALLVALUE
0000052d: ISZERO
0000052e: PUSH2 0x0536
00000531: JUMPI
00000532: PUSH1 0x00
00000534: DUP1
00000535: REVERT
00000536: JUMPDEST
00000537: PUSH2 0x053e
0000053a: PUSH2 0x128a
0000053d: JUMP
0000053e: JUMPDEST
0000053f: PUSH1 0x40
00000541: MLOAD
00000542: DUP1
00000543: DUP3
00000544: PUSH1 0x00
00000546: NOT
00000547: AND
00000548: PUSH1 0x00
0000054a: NOT
0000054b: AND
0000054c: DUP2
0000054d: MSTORE
0000054e: PUSH1 0x20
00000550: ADD
00000551: SWAP2
00000552: POP
00000553: POP
00000554: PUSH1 0x40
00000556: MLOAD
00000557: DUP1
00000558: SWAP2
00000559: SUB
0000055a: SWAP1
0000055b: RETURN
0000055c: JUMPDEST
0000055d: CALLVALUE
0000055e: ISZERO
0000055f: PUSH2 0x0567
00000562: JUMPI
00000563: PUSH1 0x00
00000565: DUP1
00000566: REVERT
00000567: JUMPDEST
00000568: PUSH2 0x059c
0000056b: PUSH1 0x04
0000056d: DUP1
0000056e: DUP1
0000056f: CALLDATALOAD
00000570: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000585: AND
00000586: SWAP1
00000587: PUSH1 0x20
00000589: ADD
0000058a: SWAP1
0000058b: SWAP2
0000058c: SWAP1
0000058d: DUP1
0000058e: CALLDATALOAD
0000058f: SWAP1
00000590: PUSH1 0x20
00000592: ADD
00000593: SWAP1
00000594: SWAP2
00000595: SWAP1
00000596: POP
00000597: POP
00000598: PUSH2 0x1290
0000059b: JUMP
0000059c: JUMPDEST
0000059d: PUSH1 0x40
0000059f: MLOAD
000005a0: DUP1
000005a1: DUP3
000005a2: ISZERO
000005a3: ISZERO
000005a4: ISZERO
000005a5: ISZERO
000005a6: DUP2
000005a7: MSTORE
000005a8: PUSH1 0x20
000005aa: ADD
000005ab: SWAP2
000005ac: POP
000005ad: POP
000005ae: PUSH1 0x40
000005b0: MLOAD
000005b1: DUP1
000005b2: SWAP2
000005b3: SUB
000005b4: SWAP1
000005b5: RETURN
000005b6: JUMPDEST
000005b7: CALLVALUE
000005b8: ISZERO
000005b9: PUSH2 0x05c1
000005bc: JUMPI
000005bd: PUSH1 0x00
000005bf: DUP1
000005c0: REVERT
000005c1: JUMPDEST
000005c2: PUSH2 0x05ed
000005c5: PUSH1 0x04
000005c7: DUP1
000005c8: DUP1
000005c9: CALLDATALOAD
000005ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005df: AND
000005e0: SWAP1
000005e1: PUSH1 0x20
000005e3: ADD
000005e4: SWAP1
000005e5: SWAP2
000005e6: SWAP1
000005e7: POP
000005e8: POP
000005e9: PUSH2 0x141a
000005ec: JUMP
000005ed: JUMPDEST
000005ee: STOP
000005ef: JUMPDEST
000005f0: CALLVALUE
000005f1: ISZERO
000005f2: PUSH2 0x05fa
000005f5: JUMPI
000005f6: PUSH1 0x00
000005f8: DUP1
000005f9: REVERT
000005fa: JUMPDEST
000005fb: PUSH2 0x0602
000005fe: PUSH2 0x14fe
00000601: JUMP
00000602: JUMPDEST
00000603: PUSH1 0x40
00000605: MLOAD
00000606: DUP1
00000607: DUP3
00000608: DUP2
00000609: MSTORE
0000060a: PUSH1 0x20
0000060c: ADD
0000060d: SWAP2
0000060e: POP
0000060f: POP
00000610: PUSH1 0x40
00000612: MLOAD
00000613: DUP1
00000614: SWAP2
00000615: SUB
00000616: SWAP1
00000617: RETURN
00000618: JUMPDEST
00000619: CALLVALUE
0000061a: ISZERO
0000061b: PUSH2 0x0623
0000061e: JUMPI
0000061f: PUSH1 0x00
00000621: DUP1
00000622: REVERT
00000623: JUMPDEST
00000624: PUSH2 0x064f
00000627: PUSH1 0x04
00000629: DUP1
0000062a: DUP1
0000062b: CALLDATALOAD
0000062c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000641: AND
00000642: SWAP1
00000643: PUSH1 0x20
00000645: ADD
00000646: SWAP1
00000647: SWAP2
00000648: SWAP1
00000649: POP
0000064a: POP
0000064b: PUSH2 0x1504
0000064e: JUMP
0000064f: JUMPDEST
00000650: STOP
00000651: JUMPDEST
00000652: CALLVALUE
00000653: ISZERO
00000654: PUSH2 0x065c
00000657: JUMPI
00000658: PUSH1 0x00
0000065a: DUP1
0000065b: REVERT
0000065c: JUMPDEST
0000065d: PUSH2 0x0664
00000660: PUSH2 0x1640
00000663: JUMP
00000664: JUMPDEST
00000665: PUSH1 0x40
00000667: MLOAD
00000668: DUP1
00000669: DUP3
0000066a: PUSH1 0x02
0000066c: DUP2
0000066d: GT
0000066e: ISZERO
0000066f: PUSH2 0x0674
00000672: JUMPI
00000673: INVALID
00000674: JUMPDEST
00000675: PUSH1 0xff
00000677: AND
00000678: DUP2
00000679: MSTORE
0000067a: PUSH1 0x20
0000067c: ADD
0000067d: SWAP2
0000067e: POP
0000067f: POP
00000680: PUSH1 0x40
00000682: MLOAD
00000683: DUP1
00000684: SWAP2
00000685: SUB
00000686: SWAP1
00000687: RETURN
00000688: JUMPDEST
00000689: CALLVALUE
0000068a: ISZERO
0000068b: PUSH2 0x0693
0000068e: JUMPI
0000068f: PUSH1 0x00
00000691: DUP1
00000692: REVERT
00000693: JUMPDEST
00000694: PUSH2 0x06e7
00000697: PUSH1 0x04
00000699: DUP1
0000069a: DUP1
0000069b: CALLDATALOAD
0000069c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006b1: AND
000006b2: SWAP1
000006b3: PUSH1 0x20
000006b5: ADD
000006b6: SWAP1
000006b7: SWAP2
000006b8: SWAP1
000006b9: DUP1
000006ba: CALLDATALOAD
000006bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000006d0: AND
000006d1: SWAP1
000006d2: PUSH1 0x20
000006d4: ADD
000006d5: SWAP1
000006d6: SWAP2
000006d7: SWAP1
000006d8: DUP1
000006d9: CALLDATALOAD
000006da: SWAP1
000006db: PUSH1 0x20
000006dd: ADD
000006de: SWAP1
000006df: SWAP2
000006e0: SWAP1
000006e1: POP
000006e2: POP
000006e3: PUSH2 0x1653
000006e6: JUMP
000006e7: JUMPDEST
000006e8: PUSH1 0x40
000006ea: MLOAD
000006eb: DUP1
000006ec: DUP3
000006ed: ISZERO
000006ee: ISZERO
000006ef: ISZERO
000006f0: ISZERO
000006f1: DUP2
000006f2: MSTORE
000006f3: PUSH1 0x20
000006f5: ADD
000006f6: SWAP2
000006f7: POP
000006f8: POP
000006f9: PUSH1 0x40
000006fb: MLOAD
000006fc: DUP1
000006fd: SWAP2
000006fe: SUB
000006ff: SWAP1
00000700: RETURN
00000701: JUMPDEST
00000702: CALLVALUE
00000703: ISZERO
00000704: PUSH2 0x070c
00000707: JUMPI
00000708: PUSH1 0x00
0000070a: DUP1
0000070b: REVERT
0000070c: JUMPDEST
0000070d: PUSH2 0x0714
00000710: PUSH2 0x1937
00000713: JUMP
00000714: JUMPDEST
00000715: PUSH1 0x40
00000717: MLOAD
00000718: DUP1
00000719: DUP3
0000071a: DUP2
0000071b: MSTORE
0000071c: PUSH1 0x20
0000071e: ADD
0000071f: SWAP2
00000720: POP
00000721: POP
00000722: PUSH1 0x40
00000724: MLOAD
00000725: DUP1
00000726: SWAP2
00000727: SUB
00000728: SWAP1
00000729: RETURN
0000072a: JUMPDEST
0000072b: CALLVALUE
0000072c: ISZERO
0000072d: PUSH2 0x0735
00000730: JUMPI
00000731: PUSH1 0x00
00000733: DUP1
00000734: REVERT
00000735: JUMPDEST
00000736: PUSH2 0x074b
00000739: PUSH1 0x04
0000073b: DUP1
0000073c: DUP1
0000073d: CALLDATALOAD
0000073e: SWAP1
0000073f: PUSH1 0x20
00000741: ADD
00000742: SWAP1
00000743: SWAP2
00000744: SWAP1
00000745: POP
00000746: POP
00000747: PUSH2 0x193d
0000074a: JUMP
0000074b: JUMPDEST
0000074c: STOP
0000074d: JUMPDEST
0000074e: CALLVALUE
0000074f: ISZERO
00000750: PUSH2 0x0758
00000753: JUMPI
00000754: PUSH1 0x00
00000756: DUP1
00000757: REVERT
00000758: JUMPDEST
00000759: PUSH2 0x0784
0000075c: PUSH1 0x04
0000075e: DUP1
0000075f: DUP1
00000760: CALLDATALOAD
00000761: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000776: AND
00000777: SWAP1
00000778: PUSH1 0x20
0000077a: ADD
0000077b: SWAP1
0000077c: SWAP2
0000077d: SWAP1
0000077e: POP
0000077f: POP
00000780: PUSH2 0x1a3c
00000783: JUMP
00000784: JUMPDEST
00000785: STOP
00000786: JUMPDEST
00000787: CALLVALUE
00000788: ISZERO
00000789: PUSH2 0x0791
0000078c: JUMPI
0000078d: PUSH1 0x00
0000078f: DUP1
00000790: REVERT
00000791: JUMPDEST
00000792: PUSH2 0x07a7
00000795: PUSH1 0x04
00000797: DUP1
00000798: DUP1
00000799: CALLDATALOAD
0000079a: SWAP1
0000079b: PUSH1 0x20
0000079d: ADD
0000079e: SWAP1
0000079f: SWAP2
000007a0: SWAP1
000007a1: POP
000007a2: POP
000007a3: PUSH2 0x1b4f
000007a6: JUMP
000007a7: JUMPDEST
000007a8: STOP
000007a9: JUMPDEST
000007aa: CALLVALUE
000007ab: ISZERO
000007ac: PUSH2 0x07b4
000007af: JUMPI
000007b0: PUSH1 0x00
000007b2: DUP1
000007b3: REVERT
000007b4: JUMPDEST
000007b5: PUSH2 0x07bc
000007b8: PUSH2 0x1cac
000007bb: JUMP
000007bc: JUMPDEST
000007bd: PUSH1 0x40
000007bf: MLOAD
000007c0: DUP1
000007c1: DUP3
000007c2: DUP2
000007c3: MSTORE
000007c4: PUSH1 0x20
000007c6: ADD
000007c7: SWAP2
000007c8: POP
000007c9: POP
000007ca: PUSH1 0x40
000007cc: MLOAD
000007cd: DUP1
000007ce: SWAP2
000007cf: SUB
000007d0: SWAP1
000007d1: RETURN
000007d2: JUMPDEST
000007d3: CALLVALUE
000007d4: ISZERO
000007d5: PUSH2 0x07dd
000007d8: JUMPI
000007d9: PUSH1 0x00
000007db: DUP1
000007dc: REVERT
000007dd: JUMPDEST
000007de: PUSH2 0x0865
000007e1: PUSH1 0x04
000007e3: DUP1
000007e4: DUP1
000007e5: CALLDATALOAD
000007e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000007fb: AND
000007fc: SWAP1
000007fd: PUSH1 0x20
000007ff: ADD
00000800: SWAP1
00000801: SWAP2
00000802: SWAP1
00000803: DUP1
00000804: CALLDATALOAD
00000805: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000081a: AND
0000081b: SWAP1
0000081c: PUSH1 0x20
0000081e: ADD
0000081f: SWAP1
00000820: SWAP2
00000821: SWAP1
00000822: DUP1
00000823: CALLDATALOAD
00000824: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000839: AND
0000083a: SWAP1
0000083b: PUSH1 0x20
0000083d: ADD
0000083e: SWAP1
0000083f: SWAP2
00000840: SWAP1
00000841: DUP1
00000842: CALLDATALOAD
00000843: PUSH1 0xff
00000845: AND
00000846: SWAP1
00000847: PUSH1 0x20
00000849: ADD
0000084a: SWAP1
0000084b: SWAP2
0000084c: SWAP1
0000084d: DUP1
0000084e: CALLDATALOAD
0000084f: SWAP1
00000850: PUSH1 0x20
00000852: ADD
00000853: SWAP1
00000854: SWAP2
00000855: SWAP1
00000856: DUP1
00000857: CALLDATALOAD
00000858: SWAP1
00000859: PUSH1 0x20
0000085b: ADD
0000085c: SWAP1
0000085d: SWAP2
0000085e: SWAP1
0000085f: POP
00000860: POP
00000861: PUSH2 0x1cb2
00000864: JUMP
00000865: JUMPDEST
00000866: STOP
00000867: JUMPDEST
00000868: CALLVALUE
00000869: ISZERO
0000086a: PUSH2 0x0872
0000086d: JUMPI
0000086e: PUSH1 0x00
00000870: DUP1
00000871: REVERT
00000872: JUMPDEST
00000873: PUSH2 0x0891
00000876: PUSH1 0x04
00000878: DUP1
00000879: DUP1
0000087a: CALLDATALOAD
0000087b: SWAP1
0000087c: PUSH1 0x20
0000087e: ADD
0000087f: SWAP1
00000880: SWAP2
00000881: SWAP1
00000882: DUP1
00000883: CALLDATALOAD
00000884: SWAP1
00000885: PUSH1 0x20
00000887: ADD
00000888: SWAP1
00000889: SWAP2
0000088a: SWAP1
0000088b: POP
0000088c: POP
0000088d: PUSH2 0x1e64
00000890: JUMP
00000891: JUMPDEST
00000892: STOP
00000893: JUMPDEST
00000894: CALLVALUE
00000895: ISZERO
00000896: PUSH2 0x089e
00000899: JUMPI
0000089a: PUSH1 0x00
0000089c: DUP1
0000089d: REVERT
0000089e: JUMPDEST
0000089f: PUSH2 0x08ca
000008a2: PUSH1 0x04
000008a4: DUP1
000008a5: DUP1
000008a6: CALLDATALOAD
000008a7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000008bc: AND
000008bd: SWAP1
000008be: PUSH1 0x20
000008c0: ADD
000008c1: SWAP1
000008c2: SWAP2
000008c3: SWAP1
000008c4: POP
000008c5: POP
000008c6: PUSH2 0x2049
000008c9: JUMP
000008ca: JUMPDEST
000008cb: PUSH1 0x40
000008cd: MLOAD
000008ce: DUP1
000008cf: DUP3
000008d0: DUP2
000008d1: MSTORE
000008d2: PUSH1 0x20
000008d4: ADD
000008d5: SWAP2
000008d6: POP
000008d7: POP
000008d8: PUSH1 0x40
000008da: MLOAD
000008db: DUP1
000008dc: SWAP2
000008dd: SUB
000008de: SWAP1
000008df: RETURN
000008e0: JUMPDEST
000008e1: CALLVALUE
000008e2: ISZERO
000008e3: PUSH2 0x08eb
000008e6: JUMPI
000008e7: PUSH1 0x00
000008e9: DUP1
000008ea: REVERT
000008eb: JUMPDEST
000008ec: PUSH2 0x0917
000008ef: PUSH1 0x04
000008f1: DUP1
000008f2: DUP1
000008f3: CALLDATALOAD
000008f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000909: AND
0000090a: SWAP1
0000090b: PUSH1 0x20
0000090d: ADD
0000090e: SWAP1
0000090f: SWAP2
00000910: SWAP1
00000911: POP
00000912: POP
00000913: PUSH2 0x2061
00000916: JUMP
00000917: JUMPDEST
00000918: PUSH1 0x40
0000091a: MLOAD
0000091b: DUP1
0000091c: DUP3
0000091d: DUP2
0000091e: MSTORE
0000091f: PUSH1 0x20
00000921: ADD
00000922: SWAP2
00000923: POP
00000924: POP
00000925: PUSH1 0x40
00000927: MLOAD
00000928: DUP1
00000929: SWAP2
0000092a: SUB
0000092b: SWAP1
0000092c: RETURN
0000092d: JUMPDEST
0000092e: CALLVALUE
0000092f: ISZERO
00000930: PUSH2 0x0938
00000933: JUMPI
00000934: PUSH1 0x00
00000936: DUP1
00000937: REVERT
00000938: JUMPDEST
00000939: PUSH2 0x097b
0000093c: PUSH1 0x04
0000093e: DUP1
0000093f: DUP1
00000940: CALLDATALOAD
00000941: SWAP1
00000942: PUSH1 0x20
00000944: ADD
00000945: SWAP1
00000946: SWAP2
00000947: SWAP1
00000948: DUP1
00000949: CALLDATALOAD
0000094a: SWAP1
0000094b: PUSH1 0x20
0000094d: ADD
0000094e: SWAP1
0000094f: SWAP2
00000950: SWAP1
00000951: DUP1
00000952: CALLDATALOAD
00000953: SWAP1
00000954: PUSH1 0x20
00000956: ADD
00000957: SWAP1
00000958: SWAP2
00000959: SWAP1
0000095a: DUP1
0000095b: CALLDATALOAD
0000095c: SWAP1
0000095d: PUSH1 0x20
0000095f: ADD
00000960: SWAP1
00000961: SWAP2
00000962: SWAP1
00000963: DUP1
00000964: CALLDATALOAD
00000965: SWAP1
00000966: PUSH1 0x20
00000968: ADD
00000969: SWAP1
0000096a: SWAP2
0000096b: SWAP1
0000096c: DUP1
0000096d: CALLDATALOAD
0000096e: SWAP1
0000096f: PUSH1 0x20
00000971: ADD
00000972: SWAP1
00000973: SWAP2
00000974: SWAP1
00000975: POP
00000976: POP
00000977: PUSH2 0x20ab
0000097a: JUMP
0000097b: JUMPDEST
0000097c: STOP
0000097d: JUMPDEST
0000097e: CALLVALUE
0000097f: ISZERO
00000980: PUSH2 0x0988
00000983: JUMPI
00000984: PUSH1 0x00
00000986: DUP1
00000987: REVERT
00000988: JUMPDEST
00000989: PUSH2 0x0990
0000098c: PUSH2 0x2235
0000098f: JUMP
00000990: JUMPDEST
00000991: PUSH1 0x40
00000993: MLOAD
00000994: DUP1
00000995: DUP3
00000996: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009ab: AND
000009ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000009c1: AND
000009c2: DUP2
000009c3: MSTORE
000009c4: PUSH1 0x20
000009c6: ADD
000009c7: SWAP2
000009c8: POP
000009c9: POP
000009ca: PUSH1 0x40
000009cc: MLOAD
000009cd: DUP1
000009ce: SWAP2
000009cf: SUB
000009d0: SWAP1
000009d1: RETURN
000009d2: JUMPDEST
000009d3: CALLVALUE
000009d4: ISZERO
000009d5: PUSH2 0x09dd
000009d8: JUMPI
000009d9: PUSH1 0x00
000009db: DUP1
000009dc: REVERT
000009dd: JUMPDEST
000009de: PUSH2 0x0a0e
000009e1: PUSH1 0x04
000009e3: DUP1
000009e4: DUP1
000009e5: CALLDATALOAD
000009e6: SWAP1
000009e7: PUSH1 0x20
000009e9: ADD
000009ea: SWAP1
000009eb: SWAP2
000009ec: SWAP1
000009ed: DUP1
000009ee: CALLDATALOAD
000009ef: SWAP1
000009f0: PUSH1 0x20
000009f2: ADD
000009f3: SWAP1
000009f4: SWAP2
000009f5: SWAP1
000009f6: DUP1
000009f7: CALLDATALOAD
000009f8: SWAP1
000009f9: PUSH1 0x20
000009fb: ADD
000009fc: SWAP1
000009fd: SWAP2
000009fe: SWAP1
000009ff: DUP1
00000a00: CALLDATALOAD
00000a01: SWAP1
00000a02: PUSH1 0x20
00000a04: ADD
00000a05: SWAP1
00000a06: SWAP2
00000a07: SWAP1
00000a08: POP
00000a09: POP
00000a0a: PUSH2 0x225b
00000a0d: JUMP
00000a0e: JUMPDEST
00000a0f: STOP
00000a10: JUMPDEST
00000a11: CALLVALUE
00000a12: ISZERO
00000a13: PUSH2 0x0a1b
00000a16: JUMPI
00000a17: PUSH1 0x00
00000a19: DUP1
00000a1a: REVERT
00000a1b: JUMPDEST
00000a1c: PUSH2 0x0a23
00000a1f: PUSH2 0x23d3
00000a22: JUMP
00000a23: JUMPDEST
00000a24: PUSH1 0x40
00000a26: MLOAD
00000a27: DUP1
00000a28: DUP3
00000a29: PUSH1 0x00
00000a2b: NOT
00000a2c: AND
00000a2d: PUSH1 0x00
00000a2f: NOT
00000a30: AND
00000a31: DUP2
00000a32: MSTORE
00000a33: PUSH1 0x20
00000a35: ADD
00000a36: SWAP2
00000a37: POP
00000a38: POP
00000a39: PUSH1 0x40
00000a3b: MLOAD
00000a3c: DUP1
00000a3d: SWAP2
00000a3e: SUB
00000a3f: SWAP1
00000a40: RETURN
00000a41: JUMPDEST
00000a42: CALLVALUE
00000a43: ISZERO
00000a44: PUSH2 0x0a4c
00000a47: JUMPI
00000a48: PUSH1 0x00
00000a4a: DUP1
00000a4b: REVERT
00000a4c: JUMPDEST
00000a4d: PUSH2 0x0a62
00000a50: PUSH1 0x04
00000a52: DUP1
00000a53: DUP1
00000a54: CALLDATALOAD
00000a55: SWAP1
00000a56: PUSH1 0x20
00000a58: ADD
00000a59: SWAP1
00000a5a: SWAP2
00000a5b: SWAP1
00000a5c: POP
00000a5d: POP
00000a5e: PUSH2 0x23d9
00000a61: JUMP
00000a62: JUMPDEST
00000a63: STOP
00000a64: JUMPDEST
00000a65: CALLVALUE
00000a66: ISZERO
00000a67: PUSH2 0x0a6f
00000a6a: JUMPI
00000a6b: PUSH1 0x00
00000a6d: DUP1
00000a6e: REVERT
00000a6f: JUMPDEST
00000a70: PUSH2 0x0aa4
00000a73: PUSH1 0x04
00000a75: DUP1
00000a76: DUP1
00000a77: CALLDATALOAD
00000a78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000a8d: AND
00000a8e: SWAP1
00000a8f: PUSH1 0x20
00000a91: ADD
00000a92: SWAP1
00000a93: SWAP2
00000a94: SWAP1
00000a95: DUP1
00000a96: CALLDATALOAD
00000a97: SWAP1
00000a98: PUSH1 0x20
00000a9a: ADD
00000a9b: SWAP1
00000a9c: SWAP2
00000a9d: SWAP1
00000a9e: POP
00000a9f: POP
00000aa0: PUSH2 0x24d8
00000aa3: JUMP
00000aa4: JUMPDEST
00000aa5: PUSH1 0x40
00000aa7: MLOAD
00000aa8: DUP1
00000aa9: DUP3
00000aaa: ISZERO
00000aab: ISZERO
00000aac: ISZERO
00000aad: ISZERO
00000aae: DUP2
00000aaf: MSTORE
00000ab0: PUSH1 0x20
00000ab2: ADD
00000ab3: SWAP2
00000ab4: POP
00000ab5: POP
00000ab6: PUSH1 0x40
00000ab8: MLOAD
00000ab9: DUP1
00000aba: SWAP2
00000abb: SUB
00000abc: SWAP1
00000abd: RETURN
00000abe: JUMPDEST
00000abf: CALLVALUE
00000ac0: ISZERO
00000ac1: PUSH2 0x0ac9
00000ac4: JUMPI
00000ac5: PUSH1 0x00
00000ac7: DUP1
00000ac8: REVERT
00000ac9: JUMPDEST
00000aca: PUSH2 0x0ad1
00000acd: PUSH2 0x26b0
00000ad0: JUMP
00000ad1: JUMPDEST
00000ad2: PUSH1 0x40
00000ad4: MLOAD
00000ad5: DUP1
00000ad6: DUP3
00000ad7: DUP2
00000ad8: MSTORE
00000ad9: PUSH1 0x20
00000adb: ADD
00000adc: SWAP2
00000add: POP
00000ade: POP
00000adf: PUSH1 0x40
00000ae1: MLOAD
00000ae2: DUP1
00000ae3: SWAP2
00000ae4: SUB
00000ae5: SWAP1
00000ae6: RETURN
00000ae7: JUMPDEST
00000ae8: CALLVALUE
00000ae9: ISZERO
00000aea: PUSH2 0x0af2
00000aed: JUMPI
00000aee: PUSH1 0x00
00000af0: DUP1
00000af1: REVERT
00000af2: JUMPDEST
00000af3: PUSH2 0x0afa
00000af6: PUSH2 0x26b6
00000af9: JUMP
00000afa: JUMPDEST
00000afb: PUSH1 0x40
00000afd: MLOAD
00000afe: DUP1
00000aff: DUP3
00000b00: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b15: AND
00000b16: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b2b: AND
00000b2c: DUP2
00000b2d: MSTORE
00000b2e: PUSH1 0x20
00000b30: ADD
00000b31: SWAP2
00000b32: POP
00000b33: POP
00000b34: PUSH1 0x40
00000b36: MLOAD
00000b37: DUP1
00000b38: SWAP2
00000b39: SUB
00000b3a: SWAP1
00000b3b: RETURN
00000b3c: JUMPDEST
00000b3d: CALLVALUE
00000b3e: ISZERO
00000b3f: PUSH2 0x0b47
00000b42: JUMPI
00000b43: PUSH1 0x00
00000b45: DUP1
00000b46: REVERT
00000b47: JUMPDEST
00000b48: PUSH2 0x0b92
00000b4b: PUSH1 0x04
00000b4d: DUP1
00000b4e: DUP1
00000b4f: CALLDATALOAD
00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b65: AND
00000b66: SWAP1
00000b67: PUSH1 0x20
00000b69: ADD
00000b6a: SWAP1
00000b6b: SWAP2
00000b6c: SWAP1
00000b6d: DUP1
00000b6e: CALLDATALOAD
00000b6f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000b84: AND
00000b85: SWAP1
00000b86: PUSH1 0x20
00000b88: ADD
00000b89: SWAP1
00000b8a: SWAP2
00000b8b: SWAP1
00000b8c: POP
00000b8d: POP
00000b8e: PUSH2 0x26dc
00000b91: JUMP
00000b92: JUMPDEST
00000b93: PUSH1 0x40
00000b95: MLOAD
00000b96: DUP1
00000b97: DUP3
00000b98: DUP2
00000b99: MSTORE
00000b9a: PUSH1 0x20
00000b9c: ADD
00000b9d: SWAP2
00000b9e: POP
00000b9f: POP
00000ba0: PUSH1 0x40
00000ba2: MLOAD
00000ba3: DUP1
00000ba4: SWAP2
00000ba5: SUB
00000ba6: SWAP1
00000ba7: RETURN
00000ba8: JUMPDEST
00000ba9: CALLVALUE
00000baa: ISZERO
00000bab: PUSH2 0x0bb3
00000bae: JUMPI
00000baf: PUSH1 0x00
00000bb1: DUP1
00000bb2: REVERT
00000bb3: JUMPDEST
00000bb4: PUSH2 0x0bc9
00000bb7: PUSH1 0x04
00000bb9: DUP1
00000bba: DUP1
00000bbb: CALLDATALOAD
00000bbc: SWAP1
00000bbd: PUSH1 0x20
00000bbf: ADD
00000bc0: SWAP1
00000bc1: SWAP2
00000bc2: SWAP1
00000bc3: POP
00000bc4: POP
00000bc5: PUSH2 0x2764
00000bc8: JUMP
00000bc9: JUMPDEST
00000bca: STOP
00000bcb: JUMPDEST
00000bcc: CALLVALUE
00000bcd: ISZERO
00000bce: PUSH2 0x0bd6
00000bd1: JUMPI
00000bd2: PUSH1 0x00
00000bd4: DUP1
00000bd5: REVERT
00000bd6: JUMPDEST
00000bd7: PUSH2 0x0c0b
00000bda: PUSH1 0x04
00000bdc: DUP1
00000bdd: DUP1
00000bde: CALLDATALOAD
00000bdf: SWAP1
00000be0: PUSH1 0x20
00000be2: ADD
00000be3: SWAP1
00000be4: SWAP2
00000be5: SWAP1
00000be6: DUP1
00000be7: CALLDATALOAD
00000be8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000bfd: AND
00000bfe: SWAP1
00000bff: PUSH1 0x20
00000c01: ADD
00000c02: SWAP1
00000c03: SWAP2
00000c04: SWAP1
00000c05: POP
00000c06: POP
00000c07: PUSH2 0x2906
00000c0a: JUMP
00000c0b: JUMPDEST
00000c0c: STOP
00000c0d: JUMPDEST
00000c0e: CALLVALUE
00000c0f: ISZERO
00000c10: PUSH2 0x0c18
00000c13: JUMPI
00000c14: PUSH1 0x00
00000c16: DUP1
00000c17: REVERT
00000c18: JUMPDEST
00000c19: PUSH2 0x0c20
00000c1c: PUSH2 0x2a7d
00000c1f: JUMP
00000c20: JUMPDEST
00000c21: STOP
00000c22: JUMPDEST
00000c23: PUSH1 0x00
00000c25: DUP3
00000c26: GT
00000c27: ISZERO
00000c28: PUSH2 0x1198
00000c2b: JUMPI
00000c2c: DUP1
00000c2d: ISZERO
00000c2e: PUSH2 0x0ee6
00000c31: JUMPI
00000c32: PUSH2 0x0c9c
00000c35: PUSH1 0x01
00000c37: PUSH1 0x00
00000c39: PUSH1 0x03
00000c3b: PUSH1 0x00
00000c3d: SWAP1
00000c3e: SLOAD
00000c3f: SWAP1
00000c40: PUSH2 0x0100
00000c43: EXP
00000c44: SWAP1
00000c45: DIV
00000c46: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c5b: AND
00000c5c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c71: AND
00000c72: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000c87: AND
00000c88: DUP2
00000c89: MSTORE
00000c8a: PUSH1 0x20
00000c8c: ADD
00000c8d: SWAP1
00000c8e: DUP2
00000c8f: MSTORE
00000c90: PUSH1 0x20
00000c92: ADD
00000c93: PUSH1 0x00
00000c95: KECCAK256
00000c96: SLOAD
00000c97: DUP4
00000c98: PUSH2 0x2b87
00000c9b: JUMP
00000c9c: JUMPDEST
00000c9d: PUSH1 0x01
00000c9f: PUSH1 0x00
00000ca1: PUSH1 0x03
00000ca3: PUSH1 0x00
00000ca5: SWAP1
00000ca6: SLOAD
00000ca7: SWAP1
00000ca8: PUSH2 0x0100
00000cab: EXP
00000cac: SWAP1
00000cad: DIV
00000cae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cc3: AND
00000cc4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cd9: AND
00000cda: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000cef: AND
00000cf0: DUP2
00000cf1: MSTORE
00000cf2: PUSH1 0x20
00000cf4: ADD
00000cf5: SWAP1
00000cf6: DUP2
00000cf7: MSTORE
00000cf8: PUSH1 0x20
00000cfa: ADD
00000cfb: PUSH1 0x00
00000cfd: KECCAK256
00000cfe: DUP2
00000cff: SWAP1
00000d00: SSTORE
00000d01: POP
00000d02: PUSH2 0x0d4a
00000d05: PUSH1 0x01
00000d07: PUSH1 0x00
00000d09: CALLER
00000d0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d1f: AND
00000d20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d35: AND
00000d36: DUP2
00000d37: MSTORE
00000d38: PUSH1 0x20
00000d3a: ADD
00000d3b: SWAP1
00000d3c: DUP2
00000d3d: MSTORE
00000d3e: PUSH1 0x20
00000d40: ADD
00000d41: PUSH1 0x00
00000d43: KECCAK256
00000d44: SLOAD
00000d45: DUP4
00000d46: PUSH2 0x2ba1
00000d49: JUMP
00000d4a: JUMPDEST
00000d4b: PUSH1 0x01
00000d4d: PUSH1 0x00
00000d4f: CALLER
00000d50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d65: AND
00000d66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000d7b: AND
00000d7c: DUP2
00000d7d: MSTORE
00000d7e: PUSH1 0x20
00000d80: ADD
00000d81: SWAP1
00000d82: DUP2
00000d83: MSTORE
00000d84: PUSH1 0x20
00000d86: ADD
00000d87: PUSH1 0x00
00000d89: KECCAK256
00000d8a: DUP2
00000d8b: SWAP1
00000d8c: SSTORE
00000d8d: POP
00000d8e: CALLER
00000d8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000da4: AND
00000da5: PUSH1 0x03
00000da7: PUSH1 0x00
00000da9: SWAP1
00000daa: SLOAD
00000dab: SWAP1
00000dac: PUSH2 0x0100
00000daf: EXP
00000db0: SWAP1
00000db1: DIV
00000db2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000dc7: AND
00000dc8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ddd: AND
00000dde: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000dff: DUP5
00000e00: PUSH1 0x40
00000e02: MLOAD
00000e03: DUP1
00000e04: DUP3
00000e05: DUP2
00000e06: MSTORE
00000e07: PUSH1 0x20
00000e09: ADD
00000e0a: SWAP2
00000e0b: POP
00000e0c: POP
00000e0d: PUSH1 0x40
00000e0f: MLOAD
00000e10: DUP1
00000e11: SWAP2
00000e12: SUB
00000e13: SWAP1
00000e14: LOG3
00000e15: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72
00000e36: PUSH1 0x03
00000e38: PUSH1 0x00
00000e3a: SWAP1
00000e3b: SLOAD
00000e3c: SWAP1
00000e3d: PUSH2 0x0100
00000e40: EXP
00000e41: SWAP1
00000e42: DIV
00000e43: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e58: AND
00000e59: CALLER
00000e5a: DUP5
00000e5b: PUSH1 0x02
00000e5d: PUSH1 0x40
00000e5f: MLOAD
00000e60: DUP1
00000e61: DUP6
00000e62: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e77: AND
00000e78: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000e8d: AND
00000e8e: DUP2
00000e8f: MSTORE
00000e90: PUSH1 0x20
00000e92: ADD
00000e93: DUP5
00000e94: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ea9: AND
00000eaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000ebf: AND
00000ec0: DUP2
00000ec1: MSTORE
00000ec2: PUSH1 0x20
00000ec4: ADD
00000ec5: DUP4
00000ec6: DUP2
00000ec7: MSTORE
00000ec8: PUSH1 0x20
00000eca: ADD
00000ecb: DUP3
00000ecc: PUSH1 0xff
00000ece: AND
00000ecf: DUP2
00000ed0: MSTORE
00000ed1: PUSH1 0x20
00000ed3: ADD
00000ed4: SWAP5
00000ed5: POP
00000ed6: POP
00000ed7: POP
00000ed8: POP
00000ed9: POP
00000eda: PUSH1 0x40
00000edc: MLOAD
00000edd: DUP1
00000ede: SWAP2
00000edf: SUB
00000ee0: SWAP1
00000ee1: LOG1
00000ee2: PUSH2 0x1197
00000ee5: JUMP
00000ee6: JUMPDEST
00000ee7: PUSH2 0x0f51
00000eea: PUSH1 0x01
00000eec: PUSH1 0x00
00000eee: PUSH1 0x03
00000ef0: PUSH1 0x00
00000ef2: SWAP1
00000ef3: SLOAD
00000ef4: SWAP1
00000ef5: PUSH2 0x0100
00000ef8: EXP
00000ef9: SWAP1
00000efa: DIV
00000efb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f10: AND
00000f11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f26: AND
00000f27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f3c: AND
00000f3d: DUP2
00000f3e: MSTORE
00000f3f: PUSH1 0x20
00000f41: ADD
00000f42: SWAP1
00000f43: DUP2
00000f44: MSTORE
00000f45: PUSH1 0x20
00000f47: ADD
00000f48: PUSH1 0x00
00000f4a: KECCAK256
00000f4b: SLOAD
00000f4c: DUP4
00000f4d: PUSH2 0x2ba1
00000f50: JUMP
00000f51: JUMPDEST
00000f52: PUSH1 0x01
00000f54: PUSH1 0x00
00000f56: PUSH1 0x03
00000f58: PUSH1 0x00
00000f5a: SWAP1
00000f5b: SLOAD
00000f5c: SWAP1
00000f5d: PUSH2 0x0100
00000f60: EXP
00000f61: SWAP1
00000f62: DIV
00000f63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f78: AND
00000f79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000f8e: AND
00000f8f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fa4: AND
00000fa5: DUP2
00000fa6: MSTORE
00000fa7: PUSH1 0x20
00000fa9: ADD
00000faa: SWAP1
00000fab: DUP2
00000fac: MSTORE
00000fad: PUSH1 0x20
00000faf: ADD
00000fb0: PUSH1 0x00
00000fb2: KECCAK256
00000fb3: DUP2
00000fb4: SWAP1
00000fb5: SSTORE
00000fb6: POP
00000fb7: PUSH2 0x0fff
00000fba: PUSH1 0x01
00000fbc: PUSH1 0x00
00000fbe: CALLER
00000fbf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fd4: AND
00000fd5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000fea: AND
00000feb: DUP2
00000fec: MSTORE
00000fed: PUSH1 0x20
00000fef: ADD
00000ff0: SWAP1
00000ff1: DUP2
00000ff2: MSTORE
00000ff3: PUSH1 0x20
00000ff5: ADD
00000ff6: PUSH1 0x00
00000ff8: KECCAK256
00000ff9: SLOAD
00000ffa: DUP4
00000ffb: PUSH2 0x2b87
00000ffe: JUMP
00000fff: JUMPDEST
00001000: PUSH1 0x01
00001002: PUSH1 0x00
00001004: CALLER
00001005: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000101a: AND
0000101b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001030: AND
00001031: DUP2
00001032: MSTORE
00001033: PUSH1 0x20
00001035: ADD
00001036: SWAP1
00001037: DUP2
00001038: MSTORE
00001039: PUSH1 0x20
0000103b: ADD
0000103c: PUSH1 0x00
0000103e: KECCAK256
0000103f: DUP2
00001040: SWAP1
00001041: SSTORE
00001042: POP
00001043: PUSH1 0x03
00001045: PUSH1 0x00
00001047: SWAP1
00001048: SLOAD
00001049: SWAP1
0000104a: PUSH2 0x0100
0000104d: EXP
0000104e: SWAP1
0000104f: DIV
00001050: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001065: AND
00001066: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000107b: AND
0000107c: CALLER
0000107d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001092: AND
00001093: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
000010b4: DUP5
000010b5: PUSH1 0x40
000010b7: MLOAD
000010b8: DUP1
000010b9: DUP3
000010ba: DUP2
000010bb: MSTORE
000010bc: PUSH1 0x20
000010be: ADD
000010bf: SWAP2
000010c0: POP
000010c1: POP
000010c2: PUSH1 0x40
000010c4: MLOAD
000010c5: DUP1
000010c6: SWAP2
000010c7: SUB
000010c8: SWAP1
000010c9: LOG3
000010ca: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72
000010eb: CALLER
000010ec: PUSH1 0x03
000010ee: PUSH1 0x00
000010f0: SWAP1
000010f1: SLOAD
000010f2: SWAP1
000010f3: PUSH2 0x0100
000010f6: EXP
000010f7: SWAP1
000010f8: DIV
000010f9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000110e: AND
0000110f: DUP5
00001110: PUSH1 0x02
00001112: PUSH1 0x40
00001114: MLOAD
00001115: DUP1
00001116: DUP6
00001117: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000112c: AND
0000112d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001142: AND
00001143: DUP2
00001144: MSTORE
00001145: PUSH1 0x20
00001147: ADD
00001148: DUP5
00001149: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000115e: AND
0000115f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001174: AND
00001175: DUP2
00001176: MSTORE
00001177: PUSH1 0x20
00001179: ADD
0000117a: DUP4
0000117b: DUP2
0000117c: MSTORE
0000117d: PUSH1 0x20
0000117f: ADD
00001180: DUP3
00001181: PUSH1 0xff
00001183: AND
00001184: DUP2
00001185: MSTORE
00001186: PUSH1 0x20
00001188: ADD
00001189: SWAP5
0000118a: POP
0000118b: POP
0000118c: POP
0000118d: POP
0000118e: POP
0000118f: PUSH1 0x40
00001191: MLOAD
00001192: DUP1
00001193: SWAP2
00001194: SUB
00001195: SWAP1
00001196: LOG1
00001197: JUMPDEST
00001198: JUMPDEST
00001199: JUMPDEST
0000119a: POP
0000119b: POP
0000119c: JUMP
0000119d: JUMPDEST
0000119e: PUSH2 0x1287
000011a1: PUSH1 0x08
000011a3: PUSH1 0x01
000011a5: SWAP1
000011a6: SLOAD
000011a7: SWAP1
000011a8: PUSH2 0x0100
000011ab: EXP
000011ac: SWAP1
000011ad: DIV
000011ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011c3: AND
000011c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000011d9: AND
000011da: PUSH4 0x59770438
000011df: CALLER
000011e0: PUSH1 0x00
000011e2: PUSH1 0x40
000011e4: MLOAD
000011e5: PUSH1 0x20
000011e7: ADD
000011e8: MSTORE
000011e9: PUSH1 0x40
000011eb: MLOAD
000011ec: DUP3
000011ed: PUSH4 0xffffffff
000011f2: AND
000011f3: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001211: MUL
00001212: DUP2
00001213: MSTORE
00001214: PUSH1 0x04
00001216: ADD
00001217: DUP1
00001218: DUP3
00001219: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000122e: AND
0000122f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001244: AND
00001245: DUP2
00001246: MSTORE
00001247: PUSH1 0x20
00001249: ADD
0000124a: SWAP2
0000124b: POP
0000124c: POP
0000124d: PUSH1 0x20
0000124f: PUSH1 0x40
00001251: MLOAD
00001252: DUP1
00001253: DUP4
00001254: SUB
00001255: DUP2
00001256: PUSH1 0x00
00001258: DUP8
00001259: DUP1
0000125a: EXTCODESIZE
0000125b: ISZERO
0000125c: ISZERO
0000125d: PUSH2 0x1265
00001260: JUMPI
00001261: PUSH1 0x00
00001263: DUP1
00001264: REVERT
00001265: JUMPDEST
00001266: PUSH2 0x02c6
00001269: GAS
0000126a: SUB
0000126b: CALL
0000126c: ISZERO
0000126d: ISZERO
0000126e: PUSH2 0x1276
00001271: JUMPI
00001272: PUSH1 0x00
00001274: DUP1
00001275: REVERT
00001276: JUMPDEST
00001277: POP
00001278: POP
00001279: POP
0000127a: PUSH1 0x40
0000127c: MLOAD
0000127d: DUP1
0000127e: MLOAD
0000127f: SWAP1
00001280: POP
00001281: PUSH1 0x01
00001283: PUSH2 0x0c22
00001286: JUMP
00001287: JUMPDEST
00001288: JUMPDEST
00001289: JUMP
0000128a: JUMPDEST
0000128b: PUSH1 0x07
0000128d: SLOAD
0000128e: DUP2
0000128f: JUMP
00001290: JUMPDEST
00001291: PUSH1 0x00
00001293: DUP1
00001294: DUP3
00001295: EQ
00001296: ISZERO
00001297: DUP1
00001298: ISZERO
00001299: PUSH2 0x131f
0000129c: JUMPI
0000129d: POP
0000129e: PUSH1 0x00
000012a0: PUSH1 0x02
000012a2: PUSH1 0x00
000012a4: CALLER
000012a5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012ba: AND
000012bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012d0: AND
000012d1: DUP2
000012d2: MSTORE
000012d3: PUSH1 0x20
000012d5: ADD
000012d6: SWAP1
000012d7: DUP2
000012d8: MSTORE
000012d9: PUSH1 0x20
000012db: ADD
000012dc: PUSH1 0x00
000012de: KECCAK256
000012df: PUSH1 0x00
000012e1: DUP6
000012e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000012f7: AND
000012f8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000130d: AND
0000130e: DUP2
0000130f: MSTORE
00001310: PUSH1 0x20
00001312: ADD
00001313: SWAP1
00001314: DUP2
00001315: MSTORE
00001316: PUSH1 0x20
00001318: ADD
00001319: PUSH1 0x00
0000131b: KECCAK256
0000131c: SLOAD
0000131d: EQ
0000131e: ISZERO
0000131f: JUMPDEST
00001320: ISZERO
00001321: PUSH2 0x1329
00001324: JUMPI
00001325: PUSH1 0x00
00001327: DUP1
00001328: REVERT
00001329: JUMPDEST
0000132a: DUP2
0000132b: PUSH1 0x02
0000132d: PUSH1 0x00
0000132f: CALLER
00001330: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001345: AND
00001346: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000135b: AND
0000135c: DUP2
0000135d: MSTORE
0000135e: PUSH1 0x20
00001360: ADD
00001361: SWAP1
00001362: DUP2
00001363: MSTORE
00001364: PUSH1 0x20
00001366: ADD
00001367: PUSH1 0x00
00001369: KECCAK256
0000136a: PUSH1 0x00
0000136c: DUP6
0000136d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001382: AND
00001383: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001398: AND
00001399: DUP2
0000139a: MSTORE
0000139b: PUSH1 0x20
0000139d: ADD
0000139e: SWAP1
0000139f: DUP2
000013a0: MSTORE
000013a1: PUSH1 0x20
000013a3: ADD
000013a4: PUSH1 0x00
000013a6: KECCAK256
000013a7: DUP2
000013a8: SWAP1
000013a9: SSTORE
000013aa: POP
000013ab: DUP3
000013ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013c1: AND
000013c2: CALLER
000013c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000013d8: AND
000013d9: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925
000013fa: DUP5
000013fb: PUSH1 0x40
000013fd: MLOAD
000013fe: DUP1
000013ff: DUP3
00001400: DUP2
00001401: MSTORE
00001402: PUSH1 0x20
00001404: ADD
00001405: SWAP2
00001406: POP
00001407: POP
00001408: PUSH1 0x40
0000140a: MLOAD
0000140b: DUP1
0000140c: SWAP2
0000140d: SUB
0000140e: SWAP1
0000140f: LOG3
00001410: PUSH1 0x01
00001412: SWAP1
00001413: POP
00001414: JUMPDEST
00001415: SWAP3
00001416: SWAP2
00001417: POP
00001418: POP
00001419: JUMP
0000141a: JUMPDEST
0000141b: PUSH1 0x00
0000141d: PUSH1 0x03
0000141f: PUSH1 0x00
00001421: SWAP1
00001422: SLOAD
00001423: SWAP1
00001424: PUSH2 0x0100
00001427: EXP
00001428: SWAP1
00001429: DIV
0000142a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000143f: AND
00001440: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001455: AND
00001456: EQ
00001457: DUP1
00001458: PUSH2 0x14ae
0000145b: JUMPI
0000145c: POP
0000145d: CALLER
0000145e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001473: AND
00001474: PUSH1 0x03
00001476: PUSH1 0x00
00001478: SWAP1
00001479: SLOAD
0000147a: SWAP1
0000147b: PUSH2 0x0100
0000147e: EXP
0000147f: SWAP1
00001480: DIV
00001481: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001496: AND
00001497: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014ac: AND
000014ad: EQ
000014ae: JUMPDEST
000014af: ISZERO
000014b0: ISZERO
000014b1: PUSH2 0x14b9
000014b4: JUMPI
000014b5: PUSH1 0x00
000014b7: DUP1
000014b8: REVERT
000014b9: JUMPDEST
000014ba: DUP1
000014bb: PUSH1 0x03
000014bd: PUSH1 0x00
000014bf: PUSH2 0x0100
000014c2: EXP
000014c3: DUP2
000014c4: SLOAD
000014c5: DUP2
000014c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014db: MUL
000014dc: NOT
000014dd: AND
000014de: SWAP1
000014df: DUP4
000014e0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000014f5: AND
000014f6: MUL
000014f7: OR
000014f8: SWAP1
000014f9: SSTORE
000014fa: POP
000014fb: JUMPDEST
000014fc: POP
000014fd: JUMP
000014fe: JUMPDEST
000014ff: PUSH1 0x00
00001501: SLOAD
00001502: DUP2
00001503: JUMP
00001504: JUMPDEST
00001505: PUSH1 0x00
00001507: PUSH1 0x04
00001509: PUSH1 0x00
0000150b: SWAP1
0000150c: SLOAD
0000150d: SWAP1
0000150e: PUSH2 0x0100
00001511: EXP
00001512: SWAP1
00001513: DIV
00001514: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001529: AND
0000152a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000153f: AND
00001540: EQ
00001541: DUP1
00001542: PUSH2 0x1598
00001545: JUMPI
00001546: POP
00001547: CALLER
00001548: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000155d: AND
0000155e: PUSH1 0x03
00001560: PUSH1 0x00
00001562: SWAP1
00001563: SLOAD
00001564: SWAP1
00001565: PUSH2 0x0100
00001568: EXP
00001569: SWAP1
0000156a: DIV
0000156b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001580: AND
00001581: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001596: AND
00001597: EQ
00001598: JUMPDEST
00001599: DUP1
0000159a: PUSH2 0x15f0
0000159d: JUMPI
0000159e: POP
0000159f: CALLER
000015a0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015b5: AND
000015b6: PUSH1 0x04
000015b8: PUSH1 0x00
000015ba: SWAP1
000015bb: SLOAD
000015bc: SWAP1
000015bd: PUSH2 0x0100
000015c0: EXP
000015c1: SWAP1
000015c2: DIV
000015c3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015d8: AND
000015d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000015ee: AND
000015ef: EQ
000015f0: JUMPDEST
000015f1: ISZERO
000015f2: ISZERO
000015f3: PUSH2 0x15fb
000015f6: JUMPI
000015f7: PUSH1 0x00
000015f9: DUP1
000015fa: REVERT
000015fb: JUMPDEST
000015fc: DUP1
000015fd: PUSH1 0x04
000015ff: PUSH1 0x00
00001601: PUSH2 0x0100
00001604: EXP
00001605: DUP2
00001606: SLOAD
00001607: DUP2
00001608: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000161d: MUL
0000161e: NOT
0000161f: AND
00001620: SWAP1
00001621: DUP4
00001622: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001637: AND
00001638: MUL
00001639: OR
0000163a: SWAP1
0000163b: SSTORE
0000163c: POP
0000163d: JUMPDEST
0000163e: POP
0000163f: JUMP
00001640: JUMPDEST
00001641: PUSH1 0x08
00001643: PUSH1 0x00
00001645: SWAP1
00001646: SLOAD
00001647: SWAP1
00001648: PUSH2 0x0100
0000164b: EXP
0000164c: SWAP1
0000164d: DIV
0000164e: PUSH1 0xff
00001650: AND
00001651: DUP2
00001652: JUMP
00001653: JUMPDEST
00001654: PUSH1 0x00
00001656: DUP1
00001657: TIMESTAMP
00001658: PUSH1 0x0b
0000165a: PUSH1 0x00
0000165c: CALLER
0000165d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001672: AND
00001673: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001688: AND
00001689: DUP2
0000168a: MSTORE
0000168b: PUSH1 0x20
0000168d: ADD
0000168e: SWAP1
0000168f: DUP2
00001690: MSTORE
00001691: PUSH1 0x20
00001693: ADD
00001694: PUSH1 0x00
00001696: KECCAK256
00001697: SLOAD
00001698: LT
00001699: ISZERO
0000169a: ISZERO
0000169b: PUSH2 0x16a3
0000169e: JUMPI
0000169f: PUSH1 0x00
000016a1: DUP1
000016a2: REVERT
000016a3: JUMPDEST
000016a4: PUSH1 0x02
000016a6: PUSH1 0x00
000016a8: DUP7
000016a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016be: AND
000016bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016d4: AND
000016d5: DUP2
000016d6: MSTORE
000016d7: PUSH1 0x20
000016d9: ADD
000016da: SWAP1
000016db: DUP2
000016dc: MSTORE
000016dd: PUSH1 0x20
000016df: ADD
000016e0: PUSH1 0x00
000016e2: KECCAK256
000016e3: PUSH1 0x00
000016e5: CALLER
000016e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000016fb: AND
000016fc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001711: AND
00001712: DUP2
00001713: MSTORE
00001714: PUSH1 0x20
00001716: ADD
00001717: SWAP1
00001718: DUP2
00001719: MSTORE
0000171a: PUSH1 0x20
0000171c: ADD
0000171d: PUSH1 0x00
0000171f: KECCAK256
00001720: SLOAD
00001721: SWAP1
00001722: POP
00001723: PUSH2 0x176b
00001726: PUSH1 0x01
00001728: PUSH1 0x00
0000172a: DUP7
0000172b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001740: AND
00001741: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001756: AND
00001757: DUP2
00001758: MSTORE
00001759: PUSH1 0x20
0000175b: ADD
0000175c: SWAP1
0000175d: DUP2
0000175e: MSTORE
0000175f: PUSH1 0x20
00001761: ADD
00001762: PUSH1 0x00
00001764: KECCAK256
00001765: SLOAD
00001766: DUP5
00001767: PUSH2 0x2ba1
0000176a: JUMP
0000176b: JUMPDEST
0000176c: PUSH1 0x01
0000176e: PUSH1 0x00
00001770: DUP7
00001771: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001786: AND
00001787: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000179c: AND
0000179d: DUP2
0000179e: MSTORE
0000179f: PUSH1 0x20
000017a1: ADD
000017a2: SWAP1
000017a3: DUP2
000017a4: MSTORE
000017a5: PUSH1 0x20
000017a7: ADD
000017a8: PUSH1 0x00
000017aa: KECCAK256
000017ab: DUP2
000017ac: SWAP1
000017ad: SSTORE
000017ae: POP
000017af: PUSH2 0x17f7
000017b2: PUSH1 0x01
000017b4: PUSH1 0x00
000017b6: DUP8
000017b7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017cc: AND
000017cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000017e2: AND
000017e3: DUP2
000017e4: MSTORE
000017e5: PUSH1 0x20
000017e7: ADD
000017e8: SWAP1
000017e9: DUP2
000017ea: MSTORE
000017eb: PUSH1 0x20
000017ed: ADD
000017ee: PUSH1 0x00
000017f0: KECCAK256
000017f1: SLOAD
000017f2: DUP5
000017f3: PUSH2 0x2b87
000017f6: JUMP
000017f7: JUMPDEST
000017f8: PUSH1 0x01
000017fa: PUSH1 0x00
000017fc: DUP8
000017fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001812: AND
00001813: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001828: AND
00001829: DUP2
0000182a: MSTORE
0000182b: PUSH1 0x20
0000182d: ADD
0000182e: SWAP1
0000182f: DUP2
00001830: MSTORE
00001831: PUSH1 0x20
00001833: ADD
00001834: PUSH1 0x00
00001836: KECCAK256
00001837: DUP2
00001838: SWAP1
00001839: SSTORE
0000183a: POP
0000183b: PUSH2 0x1844
0000183e: DUP2
0000183f: DUP5
00001840: PUSH2 0x2b87
00001843: JUMP
00001844: JUMPDEST
00001845: PUSH1 0x02
00001847: PUSH1 0x00
00001849: DUP8
0000184a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000185f: AND
00001860: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001875: AND
00001876: DUP2
00001877: MSTORE
00001878: PUSH1 0x20
0000187a: ADD
0000187b: SWAP1
0000187c: DUP2
0000187d: MSTORE
0000187e: PUSH1 0x20
00001880: ADD
00001881: PUSH1 0x00
00001883: KECCAK256
00001884: PUSH1 0x00
00001886: CALLER
00001887: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000189c: AND
0000189d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018b2: AND
000018b3: DUP2
000018b4: MSTORE
000018b5: PUSH1 0x20
000018b7: ADD
000018b8: SWAP1
000018b9: DUP2
000018ba: MSTORE
000018bb: PUSH1 0x20
000018bd: ADD
000018be: PUSH1 0x00
000018c0: KECCAK256
000018c1: DUP2
000018c2: SWAP1
000018c3: SSTORE
000018c4: POP
000018c5: DUP4
000018c6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018db: AND
000018dc: DUP6
000018dd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000018f2: AND
000018f3: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00001914: DUP6
00001915: PUSH1 0x40
00001917: MLOAD
00001918: DUP1
00001919: DUP3
0000191a: DUP2
0000191b: MSTORE
0000191c: PUSH1 0x20
0000191e: ADD
0000191f: SWAP2
00001920: POP
00001921: POP
00001922: PUSH1 0x40
00001924: MLOAD
00001925: DUP1
00001926: SWAP2
00001927: SUB
00001928: SWAP1
00001929: LOG3
0000192a: PUSH1 0x01
0000192c: SWAP2
0000192d: POP
0000192e: JUMPDEST
0000192f: JUMPDEST
00001930: POP
00001931: SWAP4
00001932: SWAP3
00001933: POP
00001934: POP
00001935: POP
00001936: JUMP
00001937: JUMPDEST
00001938: PUSH1 0x06
0000193a: SLOAD
0000193b: DUP2
0000193c: JUMP
0000193d: JUMPDEST
0000193e: PUSH1 0x03
00001940: PUSH1 0x00
00001942: SWAP1
00001943: SLOAD
00001944: SWAP1
00001945: PUSH2 0x0100
00001948: EXP
00001949: SWAP1
0000194a: DIV
0000194b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001960: AND
00001961: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001976: AND
00001977: CALLER
00001978: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000198d: AND
0000198e: EQ
0000198f: ISZERO
00001990: ISZERO
00001991: PUSH2 0x1999
00001994: JUMPI
00001995: PUSH1 0x00
00001997: DUP1
00001998: REVERT
00001999: JUMPDEST
0000199a: PUSH2 0x19e2
0000199d: PUSH1 0x01
0000199f: PUSH1 0x00
000019a1: CALLER
000019a2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019b7: AND
000019b8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019cd: AND
000019ce: DUP2
000019cf: MSTORE
000019d0: PUSH1 0x20
000019d2: ADD
000019d3: SWAP1
000019d4: DUP2
000019d5: MSTORE
000019d6: PUSH1 0x20
000019d8: ADD
000019d9: PUSH1 0x00
000019db: KECCAK256
000019dc: SLOAD
000019dd: DUP3
000019de: PUSH2 0x2b87
000019e1: JUMP
000019e2: JUMPDEST
000019e3: PUSH1 0x01
000019e5: PUSH1 0x00
000019e7: CALLER
000019e8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000019fd: AND
000019fe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a13: AND
00001a14: DUP2
00001a15: MSTORE
00001a16: PUSH1 0x20
00001a18: ADD
00001a19: SWAP1
00001a1a: DUP2
00001a1b: MSTORE
00001a1c: PUSH1 0x20
00001a1e: ADD
00001a1f: PUSH1 0x00
00001a21: KECCAK256
00001a22: DUP2
00001a23: SWAP1
00001a24: SSTORE
00001a25: POP
00001a26: PUSH2 0x1a31
00001a29: PUSH1 0x00
00001a2b: SLOAD
00001a2c: DUP3
00001a2d: PUSH2 0x2b87
00001a30: JUMP
00001a31: JUMPDEST
00001a32: PUSH1 0x00
00001a34: DUP2
00001a35: SWAP1
00001a36: SSTORE
00001a37: POP
00001a38: JUMPDEST
00001a39: JUMPDEST
00001a3a: POP
00001a3b: JUMP
00001a3c: JUMPDEST
00001a3d: PUSH1 0x03
00001a3f: PUSH1 0x00
00001a41: SWAP1
00001a42: SLOAD
00001a43: SWAP1
00001a44: PUSH2 0x0100
00001a47: EXP
00001a48: SWAP1
00001a49: DIV
00001a4a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a5f: AND
00001a60: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a75: AND
00001a76: CALLER
00001a77: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001a8c: AND
00001a8d: EQ
00001a8e: ISZERO
00001a8f: ISZERO
00001a90: PUSH2 0x1a98
00001a93: JUMPI
00001a94: PUSH1 0x00
00001a96: DUP1
00001a97: REVERT
00001a98: JUMPDEST
00001a99: PUSH2 0x1b4a
00001a9c: DUP2
00001a9d: PUSH1 0x09
00001a9f: PUSH1 0x00
00001aa1: SWAP1
00001aa2: SLOAD
00001aa3: SWAP1
00001aa4: PUSH2 0x0100
00001aa7: EXP
00001aa8: SWAP1
00001aa9: DIV
00001aaa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001abf: AND
00001ac0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ad5: AND
00001ad6: PUSH4 0xd45294f5
00001adb: PUSH1 0x00
00001add: PUSH1 0x40
00001adf: MLOAD
00001ae0: PUSH1 0x20
00001ae2: ADD
00001ae3: MSTORE
00001ae4: PUSH1 0x40
00001ae6: MLOAD
00001ae7: DUP2
00001ae8: PUSH4 0xffffffff
00001aed: AND
00001aee: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001b0c: MUL
00001b0d: DUP2
00001b0e: MSTORE
00001b0f: PUSH1 0x04
00001b11: ADD
00001b12: PUSH1 0x20
00001b14: PUSH1 0x40
00001b16: MLOAD
00001b17: DUP1
00001b18: DUP4
00001b19: SUB
00001b1a: DUP2
00001b1b: PUSH1 0x00
00001b1d: DUP8
00001b1e: DUP1
00001b1f: EXTCODESIZE
00001b20: ISZERO
00001b21: ISZERO
00001b22: PUSH2 0x1b2a
00001b25: JUMPI
00001b26: PUSH1 0x00
00001b28: DUP1
00001b29: REVERT
00001b2a: JUMPDEST
00001b2b: PUSH2 0x02c6
00001b2e: GAS
00001b2f: SUB
00001b30: CALL
00001b31: ISZERO
00001b32: ISZERO
00001b33: PUSH2 0x1b3b
00001b36: JUMPI
00001b37: PUSH1 0x00
00001b39: DUP1
00001b3a: REVERT
00001b3b: JUMPDEST
00001b3c: POP
00001b3d: POP
00001b3e: POP
00001b3f: PUSH1 0x40
00001b41: MLOAD
00001b42: DUP1
00001b43: MLOAD
00001b44: SWAP1
00001b45: POP
00001b46: PUSH2 0x2bbb
00001b49: JUMP
00001b4a: JUMPDEST
00001b4b: JUMPDEST
00001b4c: JUMPDEST
00001b4d: POP
00001b4e: JUMP
00001b4f: JUMPDEST
00001b50: PUSH1 0x03
00001b52: PUSH1 0x00
00001b54: SWAP1
00001b55: SLOAD
00001b56: SWAP1
00001b57: PUSH2 0x0100
00001b5a: EXP
00001b5b: SWAP1
00001b5c: DIV
00001b5d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b72: AND
00001b73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b88: AND
00001b89: CALLER
00001b8a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001b9f: AND
00001ba0: EQ
00001ba1: DUP1
00001ba2: PUSH2 0x1bf8
00001ba5: JUMPI
00001ba6: POP
00001ba7: PUSH1 0x04
00001ba9: PUSH1 0x00
00001bab: SWAP1
00001bac: SLOAD
00001bad: SWAP1
00001bae: PUSH2 0x0100
00001bb1: EXP
00001bb2: SWAP1
00001bb3: DIV
00001bb4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bc9: AND
00001bca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bdf: AND
00001be0: CALLER
00001be1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001bf6: AND
00001bf7: EQ
00001bf8: JUMPDEST
00001bf9: ISZERO
00001bfa: ISZERO
00001bfb: PUSH2 0x1c03
00001bfe: JUMPI
00001bff: PUSH1 0x00
00001c01: DUP1
00001c02: REVERT
00001c03: JUMPDEST
00001c04: PUSH1 0x09
00001c06: PUSH1 0x00
00001c08: SWAP1
00001c09: SLOAD
00001c0a: SWAP1
00001c0b: PUSH2 0x0100
00001c0e: EXP
00001c0f: SWAP1
00001c10: DIV
00001c11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c26: AND
00001c27: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001c3c: AND
00001c3d: PUSH4 0x4c524be4
00001c42: DUP3
00001c43: PUSH1 0x40
00001c45: MLOAD
00001c46: DUP3
00001c47: PUSH4 0xffffffff
00001c4c: AND
00001c4d: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001c6b: MUL
00001c6c: DUP2
00001c6d: MSTORE
00001c6e: PUSH1 0x04
00001c70: ADD
00001c71: DUP1
00001c72: DUP3
00001c73: DUP2
00001c74: MSTORE
00001c75: PUSH1 0x20
00001c77: ADD
00001c78: SWAP2
00001c79: POP
00001c7a: POP
00001c7b: PUSH1 0x00
00001c7d: PUSH1 0x40
00001c7f: MLOAD
00001c80: DUP1
00001c81: DUP4
00001c82: SUB
00001c83: DUP2
00001c84: PUSH1 0x00
00001c86: DUP8
00001c87: DUP1
00001c88: EXTCODESIZE
00001c89: ISZERO
00001c8a: ISZERO
00001c8b: PUSH2 0x1c93
00001c8e: JUMPI
00001c8f: PUSH1 0x00
00001c91: DUP1
00001c92: REVERT
00001c93: JUMPDEST
00001c94: PUSH2 0x02c6
00001c97: GAS
00001c98: SUB
00001c99: CALL
00001c9a: ISZERO
00001c9b: ISZERO
00001c9c: PUSH2 0x1ca4
00001c9f: JUMPI
00001ca0: PUSH1 0x00
00001ca2: DUP1
00001ca3: REVERT
00001ca4: JUMPDEST
00001ca5: POP
00001ca6: POP
00001ca7: POP
00001ca8: JUMPDEST
00001ca9: JUMPDEST
00001caa: POP
00001cab: JUMP
00001cac: JUMPDEST
00001cad: PUSH1 0x0d
00001caf: SLOAD
00001cb0: DUP2
00001cb1: JUMP
00001cb2: JUMPDEST
00001cb3: PUSH1 0x03
00001cb5: PUSH1 0x00
00001cb7: SWAP1
00001cb8: SLOAD
00001cb9: SWAP1
00001cba: PUSH2 0x0100
00001cbd: EXP
00001cbe: SWAP1
00001cbf: DIV
00001cc0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001cd5: AND
00001cd6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ceb: AND
00001cec: CALLER
00001ced: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d02: AND
00001d03: EQ
00001d04: DUP1
00001d05: PUSH2 0x1d5b
00001d08: JUMPI
00001d09: POP
00001d0a: PUSH1 0x04
00001d0c: PUSH1 0x00
00001d0e: SWAP1
00001d0f: SLOAD
00001d10: SWAP1
00001d11: PUSH2 0x0100
00001d14: EXP
00001d15: SWAP1
00001d16: DIV
00001d17: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d2c: AND
00001d2d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d42: AND
00001d43: CALLER
00001d44: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d59: AND
00001d5a: EQ
00001d5b: JUMPDEST
00001d5c: ISZERO
00001d5d: ISZERO
00001d5e: PUSH2 0x1d66
00001d61: JUMPI
00001d62: PUSH1 0x00
00001d64: DUP1
00001d65: REVERT
00001d66: JUMPDEST
00001d67: DUP6
00001d68: PUSH1 0x08
00001d6a: PUSH1 0x01
00001d6c: PUSH2 0x0100
00001d6f: EXP
00001d70: DUP2
00001d71: SLOAD
00001d72: DUP2
00001d73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001d88: MUL
00001d89: NOT
00001d8a: AND
00001d8b: SWAP1
00001d8c: DUP4
00001d8d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001da2: AND
00001da3: MUL
00001da4: OR
00001da5: SWAP1
00001da6: SSTORE
00001da7: POP
00001da8: DUP5
00001da9: PUSH1 0x09
00001dab: PUSH1 0x00
00001dad: PUSH2 0x0100
00001db0: EXP
00001db1: DUP2
00001db2: SLOAD
00001db3: DUP2
00001db4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001dc9: MUL
00001dca: NOT
00001dcb: AND
00001dcc: SWAP1
00001dcd: DUP4
00001dce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001de3: AND
00001de4: MUL
00001de5: OR
00001de6: SWAP1
00001de7: SSTORE
00001de8: POP
00001de9: DUP4
00001dea: PUSH1 0x0a
00001dec: PUSH1 0x00
00001dee: PUSH2 0x0100
00001df1: EXP
00001df2: DUP2
00001df3: SLOAD
00001df4: DUP2
00001df5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e0a: MUL
00001e0b: NOT
00001e0c: AND
00001e0d: SWAP1
00001e0e: DUP4
00001e0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e24: AND
00001e25: MUL
00001e26: OR
00001e27: SWAP1
00001e28: SSTORE
00001e29: POP
00001e2a: DUP3
00001e2b: PUSH1 0x08
00001e2d: PUSH1 0x00
00001e2f: PUSH2 0x0100
00001e32: EXP
00001e33: DUP2
00001e34: SLOAD
00001e35: DUP2
00001e36: PUSH1 0xff
00001e38: MUL
00001e39: NOT
00001e3a: AND
00001e3b: SWAP1
00001e3c: DUP4
00001e3d: PUSH1 0x02
00001e3f: DUP2
00001e40: GT
00001e41: ISZERO
00001e42: PUSH2 0x1e47
00001e45: JUMPI
00001e46: INVALID
00001e47: JUMPDEST
00001e48: MUL
00001e49: OR
00001e4a: SWAP1
00001e4b: SSTORE
00001e4c: POP
00001e4d: DUP2
00001e4e: PUSH1 0x0c
00001e50: DUP2
00001e51: SWAP1
00001e52: SSTORE
00001e53: POP
00001e54: DUP1
00001e55: PUSH1 0x0d
00001e57: DUP2
00001e58: SWAP1
00001e59: SSTORE
00001e5a: POP
00001e5b: JUMPDEST
00001e5c: JUMPDEST
00001e5d: POP
00001e5e: POP
00001e5f: POP
00001e60: POP
00001e61: POP
00001e62: POP
00001e63: JUMP
00001e64: JUMPDEST
00001e65: PUSH1 0x00
00001e67: DUP1
00001e68: PUSH1 0x0a
00001e6a: PUSH1 0x00
00001e6c: SWAP1
00001e6d: SLOAD
00001e6e: SWAP1
00001e6f: PUSH2 0x0100
00001e72: EXP
00001e73: SWAP1
00001e74: DIV
00001e75: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001e8a: AND
00001e8b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ea0: AND
00001ea1: PUSH4 0xfedfe46c
00001ea6: CALLER
00001ea7: PUSH1 0x01
00001ea9: PUSH1 0x00
00001eab: CALLER
00001eac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ec1: AND
00001ec2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ed7: AND
00001ed8: DUP2
00001ed9: MSTORE
00001eda: PUSH1 0x20
00001edc: ADD
00001edd: SWAP1
00001ede: DUP2
00001edf: MSTORE
00001ee0: PUSH1 0x20
00001ee2: ADD
00001ee3: PUSH1 0x00
00001ee5: KECCAK256
00001ee6: SLOAD
00001ee7: DUP8
00001ee8: DUP8
00001ee9: PUSH1 0x00
00001eeb: PUSH1 0x40
00001eed: MLOAD
00001eee: PUSH1 0x40
00001ef0: ADD
00001ef1: MSTORE
00001ef2: PUSH1 0x40
00001ef4: MLOAD
00001ef5: DUP6
00001ef6: PUSH4 0xffffffff
00001efb: AND
00001efc: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00001f1a: MUL
00001f1b: DUP2
00001f1c: MSTORE
00001f1d: PUSH1 0x04
00001f1f: ADD
00001f20: DUP1
00001f21: DUP6
00001f22: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f37: AND
00001f38: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001f4d: AND
00001f4e: DUP2
00001f4f: MSTORE
00001f50: PUSH1 0x20
00001f52: ADD
00001f53: DUP5
00001f54: DUP2
00001f55: MSTORE
00001f56: PUSH1 0x20
00001f58: ADD
00001f59: DUP4
00001f5a: DUP2
00001f5b: MSTORE
00001f5c: PUSH1 0x20
00001f5e: ADD
00001f5f: DUP3
00001f60: DUP2
00001f61: MSTORE
00001f62: PUSH1 0x20
00001f64: ADD
00001f65: SWAP5
00001f66: POP
00001f67: POP
00001f68: POP
00001f69: POP
00001f6a: POP
00001f6b: PUSH1 0x40
00001f6d: DUP1
00001f6e: MLOAD
00001f6f: DUP1
00001f70: DUP4
00001f71: SUB
00001f72: DUP2
00001f73: PUSH1 0x00
00001f75: DUP8
00001f76: DUP1
00001f77: EXTCODESIZE
00001f78: ISZERO
00001f79: ISZERO
00001f7a: PUSH2 0x1f82
00001f7d: JUMPI
00001f7e: PUSH1 0x00
00001f80: DUP1
00001f81: REVERT
00001f82: JUMPDEST
00001f83: PUSH2 0x02c6
00001f86: GAS
00001f87: SUB
00001f88: CALL
00001f89: ISZERO
00001f8a: ISZERO
00001f8b: PUSH2 0x1f93
00001f8e: JUMPI
00001f8f: PUSH1 0x00
00001f91: DUP1
00001f92: REVERT
00001f93: JUMPDEST
00001f94: POP
00001f95: POP
00001f96: POP
00001f97: PUSH1 0x40
00001f99: MLOAD
00001f9a: DUP1
00001f9b: MLOAD
00001f9c: SWAP1
00001f9d: PUSH1 0x20
00001f9f: ADD
00001fa0: DUP1
00001fa1: MLOAD
00001fa2: SWAP1
00001fa3: POP
00001fa4: DUP1
00001fa5: SWAP3
00001fa6: POP
00001fa7: DUP2
00001fa8: SWAP4
00001fa9: POP
00001faa: POP
00001fab: POP
00001fac: PUSH2 0x1fb6
00001faf: DUP3
00001fb0: PUSH1 0x01
00001fb2: PUSH2 0x0c22
00001fb5: JUMP
00001fb6: JUMPDEST
00001fb7: DUP1
00001fb8: PUSH1 0x0b
00001fba: PUSH1 0x00
00001fbc: CALLER
00001fbd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fd2: AND
00001fd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001fe8: AND
00001fe9: DUP2
00001fea: MSTORE
00001feb: PUSH1 0x20
00001fed: ADD
00001fee: SWAP1
00001fef: DUP2
00001ff0: MSTORE
00001ff1: PUSH1 0x20
00001ff3: ADD
00001ff4: PUSH1 0x00
00001ff6: KECCAK256
00001ff7: SLOAD
00001ff8: LT
00001ff9: ISZERO
00001ffa: PUSH2 0x2042
00001ffd: JUMPI
00001ffe: DUP1
00001fff: PUSH1 0x0b
00002001: PUSH1 0x00
00002003: CALLER
00002004: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002019: AND
0000201a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000202f: AND
00002030: DUP2
00002031: MSTORE
00002032: PUSH1 0x20
00002034: ADD
00002035: SWAP1
00002036: DUP2
00002037: MSTORE
00002038: PUSH1 0x20
0000203a: ADD
0000203b: PUSH1 0x00
0000203d: KECCAK256
0000203e: DUP2
0000203f: SWAP1
00002040: SSTORE
00002041: POP
00002042: JUMPDEST
00002043: JUMPDEST
00002044: POP
00002045: POP
00002046: POP
00002047: POP
00002048: JUMP
00002049: JUMPDEST
0000204a: PUSH1 0x0b
0000204c: PUSH1 0x20
0000204e: MSTORE
0000204f: DUP1
00002050: PUSH1 0x00
00002052: MSTORE
00002053: PUSH1 0x40
00002055: PUSH1 0x00
00002057: KECCAK256
00002058: PUSH1 0x00
0000205a: SWAP2
0000205b: POP
0000205c: SWAP1
0000205d: POP
0000205e: SLOAD
0000205f: DUP2
00002060: JUMP
00002061: JUMPDEST
00002062: PUSH1 0x00
00002064: PUSH1 0x01
00002066: PUSH1 0x00
00002068: DUP4
00002069: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000207e: AND
0000207f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002094: AND
00002095: DUP2
00002096: MSTORE
00002097: PUSH1 0x20
00002099: ADD
0000209a: SWAP1
0000209b: DUP2
0000209c: MSTORE
0000209d: PUSH1 0x20
0000209f: ADD
000020a0: PUSH1 0x00
000020a2: KECCAK256
000020a3: SLOAD
000020a4: SWAP1
000020a5: POP
000020a6: JUMPDEST
000020a7: SWAP2
000020a8: SWAP1
000020a9: POP
000020aa: JUMP
000020ab: JUMPDEST
000020ac: PUSH1 0x03
000020ae: PUSH1 0x00
000020b0: SWAP1
000020b1: SLOAD
000020b2: SWAP1
000020b3: PUSH2 0x0100
000020b6: EXP
000020b7: SWAP1
000020b8: DIV
000020b9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020ce: AND
000020cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020e4: AND
000020e5: CALLER
000020e6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000020fb: AND
000020fc: EQ
000020fd: DUP1
000020fe: PUSH2 0x2154
00002101: JUMPI
00002102: POP
00002103: PUSH1 0x04
00002105: PUSH1 0x00
00002107: SWAP1
00002108: SLOAD
00002109: SWAP1
0000210a: PUSH2 0x0100
0000210d: EXP
0000210e: SWAP1
0000210f: DIV
00002110: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002125: AND
00002126: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000213b: AND
0000213c: CALLER
0000213d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002152: AND
00002153: EQ
00002154: JUMPDEST
00002155: ISZERO
00002156: ISZERO
00002157: PUSH2 0x215f
0000215a: JUMPI
0000215b: PUSH1 0x00
0000215d: DUP1
0000215e: REVERT
0000215f: JUMPDEST
00002160: PUSH1 0x0a
00002162: PUSH1 0x00
00002164: SWAP1
00002165: SLOAD
00002166: SWAP1
00002167: PUSH2 0x0100
0000216a: EXP
0000216b: SWAP1
0000216c: DIV
0000216d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002182: AND
00002183: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002198: AND
00002199: PUSH4 0x72159335
0000219e: DUP8
0000219f: DUP8
000021a0: DUP8
000021a1: DUP8
000021a2: DUP8
000021a3: DUP8
000021a4: PUSH1 0x40
000021a6: MLOAD
000021a7: DUP8
000021a8: PUSH4 0xffffffff
000021ad: AND
000021ae: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
000021cc: MUL
000021cd: DUP2
000021ce: MSTORE
000021cf: PUSH1 0x04
000021d1: ADD
000021d2: DUP1
000021d3: DUP8
000021d4: DUP2
000021d5: MSTORE
000021d6: PUSH1 0x20
000021d8: ADD
000021d9: DUP7
000021da: DUP2
000021db: MSTORE
000021dc: PUSH1 0x20
000021de: ADD
000021df: DUP6
000021e0: DUP2
000021e1: MSTORE
000021e2: PUSH1 0x20
000021e4: ADD
000021e5: DUP5
000021e6: DUP2
000021e7: MSTORE
000021e8: PUSH1 0x20
000021ea: ADD
000021eb: DUP4
000021ec: DUP2
000021ed: MSTORE
000021ee: PUSH1 0x20
000021f0: ADD
000021f1: DUP3
000021f2: DUP2
000021f3: MSTORE
000021f4: PUSH1 0x20
000021f6: ADD
000021f7: SWAP7
000021f8: POP
000021f9: POP
000021fa: POP
000021fb: POP
000021fc: POP
000021fd: POP
000021fe: POP
000021ff: PUSH1 0x00
00002201: PUSH1 0x40
00002203: MLOAD
00002204: DUP1
00002205: DUP4
00002206: SUB
00002207: DUP2
00002208: PUSH1 0x00
0000220a: DUP8
0000220b: DUP1
0000220c: EXTCODESIZE
0000220d: ISZERO
0000220e: ISZERO
0000220f: PUSH2 0x2217
00002212: JUMPI
00002213: PUSH1 0x00
00002215: DUP1
00002216: REVERT
00002217: JUMPDEST
00002218: PUSH2 0x02c6
0000221b: GAS
0000221c: SUB
0000221d: CALL
0000221e: ISZERO
0000221f: ISZERO
00002220: PUSH2 0x2228
00002223: JUMPI
00002224: PUSH1 0x00
00002226: DUP1
00002227: REVERT
00002228: JUMPDEST
00002229: POP
0000222a: POP
0000222b: POP
0000222c: JUMPDEST
0000222d: JUMPDEST
0000222e: POP
0000222f: POP
00002230: POP
00002231: POP
00002232: POP
00002233: POP
00002234: JUMP
00002235: JUMPDEST
00002236: PUSH1 0x03
00002238: PUSH1 0x00
0000223a: SWAP1
0000223b: SLOAD
0000223c: SWAP1
0000223d: PUSH2 0x0100
00002240: EXP
00002241: SWAP1
00002242: DIV
00002243: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002258: AND
00002259: DUP2
0000225a: JUMP
0000225b: JUMPDEST
0000225c: PUSH1 0x03
0000225e: PUSH1 0x00
00002260: SWAP1
00002261: SLOAD
00002262: SWAP1
00002263: PUSH2 0x0100
00002266: EXP
00002267: SWAP1
00002268: DIV
00002269: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000227e: AND
0000227f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002294: AND
00002295: CALLER
00002296: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022ab: AND
000022ac: EQ
000022ad: DUP1
000022ae: PUSH2 0x2304
000022b1: JUMPI
000022b2: POP
000022b3: PUSH1 0x04
000022b5: PUSH1 0x00
000022b7: SWAP1
000022b8: SLOAD
000022b9: SWAP1
000022ba: PUSH2 0x0100
000022bd: EXP
000022be: SWAP1
000022bf: DIV
000022c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022d5: AND
000022d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000022eb: AND
000022ec: CALLER
000022ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002302: AND
00002303: EQ
00002304: JUMPDEST
00002305: ISZERO
00002306: ISZERO
00002307: PUSH2 0x230f
0000230a: JUMPI
0000230b: PUSH1 0x00
0000230d: DUP1
0000230e: REVERT
0000230f: JUMPDEST
00002310: PUSH1 0x09
00002312: PUSH1 0x00
00002314: SWAP1
00002315: SLOAD
00002316: SWAP1
00002317: PUSH2 0x0100
0000231a: EXP
0000231b: SWAP1
0000231c: DIV
0000231d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002332: AND
00002333: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002348: AND
00002349: PUSH4 0x945c7c59
0000234e: DUP6
0000234f: DUP6
00002350: DUP6
00002351: DUP6
00002352: PUSH1 0x40
00002354: MLOAD
00002355: DUP6
00002356: PUSH4 0xffffffff
0000235b: AND
0000235c: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
0000237a: MUL
0000237b: DUP2
0000237c: MSTORE
0000237d: PUSH1 0x04
0000237f: ADD
00002380: DUP1
00002381: DUP6
00002382: DUP2
00002383: MSTORE
00002384: PUSH1 0x20
00002386: ADD
00002387: DUP5
00002388: DUP2
00002389: MSTORE
0000238a: PUSH1 0x20
0000238c: ADD
0000238d: DUP4
0000238e: DUP2
0000238f: MSTORE
00002390: PUSH1 0x20
00002392: ADD
00002393: DUP3
00002394: DUP2
00002395: MSTORE
00002396: PUSH1 0x20
00002398: ADD
00002399: SWAP5
0000239a: POP
0000239b: POP
0000239c: POP
0000239d: POP
0000239e: POP
0000239f: PUSH1 0x00
000023a1: PUSH1 0x40
000023a3: MLOAD
000023a4: DUP1
000023a5: DUP4
000023a6: SUB
000023a7: DUP2
000023a8: PUSH1 0x00
000023aa: DUP8
000023ab: DUP1
000023ac: EXTCODESIZE
000023ad: ISZERO
000023ae: ISZERO
000023af: PUSH2 0x23b7
000023b2: JUMPI
000023b3: PUSH1 0x00
000023b5: DUP1
000023b6: REVERT
000023b7: JUMPDEST
000023b8: PUSH2 0x02c6
000023bb: GAS
000023bc: SUB
000023bd: CALL
000023be: ISZERO
000023bf: ISZERO
000023c0: PUSH2 0x23c8
000023c3: JUMPI
000023c4: PUSH1 0x00
000023c6: DUP1
000023c7: REVERT
000023c8: JUMPDEST
000023c9: POP
000023ca: POP
000023cb: POP
000023cc: JUMPDEST
000023cd: JUMPDEST
000023ce: POP
000023cf: POP
000023d0: POP
000023d1: POP
000023d2: JUMP
000023d3: JUMPDEST
000023d4: PUSH1 0x05
000023d6: SLOAD
000023d7: DUP2
000023d8: JUMP
000023d9: JUMPDEST
000023da: PUSH1 0x03
000023dc: PUSH1 0x00
000023de: SWAP1
000023df: SLOAD
000023e0: SWAP1
000023e1: PUSH2 0x0100
000023e4: EXP
000023e5: SWAP1
000023e6: DIV
000023e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000023fc: AND
000023fd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002412: AND
00002413: CALLER
00002414: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002429: AND
0000242a: EQ
0000242b: ISZERO
0000242c: ISZERO
0000242d: PUSH2 0x2435
00002430: JUMPI
00002431: PUSH1 0x00
00002433: DUP1
00002434: REVERT
00002435: JUMPDEST
00002436: PUSH2 0x247e
00002439: PUSH1 0x01
0000243b: PUSH1 0x00
0000243d: CALLER
0000243e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002453: AND
00002454: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002469: AND
0000246a: DUP2
0000246b: MSTORE
0000246c: PUSH1 0x20
0000246e: ADD
0000246f: SWAP1
00002470: DUP2
00002471: MSTORE
00002472: PUSH1 0x20
00002474: ADD
00002475: PUSH1 0x00
00002477: KECCAK256
00002478: SLOAD
00002479: DUP3
0000247a: PUSH2 0x2ba1
0000247d: JUMP
0000247e: JUMPDEST
0000247f: PUSH1 0x01
00002481: PUSH1 0x00
00002483: CALLER
00002484: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002499: AND
0000249a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024af: AND
000024b0: DUP2
000024b1: MSTORE
000024b2: PUSH1 0x20
000024b4: ADD
000024b5: SWAP1
000024b6: DUP2
000024b7: MSTORE
000024b8: PUSH1 0x20
000024ba: ADD
000024bb: PUSH1 0x00
000024bd: KECCAK256
000024be: DUP2
000024bf: SWAP1
000024c0: SSTORE
000024c1: POP
000024c2: PUSH2 0x24cd
000024c5: PUSH1 0x00
000024c7: SLOAD
000024c8: DUP3
000024c9: PUSH2 0x2ba1
000024cc: JUMP
000024cd: JUMPDEST
000024ce: PUSH1 0x00
000024d0: DUP2
000024d1: SWAP1
000024d2: SSTORE
000024d3: POP
000024d4: JUMPDEST
000024d5: JUMPDEST
000024d6: POP
000024d7: JUMP
000024d8: JUMPDEST
000024d9: PUSH1 0x00
000024db: TIMESTAMP
000024dc: PUSH1 0x0b
000024de: PUSH1 0x00
000024e0: CALLER
000024e1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000024f6: AND
000024f7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000250c: AND
0000250d: DUP2
0000250e: MSTORE
0000250f: PUSH1 0x20
00002511: ADD
00002512: SWAP1
00002513: DUP2
00002514: MSTORE
00002515: PUSH1 0x20
00002517: ADD
00002518: PUSH1 0x00
0000251a: KECCAK256
0000251b: SLOAD
0000251c: LT
0000251d: ISZERO
0000251e: ISZERO
0000251f: PUSH2 0x2527
00002522: JUMPI
00002523: PUSH1 0x00
00002525: DUP1
00002526: REVERT
00002527: JUMPDEST
00002528: PUSH2 0x2570
0000252b: PUSH1 0x01
0000252d: PUSH1 0x00
0000252f: CALLER
00002530: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002545: AND
00002546: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000255b: AND
0000255c: DUP2
0000255d: MSTORE
0000255e: PUSH1 0x20
00002560: ADD
00002561: SWAP1
00002562: DUP2
00002563: MSTORE
00002564: PUSH1 0x20
00002566: ADD
00002567: PUSH1 0x00
00002569: KECCAK256
0000256a: SLOAD
0000256b: DUP4
0000256c: PUSH2 0x2b87
0000256f: JUMP
00002570: JUMPDEST
00002571: PUSH1 0x01
00002573: PUSH1 0x00
00002575: CALLER
00002576: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000258b: AND
0000258c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025a1: AND
000025a2: DUP2
000025a3: MSTORE
000025a4: PUSH1 0x20
000025a6: ADD
000025a7: SWAP1
000025a8: DUP2
000025a9: MSTORE
000025aa: PUSH1 0x20
000025ac: ADD
000025ad: PUSH1 0x00
000025af: KECCAK256
000025b0: DUP2
000025b1: SWAP1
000025b2: SSTORE
000025b3: POP
000025b4: PUSH2 0x25fc
000025b7: PUSH1 0x01
000025b9: PUSH1 0x00
000025bb: DUP6
000025bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025d1: AND
000025d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000025e7: AND
000025e8: DUP2
000025e9: MSTORE
000025ea: PUSH1 0x20
000025ec: ADD
000025ed: SWAP1
000025ee: DUP2
000025ef: MSTORE
000025f0: PUSH1 0x20
000025f2: ADD
000025f3: PUSH1 0x00
000025f5: KECCAK256
000025f6: SLOAD
000025f7: DUP4
000025f8: PUSH2 0x2ba1
000025fb: JUMP
000025fc: JUMPDEST
000025fd: PUSH1 0x01
000025ff: PUSH1 0x00
00002601: DUP6
00002602: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002617: AND
00002618: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000262d: AND
0000262e: DUP2
0000262f: MSTORE
00002630: PUSH1 0x20
00002632: ADD
00002633: SWAP1
00002634: DUP2
00002635: MSTORE
00002636: PUSH1 0x20
00002638: ADD
00002639: PUSH1 0x00
0000263b: KECCAK256
0000263c: DUP2
0000263d: SWAP1
0000263e: SSTORE
0000263f: POP
00002640: DUP3
00002641: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002656: AND
00002657: CALLER
00002658: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000266d: AND
0000266e: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
0000268f: DUP5
00002690: PUSH1 0x40
00002692: MLOAD
00002693: DUP1
00002694: DUP3
00002695: DUP2
00002696: MSTORE
00002697: PUSH1 0x20
00002699: ADD
0000269a: SWAP2
0000269b: POP
0000269c: POP
0000269d: PUSH1 0x40
0000269f: MLOAD
000026a0: DUP1
000026a1: SWAP2
000026a2: SUB
000026a3: SWAP1
000026a4: LOG3
000026a5: PUSH1 0x01
000026a7: SWAP1
000026a8: POP
000026a9: JUMPDEST
000026aa: JUMPDEST
000026ab: SWAP3
000026ac: SWAP2
000026ad: POP
000026ae: POP
000026af: JUMP
000026b0: JUMPDEST
000026b1: PUSH1 0x0c
000026b3: SLOAD
000026b4: DUP2
000026b5: JUMP
000026b6: JUMPDEST
000026b7: PUSH1 0x04
000026b9: PUSH1 0x00
000026bb: SWAP1
000026bc: SLOAD
000026bd: SWAP1
000026be: PUSH2 0x0100
000026c1: EXP
000026c2: SWAP1
000026c3: DIV
000026c4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026d9: AND
000026da: DUP2
000026db: JUMP
000026dc: JUMPDEST
000026dd: PUSH1 0x00
000026df: PUSH1 0x02
000026e1: PUSH1 0x00
000026e3: DUP5
000026e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000026f9: AND
000026fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000270f: AND
00002710: DUP2
00002711: MSTORE
00002712: PUSH1 0x20
00002714: ADD
00002715: SWAP1
00002716: DUP2
00002717: MSTORE
00002718: PUSH1 0x20
0000271a: ADD
0000271b: PUSH1 0x00
0000271d: KECCAK256
0000271e: PUSH1 0x00
00002720: DUP4
00002721: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002736: AND
00002737: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000274c: AND
0000274d: DUP2
0000274e: MSTORE
0000274f: PUSH1 0x20
00002751: ADD
00002752: SWAP1
00002753: DUP2
00002754: MSTORE
00002755: PUSH1 0x20
00002757: ADD
00002758: PUSH1 0x00
0000275a: KECCAK256
0000275b: SLOAD
0000275c: SWAP1
0000275d: POP
0000275e: JUMPDEST
0000275f: SWAP3
00002760: SWAP2
00002761: POP
00002762: POP
00002763: JUMP
00002764: JUMPDEST
00002765: PUSH1 0x01
00002767: PUSH1 0x02
00002769: DUP2
0000276a: GT
0000276b: ISZERO
0000276c: PUSH2 0x2771
0000276f: JUMPI
00002770: INVALID
00002771: JUMPDEST
00002772: PUSH1 0x08
00002774: PUSH1 0x00
00002776: SWAP1
00002777: SLOAD
00002778: SWAP1
00002779: PUSH2 0x0100
0000277c: EXP
0000277d: SWAP1
0000277e: DIV
0000277f: PUSH1 0xff
00002781: AND
00002782: PUSH1 0x02
00002784: DUP2
00002785: GT
00002786: ISZERO
00002787: PUSH2 0x278c
0000278a: JUMPI
0000278b: INVALID
0000278c: JUMPDEST
0000278d: EQ
0000278e: ISZERO
0000278f: ISZERO
00002790: PUSH2 0x2798
00002793: JUMPI
00002794: PUSH1 0x00
00002796: DUP1
00002797: REVERT
00002798: JUMPDEST
00002799: PUSH8 0x0de0b6b3a7640000
000027a2: DUP2
000027a3: MUL
000027a4: PUSH1 0x01
000027a6: PUSH1 0x00
000027a8: CALLER
000027a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027be: AND
000027bf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000027d4: AND
000027d5: DUP2
000027d6: MSTORE
000027d7: PUSH1 0x20
000027d9: ADD
000027da: SWAP1
000027db: DUP2
000027dc: MSTORE
000027dd: PUSH1 0x20
000027df: ADD
000027e0: PUSH1 0x00
000027e2: KECCAK256
000027e3: SLOAD
000027e4: LT
000027e5: ISZERO
000027e6: ISZERO
000027e7: ISZERO
000027e8: PUSH2 0x27f0
000027eb: JUMPI
000027ec: PUSH1 0x00
000027ee: DUP1
000027ef: REVERT
000027f0: JUMPDEST
000027f1: PUSH1 0x0d
000027f3: SLOAD
000027f4: PUSH8 0x0de0b6b3a7640000
000027fd: DUP3
000027fe: MUL
000027ff: LT
00002800: ISZERO
00002801: ISZERO
00002802: ISZERO
00002803: PUSH2 0x280b
00002806: JUMPI
00002807: PUSH1 0x00
00002809: DUP1
0000280a: REVERT
0000280b: JUMPDEST
0000280c: PUSH2 0x2820
0000280f: PUSH8 0x0de0b6b3a7640000
00002818: DUP3
00002819: MUL
0000281a: PUSH1 0x00
0000281c: PUSH2 0x0c22
0000281f: JUMP
00002820: JUMPDEST
00002821: PUSH1 0x09
00002823: PUSH1 0x00
00002825: SWAP1
00002826: SLOAD
00002827: SWAP1
00002828: PUSH2 0x0100
0000282b: EXP
0000282c: SWAP1
0000282d: DIV
0000282e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002843: AND
00002844: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002859: AND
0000285a: PUSH4 0xfc0ea853
0000285f: CALLER
00002860: PUSH8 0x0de0b6b3a7640000
00002869: DUP5
0000286a: MUL
0000286b: PUSH1 0x40
0000286d: MLOAD
0000286e: DUP4
0000286f: PUSH4 0xffffffff
00002874: AND
00002875: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00002893: MUL
00002894: DUP2
00002895: MSTORE
00002896: PUSH1 0x04
00002898: ADD
00002899: DUP1
0000289a: DUP4
0000289b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028b0: AND
000028b1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000028c6: AND
000028c7: DUP2
000028c8: MSTORE
000028c9: PUSH1 0x20
000028cb: ADD
000028cc: DUP3
000028cd: DUP2
000028ce: MSTORE
000028cf: PUSH1 0x20
000028d1: ADD
000028d2: SWAP3
000028d3: POP
000028d4: POP
000028d5: POP
000028d6: PUSH1 0x00
000028d8: PUSH1 0x40
000028da: MLOAD
000028db: DUP1
000028dc: DUP4
000028dd: SUB
000028de: DUP2
000028df: PUSH1 0x00
000028e1: DUP8
000028e2: DUP1
000028e3: EXTCODESIZE
000028e4: ISZERO
000028e5: ISZERO
000028e6: PUSH2 0x28ee
000028e9: JUMPI
000028ea: PUSH1 0x00
000028ec: DUP1
000028ed: REVERT
000028ee: JUMPDEST
000028ef: PUSH2 0x02c6
000028f2: GAS
000028f3: SUB
000028f4: CALL
000028f5: ISZERO
000028f6: ISZERO
000028f7: PUSH2 0x28ff
000028fa: JUMPI
000028fb: PUSH1 0x00
000028fd: DUP1
000028fe: REVERT
000028ff: JUMPDEST
00002900: POP
00002901: POP
00002902: POP
00002903: JUMPDEST
00002904: POP
00002905: JUMP
00002906: JUMPDEST
00002907: PUSH1 0x03
00002909: PUSH1 0x00
0000290b: SWAP1
0000290c: SLOAD
0000290d: SWAP1
0000290e: PUSH2 0x0100
00002911: EXP
00002912: SWAP1
00002913: DIV
00002914: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002929: AND
0000292a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
0000293f: AND
00002940: CALLER
00002941: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002956: AND
00002957: EQ
00002958: DUP1
00002959: PUSH2 0x29af
0000295c: JUMPI
0000295d: POP
0000295e: PUSH1 0x04
00002960: PUSH1 0x00
00002962: SWAP1
00002963: SLOAD
00002964: SWAP1
00002965: PUSH2 0x0100
00002968: EXP
00002969: SWAP1
0000296a: DIV
0000296b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002980: AND
00002981: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002996: AND
00002997: CALLER
00002998: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029ad: AND
000029ae: EQ
000029af: JUMPDEST
000029b0: ISZERO
000029b1: ISZERO
000029b2: PUSH2 0x29ba
000029b5: JUMPI
000029b6: PUSH1 0x00
000029b8: DUP1
000029b9: REVERT
000029ba: JUMPDEST
000029bb: PUSH2 0x2a77
000029be: DUP2
000029bf: PUSH1 0x09
000029c1: PUSH1 0x00
000029c3: SWAP1
000029c4: SLOAD
000029c5: SWAP1
000029c6: PUSH2 0x0100
000029c9: EXP
000029ca: SWAP1
000029cb: DIV
000029cc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029e1: AND
000029e2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000029f7: AND
000029f8: PUSH4 0xf2141ab9
000029fd: DUP6
000029fe: PUSH1 0x00
00002a00: PUSH1 0x40
00002a02: MLOAD
00002a03: PUSH1 0x20
00002a05: ADD
00002a06: MSTORE
00002a07: PUSH1 0x40
00002a09: MLOAD
00002a0a: DUP3
00002a0b: PUSH4 0xffffffff
00002a10: AND
00002a11: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00002a2f: MUL
00002a30: DUP2
00002a31: MSTORE
00002a32: PUSH1 0x04
00002a34: ADD
00002a35: DUP1
00002a36: DUP3
00002a37: DUP2
00002a38: MSTORE
00002a39: PUSH1 0x20
00002a3b: ADD
00002a3c: SWAP2
00002a3d: POP
00002a3e: POP
00002a3f: PUSH1 0x20
00002a41: PUSH1 0x40
00002a43: MLOAD
00002a44: DUP1
00002a45: DUP4
00002a46: SUB
00002a47: DUP2
00002a48: PUSH1 0x00
00002a4a: DUP8
00002a4b: DUP1
00002a4c: EXTCODESIZE
00002a4d: ISZERO
00002a4e: ISZERO
00002a4f: PUSH2 0x2a57
00002a52: JUMPI
00002a53: PUSH1 0x00
00002a55: DUP1
00002a56: REVERT
00002a57: JUMPDEST
00002a58: PUSH2 0x02c6
00002a5b: GAS
00002a5c: SUB
00002a5d: CALL
00002a5e: ISZERO
00002a5f: ISZERO
00002a60: PUSH2 0x2a68
00002a63: JUMPI
00002a64: PUSH1 0x00
00002a66: DUP1
00002a67: REVERT
00002a68: JUMPDEST
00002a69: POP
00002a6a: POP
00002a6b: POP
00002a6c: PUSH1 0x40
00002a6e: MLOAD
00002a6f: DUP1
00002a70: MLOAD
00002a71: SWAP1
00002a72: POP
00002a73: PUSH2 0x2bbb
00002a76: JUMP
00002a77: JUMPDEST
00002a78: JUMPDEST
00002a79: JUMPDEST
00002a7a: POP
00002a7b: POP
00002a7c: JUMP
00002a7d: JUMPDEST
00002a7e: PUSH1 0x00
00002a80: DUP1
00002a81: PUSH1 0x09
00002a83: PUSH1 0x00
00002a85: SWAP1
00002a86: SLOAD
00002a87: SWAP1
00002a88: PUSH2 0x0100
00002a8b: EXP
00002a8c: SWAP1
00002a8d: DIV
00002a8e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002aa3: AND
00002aa4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002ab9: AND
00002aba: PUSH4 0x2d5cd1d6
00002abf: CALLER
00002ac0: PUSH1 0x00
00002ac2: PUSH1 0x40
00002ac4: MLOAD
00002ac5: PUSH1 0x40
00002ac7: ADD
00002ac8: MSTORE
00002ac9: PUSH1 0x40
00002acb: MLOAD
00002acc: DUP3
00002acd: PUSH4 0xffffffff
00002ad2: AND
00002ad3: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00002af1: MUL
00002af2: DUP2
00002af3: MSTORE
00002af4: PUSH1 0x04
00002af6: ADD
00002af7: DUP1
00002af8: DUP3
00002af9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b0e: AND
00002b0f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002b24: AND
00002b25: DUP2
00002b26: MSTORE
00002b27: PUSH1 0x20
00002b29: ADD
00002b2a: SWAP2
00002b2b: POP
00002b2c: POP
00002b2d: PUSH1 0x40
00002b2f: DUP1
00002b30: MLOAD
00002b31: DUP1
00002b32: DUP4
00002b33: SUB
00002b34: DUP2
00002b35: PUSH1 0x00
00002b37: DUP8
00002b38: DUP1
00002b39: EXTCODESIZE
00002b3a: ISZERO
00002b3b: ISZERO
00002b3c: PUSH2 0x2b44
00002b3f: JUMPI
00002b40: PUSH1 0x00
00002b42: DUP1
00002b43: REVERT
00002b44: JUMPDEST
00002b45: PUSH2 0x02c6
00002b48: GAS
00002b49: SUB
00002b4a: CALL
00002b4b: ISZERO
00002b4c: ISZERO
00002b4d: PUSH2 0x2b55
00002b50: JUMPI
00002b51: PUSH1 0x00
00002b53: DUP1
00002b54: REVERT
00002b55: JUMPDEST
00002b56: POP
00002b57: POP
00002b58: POP
00002b59: PUSH1 0x40
00002b5b: MLOAD
00002b5c: DUP1
00002b5d: MLOAD
00002b5e: SWAP1
00002b5f: PUSH1 0x20
00002b61: ADD
00002b62: DUP1
00002b63: MLOAD
00002b64: SWAP1
00002b65: POP
00002b66: DUP1
00002b67: SWAP3
00002b68: POP
00002b69: DUP2
00002b6a: SWAP4
00002b6b: POP
00002b6c: POP
00002b6d: POP
00002b6e: PUSH2 0x2b78
00002b71: DUP2
00002b72: PUSH1 0x01
00002b74: PUSH2 0x0c22
00002b77: JUMP
00002b78: JUMPDEST
00002b79: PUSH2 0x2b82
00002b7c: CALLER
00002b7d: DUP4
00002b7e: PUSH2 0x2bbb
00002b81: JUMP
00002b82: JUMPDEST
00002b83: JUMPDEST
00002b84: POP
00002b85: POP
00002b86: JUMP
00002b87: JUMPDEST
00002b88: PUSH1 0x00
00002b8a: DUP3
00002b8b: DUP3
00002b8c: DUP5
00002b8d: SUB
00002b8e: SWAP2
00002b8f: POP
00002b90: DUP2
00002b91: GT
00002b92: ISZERO
00002b93: ISZERO
00002b94: ISZERO
00002b95: PUSH2 0x2b9a
00002b98: JUMPI
00002b99: INVALID
00002b9a: JUMPDEST
00002b9b: JUMPDEST
00002b9c: SWAP3
00002b9d: SWAP2
00002b9e: POP
00002b9f: POP
00002ba0: JUMP
00002ba1: JUMPDEST
00002ba2: PUSH1 0x00
00002ba4: DUP3
00002ba5: DUP3
00002ba6: DUP5
00002ba7: ADD
00002ba8: SWAP2
00002ba9: POP
00002baa: DUP2
00002bab: LT
00002bac: ISZERO
00002bad: ISZERO
00002bae: ISZERO
00002baf: PUSH2 0x2bb4
00002bb2: JUMPI
00002bb3: INVALID
00002bb4: JUMPDEST
00002bb5: JUMPDEST
00002bb6: SWAP3
00002bb7: SWAP2
00002bb8: POP
00002bb9: POP
00002bba: JUMP
00002bbb: JUMPDEST
00002bbc: PUSH1 0x00
00002bbe: DUP2
00002bbf: GT
00002bc0: ISZERO
00002bc1: PUSH2 0x2c9b
00002bc4: JUMPI
00002bc5: DUP2
00002bc6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002bdb: AND
00002bdc: PUSH2 0x08fc
00002bdf: DUP3
00002be0: SWAP1
00002be1: DUP2
00002be2: ISZERO
00002be3: MUL
00002be4: SWAP1
00002be5: PUSH1 0x40
00002be7: MLOAD
00002be8: PUSH1 0x00
00002bea: PUSH1 0x40
00002bec: MLOAD
00002bed: DUP1
00002bee: DUP4
00002bef: SUB
00002bf0: DUP2
00002bf1: DUP6
00002bf2: DUP9
00002bf3: DUP9
00002bf4: CALL
00002bf5: SWAP4
00002bf6: POP
00002bf7: POP
00002bf8: POP
00002bf9: POP
00002bfa: ISZERO
00002bfb: ISZERO
00002bfc: PUSH2 0x2c04
00002bff: JUMPI
00002c00: PUSH1 0x00
00002c02: DUP1
00002c03: REVERT
00002c04: JUMPDEST
00002c05: PUSH32 0x24f696fd277ab54419be222658001f611d7b7a864c98ac7f5c6048b5fbdfea72
00002c26: PUSH1 0x00
00002c28: DUP4
00002c29: DUP4
00002c2a: PUSH1 0x01
00002c2c: PUSH1 0x40
00002c2e: MLOAD
00002c2f: DUP1
00002c30: DUP6
00002c31: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c46: AND
00002c47: DUP2
00002c48: MSTORE
00002c49: PUSH1 0x20
00002c4b: ADD
00002c4c: DUP5
00002c4d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c62: AND
00002c63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00002c78: AND
00002c79: DUP2
00002c7a: MSTORE
00002c7b: PUSH1 0x20
00002c7d: ADD
00002c7e: DUP4
00002c7f: DUP2
00002c80: MSTORE
00002c81: PUSH1 0x20
00002c83: ADD
00002c84: DUP3
00002c85: PUSH1 0xff
00002c87: AND
00002c88: DUP2
00002c89: MSTORE
00002c8a: PUSH1 0x20
00002c8c: ADD
00002c8d: SWAP5
00002c8e: POP
00002c8f: POP
00002c90: POP
00002c91: POP
00002c92: POP
00002c93: PUSH1 0x40
00002c95: MLOAD
00002c96: DUP1
00002c97: SWAP2
00002c98: SUB
00002c99: SWAP1
00002c9a: LOG1
00002c9b: JUMPDEST
00002c9c: JUMPDEST
00002c9d: POP
00002c9e: POP
00002c9f: JUMP
00002ca0: STOP
00002ca1: LOG1
00002ca2: PUSH6 0x627a7a723058
00002ca9: KECCAK256
00002caa: UNKNOWN(0xB7)
00002cab: UNKNOWN(0xE9)
00002cac: UNKNOWN(0xE2)
00002cad: UNKNOWN(0xB6)
00002cae: PUSH9 0xbe4d7a2d31df161829
00002cb8: SWAP13
00002cb9: TSTORE
00002cba: RETURNDATACOPY
00002cbb: ADDRESS
00002cbc: PUSH11 0xf5dfebf2eb619234682194
00002cc8: PC
00002cc9: ADDMOD
00002cca: STOP
00002ccb: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical access_control codex Anyone can become executor and gain onlyAuth privileges (ITGToken) 90 no
view
evidence_json
{
    "evidence": "`setExecutor` is callable by any address when `executor == 0x0`, granting onlyAuth access used by `setAttrs`, which controls external contract addresses and sale status. The fallback uses `crowdSale.process` and `itgTokenTransfer` to move owner tokens.",
    "locations": [
        "contracts/Contract.sol:249",
        "contracts/Contract.sol:851",
        "contracts/Contract.sol:835",
        "contracts/Contract.sol:881"
    ],
    "recommendation": "Restrict `setExecutor` to `onlyOwner` and/or initialize `executor` in the constructor. Consider a two-step executor change with explicit owner confirmation.",
    "exploit_scenario": "Because `setExecutor` allows any caller when `executor` is unset, an attacker can call `ITGToken.setExecutor` immediately after deployment, becoming executor. They can then call `setAttrs` to point `crowdSale` to a malicious contract, set `status` to `CrowdSale`, and set `minEtherParticipate` to 0. Sending a tiny amount of ETH to the fallback will call the malicious `crowdSale.process` which returns an arbitrary token amount; `itgTokenTransfer` then transfers that amount from the owner to the attacker, draining the owner\u2019s balance."
}
medium math codex Division by zero and mispricing in 2nd/4th crowdsale pricing 75 no
view
evidence_json
{
    "evidence": "Price sales divide by `s.amountRaised1 / s.saleSupply1`, which can be zero due to integer truncation.",
    "locations": [
        "contracts/Contract.sol:343",
        "contracts/Contract.sol:353"
    ],
    "recommendation": "Use a fixed-point price calculation with proper ordering (e.g., `tokenAmount = sendValue * saleSupply1 * 100 / (amountRaised1 * 120)`), and require nonzero denominators.",
    "exploit_scenario": "In the 2nd and 4th sale phases, token price is computed as `s.amountRaised1 / s.saleSupply1 * 120 / 100`. If `amountRaised1 < saleSupply1` (likely since one is in wei and the other in token units), the division truncates to 0 and `sendValue / 0` reverts, halting those sale phases. Even when nonzero, integer truncation can lead to unintended pricing."
}
medium access_control codex Auxiliary contracts can be seized because owner is unset and setOwner is publicly callable 75 no
view
evidence_json
{
    "evidence": "`setOwner` allows public assignment when owner is zero, and the auxiliary contracts do not set owner elsewhere.",
    "locations": [
        "contracts/Contract.sol:244",
        "contracts/Contract.sol:255",
        "contracts/Contract.sol:394",
        "contracts/Contract.sol:486"
    ],
    "recommendation": "Initialize `owner` in each contract\u2019s constructor or enforce `setOwner` as `onlyOwner` with a one-time initialization guard set during deployment.",
    "exploit_scenario": "`CrowdSale`, `Games`, and `Voting` have no constructor setting `owner`. Since `setOwner` allows any caller when `owner == 0x0`, an attacker can front-run deployment and become owner. This lets them call `onlyOwner` methods (e.g., `process`, `getToken`, `selectWinner`) or block the intended ITGToken from interacting, effectively DoSing the system or manipulating sale/game state."
}
medium access_control codex Token lock bypass via transferFrom ignores locked holder 75 no
view
evidence_json
{
    "evidence": "`beforeTransfer` uses `withdrawRestriction[msg.sender]`, and `transferFrom` is guarded by `beforeTransfer` without checking `_from`.",
    "locations": [
        "contracts/Contract.sol:805",
        "contracts/Contract.sol:817"
    ],
    "recommendation": "In `transferFrom`, enforce the restriction on `_from` (e.g., a modifier that checks `withdrawRestriction[_from] < now`).",
    "exploit_scenario": "When a user votes, `withdrawRestriction[user]` is set to a future timestamp. The `beforeTransfer` modifier only checks `msg.sender`, so an approved spender can call `transferFrom` and move the locked user\u2019s tokens while the lock is active, bypassing the intended restriction."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8
call_targets: 0xb104df39250112eda59b27f5db7013c7ee132d50
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb104df39250112eda59b27f5db7013c7ee132d50"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0335d533",
            "selector": "0x0335d533",
            "calldata_variants": [
                "0x0335d533",
                "0x0335d5330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1c3c0ea8",
            "selector": "0x1c3c0ea8",
            "calldata_variants": [
                "0x1c3c0ea8",
                "0x1c3c0ea80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x200d2ed2",
            "selector": "0x200d2ed2",
            "calldata_variants": [
                "0x200d2ed2",
                "0x200d2ed20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 797,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1228,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4715,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 12,
    "guards_detected": [
        {
            "pc": 6519,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6774,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7049,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7136,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7404,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7491,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8421,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8508,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8853,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8940,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9235,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10560,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10647,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ],
    "untrusted_call_count": 12
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8
call_targets: 0xb104df39250112eda59b27f5db7013c7ee132d50
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xb05d31a6f4476363803dc514ab6d910aae335d7487bcf2a6529b10d1d77ae4d8",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xb104df39250112eda59b27f5db7013c7ee132d50"
    ],
    "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": "0xffffffff",
            "selector": "0xffffffff",
            "calldata_variants": [
                "0xffffffff",
                "0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0335d533",
            "selector": "0x0335d533",
            "calldata_variants": [
                "0x0335d533",
                "0x0335d5330000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x095ea7b3",
            "selector": "0x095ea7b3",
            "calldata_variants": [
                "0x095ea7b3",
                "0x095ea7b30000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x13af4035",
            "selector": "0x13af4035",
            "calldata_variants": [
                "0x13af4035",
                "0x13af40350000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1c3c0ea8",
            "selector": "0x1c3c0ea8",
            "calldata_variants": [
                "0x1c3c0ea8",
                "0x1c3c0ea80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x200d2ed2",
            "selector": "0x200d2ed2",
            "calldata_variants": [
                "0x200d2ed2",
                "0x200d2ed20000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 797,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1228,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 4715,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 12,
    "guards_detected": [
        {
            "pc": 6519,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 6774,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7049,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7136,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7404,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 7491,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8421,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8508,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8853,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 8940,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 9235,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10560,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        },
        {
            "pc": 10647,
            "type": "msg_sender_eq_const",
            "value": "0xffffffffffffffffffffffffffffffffffffffff"
        }
    ]
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 12
}
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": 11
}