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

Analysis Run

019be3d6-8355-7101-a9ce-9df439e1eb56

failed
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 AM
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
Untrusted DELEGATECALL target reachable
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
40834 artifact.fetch complete 1 / 3 2 months ago
40835 proxy.resolve complete 1 / 3 2 months ago
40836 tool.cast_disasm complete 1 / 3 2 months ago
40837 analysis.bundle complete 1 / 3 2 months ago
40838 capability.graph complete 1 / 3 2 months ago
40839 detector.run complete 1 / 3 2 months ago
40840 validation.fork complete 1 / 3 2 months ago
41331 report.consolidate complete 1 / 6 2 months ago
41332 tool.slither failed 2 / 2 2 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
Status
failed slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-4jh0_suu) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-4jh0_suu) 'forge' returned non-zero exit code 1 Compiling 1 files with Solc 0.4.21 Error: invalid value: string "SaleStagesLib.StageStorage storage", expected a valid Solidity type specifier at line 1 column 1023375 Traceback (most recent call last): File "/var/www/tripwire/.venv/bin/slither", line 10, in <module> sys.exit(main()) ~~~~^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main main_impl(all_detector_classes=detectors, all_printer_classes=printers) ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl ) = process_all(filename, args, detector_classes, printer_classes) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all compilations = compile_all(target, **vars(args)) File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all compilations.append(CryticCompile(target, **kwargs)) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__ self._compile(**kwargs) ~~~~~~~~~~~~~^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile self._platform.compile(self, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile hardhat_like_parsing( ~~~~~~~~~~~~~~~~~~~~^ crytic_compile, str(self._target), build_directory, str(self._project_root) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing raise InvalidCompilation(txt) crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command? /tmp/slither-4jh0_suu/out/build-info is not a directory.
Attempts
2 / 2
Findings
0
Solc
View stderr
Traceback (most recent call last):
  File "/var/www/tripwire/worker/worker.py", line 198, in main
    payload = dispatch_job(job_type, job_id, job_meta, run_data, config, laravel_client)
  File "/var/www/tripwire/worker/worker.py", line 114, in dispatch_job
    return slither_run.run(job_id, job_meta, run_data, config, log, laravel_client)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 1084, in run
    stdout_text, stderr_text, result_json = _run_slither(
                                            ~~~~~~~~~~~~^
        workspace,
        ^^^^^^^^^^
    ...<4 lines>...
        target_path=target_path,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/worker/jobs/slither_run.py", line 958, in _run_slither
    raise RuntimeError(f"slither failed (exit {result.returncode}): {stderr_text or stdout_text}")
RuntimeError: slither failed (exit 1): 'forge clean' running (wd: /tmp/slither-4jh0_suu)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-4jh0_suu)
'forge' returned non-zero exit code 1
Compiling 1 files with Solc 0.4.21
Error: invalid value: string "SaleStagesLib.StageStorage storage", expected a valid Solidity type specifier at line 1 column 1023375
Traceback (most recent call last):
  File "/var/www/tripwire/.venv/bin/slither", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 776, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 882, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/slither/__main__.py", line 96, in process_all
    compilations = compile_all(target, **vars(args))
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 722, in compile_all
    compilations.append(CryticCompile(target, **kwargs))
                        ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 211, in __init__
    self._compile(**kwargs)
    ~~~~~~~~~~~~~^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/crytic_compile.py", line 633, in _compile
    self._platform.compile(self, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/foundry.py", line 102, in compile
    hardhat_like_parsing(
    ~~~~~~~~~~~~~~~~~~~~^
        crytic_compile, str(self._target), build_directory, str(self._project_root)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/var/www/tripwire/.venv/lib/python3.13/site-packages/crytic_compile/platform/hardhat.py", line 52, in hardhat_like_parsing
    raise InvalidCompilation(txt)
crytic_compile.platform.exceptions.InvalidCompilation: Compilation failed. Can you run build command?
/tmp/slither-4jh0_suu/out/build-info is not a directory.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
3
No findings?
no
Summary
Identified replayable KYC signatures that can bypass intended purchase limits, a configuration-dependent signature bypass, and a refund flag bug that undermines refund tracking.
View stdout
{"no_findings":false,"summary":"Identified replayable KYC signatures that can bypass intended purchase limits, a configuration-dependent signature bypass, and a refund flag bug that undermines refund tracking.","findings":[{"severity":"medium","category":"auth","title":"KYC signature replay allows bypassing intended per-user limits","exploit_scenario":"A whitelisted user can reuse the same signed KYC payload multiple times, each time staying under the per-transaction max, to exceed the intended cumulative purchase limit because there is no nonce/usage tracking or cumulative cap enforcement.","recommendation":"Bind signatures to unique nonces and/or the exact purchase amount and track used nonces or cumulative purchases per user; include contract address and chain ID in the signed data to prevent cross-contract replays.","evidence":"`buyWithKYCData` only validates a static payload (address, customerId, min/max) and enforces min/max only per call, with no nonce or cumulative tracking.","locations":["contracts/Contract.sol:1242","contracts/Contract.sol:1251","contracts/Contract.sol:1264"]},{"severity":"low","category":"auth","title":"KYC signature check can be bypassed if signerAddress is unset","exploit_scenario":"If the owner forgets to set `signerAddress`, an attacker can pass an invalid signature that makes `ecrecover` return the zero address, which will satisfy the equality check and allow unauthorized purchases.","recommendation":"Require `signerAddress != address(0)` inside `buyWithKYCData` and consider setting it in the constructor to avoid misconfiguration.","evidence":"`buyWithKYCData` only checks `ecrecover(...) == signerAddress` and does not guard against `signerAddress` being zero; `signerAddress` is only set via an external owner call.","locations":["contracts/Contract.sol:1242","contracts/Contract.sol:1253","contracts/Contract.sol:1272"]},{"severity":"low","category":"other","title":"Refunded flag never set due to equality operator","exploit_scenario":"Because `refunded[msg.sender] == true;` is a comparison, not an assignment, the refund flag never changes. If `refundable` is re-credited (e.g., via another admin refund), the same address can collect multiple refunds without the intended one-time guard.","recommendation":"Change `refunded[msg.sender] == true;` to `refunded[msg.sender] = true;` and consider setting it during `refundParticipant` as well.","evidence":"`collectRefund` attempts to set the refund flag but uses `==`, leaving it permanently false.","locations":["contracts/Contract.sol:1220","contracts/Contract.sol:1227"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-ookuofs6
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be44a-abab-7040-9e8a-bde18a3203fc
--------
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
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-ookuofs6 succeeded in 8ms:
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.21;

// File: contracts/BytesDeserializer.sol

/*
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */

/*
 * Deserialize bytes payloads.
 *
 * Values are in big-endian byte order.


thinking
**Identifying refund logic flaw**

Detected a misuse of equality instead of assignment in refund marking, causing the refunded flag to never update; this could permit multiple refunds if refundable balances are replenished later, indicating a potential vulnerability.
thinking
**Planning deeper audit on refund and buy logic**

Refund flag bug seems minor due to other balance checks, but potential reentrancy and external call risks remain unclear without seeing full buyTokens and related functions; next step is to locate and review the complete Crowdsale contract to analyze external calls and state changes.
exec
/bin/bash -lc "rg -n \"buyTokens|buyWithKYCData|transfer\\(|delegatecall|call\\(\" AUDIT_BUNDLE.txt" in /tmp/codex-ookuofs6 succeeded in 19ms:
172:  function transfer(address to, uint256 value) public returns (bool);
227:  function transfer(address _to, uint256 _value) public returns (bool) {
430:  function transfer(address _to, uint _value) canTransfer(msg.sender) public returns (bool success) {
431:    // Call StandardToken.transfer()
432:   return super.transfer(_to, _value);
657:  function buyTokens(uint128 buyer) internal stopInEmergency {
703:    owner.transfer(weiRaised);
779:    beneficiary.transfer(withdrawalAmount);
1089:      msg.sender.transfer(withdrawalAmount);
1235:    msg.sender.transfer(theirwei);
1248:  function buyWithKYCData(bytes dataframe, uint8 v, bytes32 r, bytes32 s) public payable {
1273:      buyTokens(customerId);

thinking
**Scanning buyTokens and Crowdsale area**

I'll review the code from lines 600 to 800 to understand the logic around buyTokens and Crowdsale functions before proceeding.
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '560,820p'" in /tmp/codex-ookuofs6 succeeded in 8ms:
   560	
   561	contract Stoppable is Ownable {
   562	  bool public halted;
   563	
   564	  event SaleStopped(address owner, uint256 datetime);
   565	
   566	  modifier stopInEmergency {
   567	    require(!halted);
   568	    _;
   569	  }
   570	
   571	  function hasHalted() internal view returns (bool isHalted) {
   572	  	return halted;
   573	  }
   574	
   575	   // called by the owner on emergency, triggers stopped state
   576	  function stopICO() external onlyOwner {
   577	    halted = true;
   578	    SaleStopped(msg.sender, now);
   579	  }


thinking
**Identifying signature replay risk**

Noticed the buyWithKYCData signature uses sha256 without domain separation or nonce, allowing replay across contracts or chains and unlimited reuse by the same whitelisted address. This presents a crucial vulnerability to address.
thinking
**Confirming signature replay enables cumulative limit bypass**

The per-purchase min/max check allows repeated buys with the same signature to exceed intended total limits, creating an accounting/invariant flaw under authorization/signature validation. Also, token release agent setting likely misconfigured but not a direct vulnerability.
exec
/bin/bash -lc "rg -n \"function\\(\\) payable|fallback|receive\" AUDIT_BUNDLE.txt" in /tmp/codex-ookuofs6 succeeded in 19ms:
466:   * @param _to The address that will receive the minted tokens.
1065:  function preallocate(address receiver, uint tokens, uint weiPrice) internal {
1072:    tokenBalanceOf[receiver] = tokenBalanceOf[receiver].add(tokenAmount);
1074:    presaleBalanceOf[receiver] = presaleBalanceOf[receiver].add(weiAmount);
1076:    produceTokens(receiver, weiAmount, tokenAmount);

thinking
**Investigating fallback and function coverage**

I'm checking for the presence of a payable fallback and broader function coverage around line 820 and beyond 1000, focusing on stage-related logic and potential vulnerabilities.
exec
/bin/bash -lc "nl -ba AUDIT_BUNDLE.txt | sed -n '1000,1320p'" in /tmp/codex-ookuofs6 succeeded in 7ms:
  1000	  }
  1001	
  1002	  // This is used for extending the sales start time (and the deadlines of each stage) accordingly
  1003	  function extendStart(uint256 _newStart) external onlyOwner {
  1004	    require(_newStart > startTime);
  1005	    require(_newStart > now); 
  1006	    require(now < startTime);
  1007	
  1008	    uint256 difference = _newStart - startTime;
  1009	    uint256 oldStart = startTime;
  1010	    startTime = _newStart;
  1011	    endTime = endTime + difference;
  1012	
  1013	    // Loop through every stage in the sale
  1014	    for (uint8 i = 0; i < 4; i++) {
  1015	      // Extend that stages deadline accordingly
  1016	      uint256 temp = stages.stages[i].deadline;
  1017	      temp = temp + difference;
  1018	
  1019	      stages.changeDeadline(i, temp);


thinking
**Analyzing signature replay and validation weaknesses**

Identified potential replay risk since signatures lack nonces or unique per-transaction data, allowing indefinite reuse; noted signature uses raw sha256 without Ethereum prefix, which is standard if server handles raw hashes. Also spotted strict inequality limits on purchase amounts and a possible division-by-zero risk in token calculation if stage price is zero.
thinking
**Detailing multiple contract logic and security nuances**

Confirmed division-by-zero risk at exact sale start due to stage 0 price zero causing revert for purchases, but only momentary. Highlighted a flaw where `refunded` flags aren’t properly set, potentially allowing repeated refunds if owner resets credit. Identified missing signer address check in signature verification enabling bypass if unset, and signature replay risks due to no domain separation or nonces. Verified token ownership and release agent interplay is consistent if setup done correctly off-chain. Also noted edge cases in withdrawal logic and intentional but notable operator precedence in emergency halts.
exec
/bin/bash -lc 'rg --files' in /tmp/codex-ookuofs6 succeeded in 11ms:
codex-output-schema.json
AUDIT_BUNDLE.txt
contracts/Contract.sol

thinking
**Confirming source file and line references**

Contracts live in contracts/Contract.sol, which appears as a full concatenated file; I'll verify line numbers there to reference functions accurately, starting with buyWithKYCData.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '1120,1320p'" in /tmp/codex-ookuofs6 succeeded in 7ms:
  1120	 */
  1121	contract KYCCrowdsale is KYCPayloadDeserializer, PickCrowdsale {
  1122	
  1123	  /* Server holds the private key to this address to decide if the AML payload is valid or not. */
  1124	  address public signerAddress;
  1125	  mapping(address => uint256) public refundable;
  1126	  mapping(address => bool) public refunded;
  1127	  mapping(address => bool) public blacklist;
  1128	
  1129	  /* A new server-side signer key was set to be effective */
  1130	  event SignerChanged(address signer);
  1131	  event TokensReclaimed(address user, uint256 amount, uint256 datetime);
  1132	  event AddedToBlacklist(address user, uint256 datetime);
  1133	  event RemovedFromBlacklist(address user, uint256 datetime);
  1134	  event RefundCollected(address user, uint256 datetime);
  1135	  event TokensReleased(address agent, uint256 datetime, uint256 bounty, uint256 founders);
  1136	
  1137	  /*
  1138	   * Constructor.
  1139	   */

thinking
**Locating buyTokens implementation context**

I'm searching around line 630 to find related code and line numbers for buyTokens to guide further exploration or modifications.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '620,780p'" in /tmp/codex-ookuofs6 succeeded in 6ms:
   620	   * @param purchaser who paid for the tokens
   621	   * @param beneficiary who got the tokens
   622	   * @param value weis paid for purchase
   623	   * @param amount amount of tokens purchased
   624	   */
   625	  event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount, uint256 datetime);
   626	
   627	  /*
   628	   * Contructor
   629	   * This initialises the basic crowdsale data
   630	   * It transfers ownership of this token to the chosen beneficiary 
   631	  */
   632	  function Crowdsale(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet, PickToken _token) public {
   633	    require(_startTime >= now);
   634	    require(_endTime >= _startTime);
   635	    require(_rate > 0);
   636	    require(_wallet != address(0));
   637	
   638	    token = _token;
   639	    startTime = _startTime;


thinking
**Audit finds no critical vulnerabilities**

Rechecked key functions and access controls, confirming owner-exclusive permissions prevent misuse. Verified no reentrancy or unchecked arithmetic risks in token operations given controlled inputs.
thinking
```json
{
  "no_findings": false,
  "summary": "Identified medium-severity replay vulnerability in KYC signature allowing users to exceed purchase limits, plus two low-severity issues: signer address unset enabling signature bypass and a bug in refund flag assignment allowing repeated refunds.",
  "findings": [
    {
      "severity": "medium",
      "category": "auth",
      "title": "KYC signature replay allows bypassing max purchase limits",
      "exploit_scenario": "A whitelisted user reuses the same signed KYC data multiple times with purchase amounts under the per-transaction max to cumulatively exceed intended maximum allocations.",
      "recommendation": "Implement nonce or per-user cumulative tracking to prevent signature reuse beyond allowed limits.",
      "evidence": "buyWithKYCData uses signed payload only for address, customerId, min, max and checks weiAmount against min/max per call without nonce or usage tracking in storage.",
      "locations": [
        "contracts/Contract.sol:1242",
        "contracts/Contract.sol:1251",
        "contracts/Contract.sol:1264"
      ]
    },
    {
      "severity": "low",
      "category": "auth",
      "title": "KYC enforcement can be bypassed if signerAddress is unset",
      "exploit_scenario": "If the signerAddress is not configured (remains zero), invalid signatures with certain v/r/s values cause ecrecover to return zero address, passing signature check improperly.",
      "recommendation": "Enforce signerAddress is set and add validation to reject zero addresses during signature verification.",
      "evidence": "signerAddress defaults to zero; require(ecrecover(...) == signerAddress) lacks explicit signerAddress non-zero check; ecrecover can return zero for invalid signatures.",
      "locations": [
        "contracts/Contract.sol:1242",
        "contracts/Contract.sol:1253",
        "contracts/Contract.sol:1272"
      ]
    },
    {
      "severity": "low",
      "category": "other",
      "title": "Refunded flag is never set due to equality operator",
      "exploit_scenario": "Due to use of '==' instead of assignment, the refunded flag is never set, allowing repeated refunds if refundable balance is replenished.",
      "recommendation": "Correct the refunded flag assignment to use '=' so the flag properly marks refunded participants.",
      "evidence": "refunded[msg.sender] == true; uses comparison instead of assignment preventing state update.",
      "locations": [
        "contracts/Contract.sol:1220",
        "contracts/Contract.sol:1225"
      ]
    }
  ]
}
```
codex
{"no_findings":false,"summary":"Identified replayable KYC signatures that can bypass intended purchase limits, a configuration-dependent signature bypass, and a refund flag bug that undermines refund tracking.","findings":[{"severity":"medium","category":"auth","title":"KYC signature replay allows bypassing intended per-user limits","exploit_scenario":"A whitelisted user can reuse the same signed KYC payload multiple times, each time staying under the per-transaction max, to exceed the intended cumulative purchase limit because there is no nonce/usage tracking or cumulative cap enforcement.","recommendation":"Bind signatures to unique nonces and/or the exact purchase amount and track used nonces or cumulative purchases per user; include contract address and chain ID in the signed data to prevent cross-contract replays.","evidence":"`buyWithKYCData` only validates a static payload (address, customerId, min/max) and enforces min/max only per call, with no nonce or cumulative tracking.","locations":["contracts/Contract.sol:1242","contracts/Contract.sol:1251","contracts/Contract.sol:1264"]},{"severity":"low","category":"auth","title":"KYC signature check can be bypassed if signerAddress is unset","exploit_scenario":"If the owner forgets to set `signerAddress`, an attacker can pass an invalid signature that makes `ecrecover` return the zero address, which will satisfy the equality check and allow unauthorized purchases.","recommendation":"Require `signerAddress != address(0)` inside `buyWithKYCData` and consider setting it in the constructor to avoid misconfiguration.","evidence":"`buyWithKYCData` only checks `ecrecover(...) == signerAddress` and does not guard against `signerAddress` being zero; `signerAddress` is only set via an external owner call.","locations":["contracts/Contract.sol:1242","contracts/Contract.sol:1253","contracts/Contract.sol:1272"]},{"severity":"low","category":"other","title":"Refunded flag never set due to equality operator","exploit_scenario":"Because `refunded[msg.sender] == true;` is a comparison, not an assignment, the refund flag never changes. If `refundable` is re-credited (e.g., via another admin refund), the same address can collect multiple refunds without the intended one-time guard.","recommendation":"Change `refunded[msg.sender] == true;` to `refunded[msg.sender] = true;` and consider setting it during `refundParticipant` as well.","evidence":"`collectRefund` attempts to set the refund flag but uses `==`, leaving it permanently false.","locations":["contracts/Contract.sol:1220","contracts/Contract.sol:1227"]}]}
tokens used
38,760
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T06:04:31.089858+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Identified replayable KYC signatures that can bypass intended purchase limits, a configuration-dependent signature bypass, and a refund flag bug that undermines refund tracking.",
    "raw_final": {
        "summary": "Identified replayable KYC signatures that can bypass intended purchase limits, a configuration-dependent signature bypass, and a refund flag bug that undermines refund tracking.",
        "findings": [
            {
                "title": "KYC signature replay allows bypassing intended per-user limits",
                "category": "auth",
                "evidence": "`buyWithKYCData` only validates a static payload (address, customerId, min/max) and enforces min/max only per call, with no nonce or cumulative tracking.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:1242",
                    "contracts/Contract.sol:1251",
                    "contracts/Contract.sol:1264"
                ],
                "recommendation": "Bind signatures to unique nonces and/or the exact purchase amount and track used nonces or cumulative purchases per user; include contract address and chain ID in the signed data to prevent cross-contract replays.",
                "exploit_scenario": "A whitelisted user can reuse the same signed KYC payload multiple times, each time staying under the per-transaction max, to exceed the intended cumulative purchase limit because there is no nonce/usage tracking or cumulative cap enforcement."
            },
            {
                "title": "KYC signature check can be bypassed if signerAddress is unset",
                "category": "auth",
                "evidence": "`buyWithKYCData` only checks `ecrecover(...) == signerAddress` and does not guard against `signerAddress` being zero; `signerAddress` is only set via an external owner call.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:1242",
                    "contracts/Contract.sol:1253",
                    "contracts/Contract.sol:1272"
                ],
                "recommendation": "Require `signerAddress != address(0)` inside `buyWithKYCData` and consider setting it in the constructor to avoid misconfiguration.",
                "exploit_scenario": "If the owner forgets to set `signerAddress`, an attacker can pass an invalid signature that makes `ecrecover` return the zero address, which will satisfy the equality check and allow unauthorized purchases."
            },
            {
                "title": "Refunded flag never set due to equality operator",
                "category": "other",
                "evidence": "`collectRefund` attempts to set the refund flag but uses `==`, leaving it permanently false.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:1220",
                    "contracts/Contract.sol:1227"
                ],
                "recommendation": "Change `refunded[msg.sender] == true;` to `refunded[msg.sender] = true;` and consider setting it during `refundParticipant` as well.",
                "exploit_scenario": "Because `refunded[msg.sender] == true;` is a comparison, not an assignment, the refund flag never changes. If `refundable` is re-credited (e.g., via another admin refund), the same address can collect multiple refunds without the intended one-time guard."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
5
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
12
EXT*/BALANCE
12
Total opcodes
6075
Flags
delegatecall_present heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0242
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH1 0xe0
00000014: PUSH1 0x02
00000016: EXP
00000017: PUSH1 0x00
00000019: CALLDATALOAD
0000001a: DIV
0000001b: AND
0000001c: PUSH4 0x046dc166
00000021: DUP2
00000022: EQ
00000023: PUSH2 0x0247
00000026: JUMPI
00000027: DUP1
00000028: PUSH4 0x15a5d9d8
0000002d: EQ
0000002e: PUSH2 0x0268
00000031: JUMPI
00000032: DUP1
00000033: PUSH4 0x1f130761
00000038: EQ
00000039: PUSH2 0x0297
0000003c: JUMPI
0000003d: DUP1
0000003e: PUSH4 0x26654d57
00000043: EQ
00000044: PUSH2 0x02bc
00000047: JUMPI
00000048: DUP1
00000049: PUSH4 0x26ce3da0
0000004e: EQ
0000004f: PUSH2 0x02e7
00000052: JUMPI
00000053: DUP1
00000054: PUSH4 0x2c4e722e
00000059: EQ
0000005a: PUSH2 0x02fa
0000005d: JUMPI
0000005e: DUP1
0000005f: PUSH4 0x3197cbb6
00000064: EQ
00000065: PUSH2 0x030d
00000068: JUMPI
00000069: DUP1
0000006a: PUSH4 0x38af3eed
0000006f: EQ
00000070: PUSH2 0x0320
00000073: JUMPI
00000074: DUP1
00000075: PUSH4 0x3c20d1a5
0000007a: EQ
0000007b: PUSH2 0x0333
0000007e: JUMPI
0000007f: DUP1
00000080: PUSH4 0x3f4dd268
00000085: EQ
00000086: PUSH2 0x034c
00000089: JUMPI
0000008a: DUP1
0000008b: PUSH4 0x4042b66f
00000090: EQ
00000091: PUSH2 0x0365
00000094: JUMPI
00000095: DUP1
00000096: PUSH4 0x4413a688
0000009b: EQ
0000009c: PUSH2 0x0378
0000009f: JUMPI
000000a0: DUP1
000000a1: PUSH4 0x47d20373
000000a6: EQ
000000a7: PUSH2 0x038b
000000aa: JUMPI
000000ab: DUP1
000000ac: PUSH4 0x521eb273
000000b1: EQ
000000b2: PUSH2 0x03b4
000000b5: JUMPI
000000b6: DUP1
000000b7: PUSH4 0x537df3b6
000000bc: EQ
000000bd: PUSH2 0x03c7
000000c0: JUMPI
000000c1: DUP1
000000c2: PUSH4 0x5b7633d0
000000c7: EQ
000000c8: PUSH2 0x03e6
000000cb: JUMPI
000000cc: DUP1
000000cd: PUSH4 0x5edca2b4
000000d2: EQ
000000d3: PUSH2 0x03f9
000000d6: JUMPI
000000d7: DUP1
000000d8: PUSH4 0x68ec0d99
000000dd: EQ
000000de: PUSH2 0x040c
000000e1: JUMPI
000000e2: DUP1
000000e3: PUSH4 0x693e2279
000000e8: EQ
000000e9: PUSH2 0x042b
000000ec: JUMPI
000000ed: DUP1
000000ee: PUSH4 0x70a08231
000000f3: EQ
000000f4: PUSH2 0x043e
000000f7: JUMPI
000000f8: DUP1
000000f9: PUSH4 0x73752db4
000000fe: EQ
000000ff: PUSH2 0x045d
00000102: JUMPI
00000103: DUP1
00000104: PUSH4 0x756a288e
00000109: EQ
0000010a: PUSH2 0x04fc
0000010d: JUMPI
0000010e: DUP1
0000010f: PUSH4 0x78e97925
00000114: EQ
00000115: PUSH2 0x0515
00000118: JUMPI
00000119: DUP1
0000011a: PUSH4 0x7c6bd96d
0000011f: EQ
00000120: PUSH2 0x0528
00000123: JUMPI
00000124: DUP1
00000125: PUSH4 0x7db71fc4
0000012a: EQ
0000012b: PUSH2 0x053e
0000012e: JUMPI
0000012f: DUP1
00000130: PUSH4 0x88426aec
00000135: EQ
00000136: PUSH2 0x0566
00000139: JUMPI
0000013a: DUP1
0000013b: PUSH4 0x8da5cb5b
00000140: EQ
00000141: PUSH2 0x057f
00000144: JUMPI
00000145: DUP1
00000146: PUSH4 0x906a26e0
0000014b: EQ
0000014c: PUSH2 0x0592
0000014f: JUMPI
00000150: DUP1
00000151: PUSH4 0x91778b9c
00000156: EQ
00000157: PUSH2 0x05a5
0000015a: JUMPI
0000015b: DUP1
0000015c: PUSH4 0x9944d5e7
00000161: EQ
00000162: PUSH2 0x05c1
00000165: JUMPI
00000166: DUP1
00000167: PUSH4 0xb0891f4f
0000016c: EQ
0000016d: PUSH2 0x05d4
00000170: JUMPI
00000171: DUP1
00000172: PUSH4 0xb51459fe
00000177: EQ
00000178: PUSH2 0x05e7
0000017b: JUMPI
0000017c: DUP1
0000017d: PUSH4 0xb9b8af0b
00000182: EQ
00000183: PUSH2 0x060e
00000186: JUMPI
00000187: DUP1
00000188: PUSH4 0xbcdea6f9
0000018d: EQ
0000018e: PUSH2 0x0621
00000191: JUMPI
00000192: DUP1
00000193: PUSH4 0xbdd30406
00000198: EQ
00000199: PUSH2 0x063a
0000019c: JUMPI
0000019d: DUP1
0000019e: PUSH4 0xc033a490
000001a3: EQ
000001a4: PUSH2 0x064d
000001a7: JUMPI
000001a8: DUP1
000001a9: PUSH4 0xc80ec522
000001ae: EQ
000001af: PUSH2 0x066c
000001b2: JUMPI
000001b3: DUP1
000001b4: PUSH4 0xc8e569a8
000001b9: EQ
000001ba: PUSH2 0x067f
000001bd: JUMPI
000001be: DUP1
000001bf: PUSH4 0xd7c7159c
000001c4: EQ
000001c5: PUSH2 0x0692
000001c8: JUMPI
000001c9: DUP1
000001ca: PUSH4 0xdfc6fbaa
000001cf: EQ
000001d0: PUSH2 0x06e8
000001d3: JUMPI
000001d4: DUP1
000001d5: PUSH4 0xe42c08f2
000001da: EQ
000001db: PUSH2 0x0707
000001de: JUMPI
000001df: DUP1
000001e0: PUSH4 0xe6ca0f47
000001e5: EQ
000001e6: PUSH2 0x0726
000001e9: JUMPI
000001ea: DUP1
000001eb: PUSH4 0xecb70fb7
000001f0: EQ
000001f1: PUSH2 0x0739
000001f4: JUMPI
000001f5: DUP1
000001f6: PUSH4 0xf2fde38b
000001fb: EQ
000001fc: PUSH2 0x074c
000001ff: JUMPI
00000200: DUP1
00000201: PUSH4 0xf7c00e2f
00000206: EQ
00000207: PUSH2 0x076b
0000020a: JUMPI
0000020b: DUP1
0000020c: PUSH4 0xf9f92be4
00000211: EQ
00000212: PUSH2 0x077e
00000215: JUMPI
00000216: DUP1
00000217: PUSH4 0xfb0cf7ab
0000021c: EQ
0000021d: PUSH2 0x079d
00000220: JUMPI
00000221: DUP1
00000222: PUSH4 0xfb86a404
00000227: EQ
00000228: PUSH2 0x07b6
0000022b: JUMPI
0000022c: DUP1
0000022d: PUSH4 0xfc0c546a
00000232: EQ
00000233: PUSH2 0x07c9
00000236: JUMPI
00000237: DUP1
00000238: PUSH4 0xfcaa7664
0000023d: EQ
0000023e: PUSH2 0x07dc
00000241: JUMPI
00000242: JUMPDEST
00000243: PUSH1 0x00
00000245: DUP1
00000246: REVERT
00000247: JUMPDEST
00000248: CALLVALUE
00000249: ISZERO
0000024a: PUSH2 0x0252
0000024d: JUMPI
0000024e: PUSH1 0x00
00000250: DUP1
00000251: REVERT
00000252: JUMPDEST
00000253: PUSH2 0x0266
00000256: PUSH1 0x01
00000258: PUSH1 0xa0
0000025a: PUSH1 0x02
0000025c: EXP
0000025d: SUB
0000025e: PUSH1 0x04
00000260: CALLDATALOAD
00000261: AND
00000262: PUSH2 0x07ef
00000265: JUMP
00000266: JUMPDEST
00000267: STOP
00000268: JUMPDEST
00000269: CALLVALUE
0000026a: ISZERO
0000026b: PUSH2 0x0273
0000026e: JUMPI
0000026f: PUSH1 0x00
00000271: DUP1
00000272: REVERT
00000273: JUMPDEST
00000274: PUSH2 0x027b
00000277: PUSH2 0x088e
0000027a: JUMP
0000027b: JUMPDEST
0000027c: PUSH1 0x40
0000027e: MLOAD
0000027f: PUSH1 0x01
00000281: PUSH1 0xa0
00000283: PUSH1 0x02
00000285: EXP
00000286: SUB
00000287: SWAP1
00000288: SWAP2
00000289: AND
0000028a: DUP2
0000028b: MSTORE
0000028c: PUSH1 0x20
0000028e: ADD
0000028f: PUSH1 0x40
00000291: MLOAD
00000292: DUP1
00000293: SWAP2
00000294: SUB
00000295: SWAP1
00000296: RETURN
00000297: JUMPDEST
00000298: CALLVALUE
00000299: ISZERO
0000029a: PUSH2 0x02a2
0000029d: JUMPI
0000029e: PUSH1 0x00
000002a0: DUP1
000002a1: REVERT
000002a2: JUMPDEST
000002a3: PUSH2 0x02aa
000002a6: PUSH2 0x089d
000002a9: JUMP
000002aa: JUMPDEST
000002ab: PUSH1 0x40
000002ad: MLOAD
000002ae: SWAP1
000002af: DUP2
000002b0: MSTORE
000002b1: PUSH1 0x20
000002b3: ADD
000002b4: PUSH1 0x40
000002b6: MLOAD
000002b7: DUP1
000002b8: SWAP2
000002b9: SUB
000002ba: SWAP1
000002bb: RETURN
000002bc: JUMPDEST
000002bd: CALLVALUE
000002be: ISZERO
000002bf: PUSH2 0x02c7
000002c2: JUMPI
000002c3: PUSH1 0x00
000002c5: DUP1
000002c6: REVERT
000002c7: JUMPDEST
000002c8: PUSH2 0x0266
000002cb: PUSH1 0x01
000002cd: PUSH1 0xa0
000002cf: PUSH1 0x02
000002d1: EXP
000002d2: SUB
000002d3: PUSH1 0x04
000002d5: CALLDATALOAD
000002d6: AND
000002d7: PUSH1 0x24
000002d9: CALLDATALOAD
000002da: PUSH1 0x44
000002dc: CALLDATALOAD
000002dd: PUSH1 0x64
000002df: CALLDATALOAD
000002e0: PUSH1 0x84
000002e2: CALLDATALOAD
000002e3: PUSH2 0x08a3
000002e6: JUMP
000002e7: JUMPDEST
000002e8: CALLVALUE
000002e9: ISZERO
000002ea: PUSH2 0x02f2
000002ed: JUMPI
000002ee: PUSH1 0x00
000002f0: DUP1
000002f1: REVERT
000002f2: JUMPDEST
000002f3: PUSH2 0x0266
000002f6: PUSH2 0x0a8c
000002f9: JUMP
000002fa: JUMPDEST
000002fb: CALLVALUE
000002fc: ISZERO
000002fd: PUSH2 0x0305
00000300: JUMPI
00000301: PUSH1 0x00
00000303: DUP1
00000304: REVERT
00000305: JUMPDEST
00000306: PUSH2 0x02aa
00000309: PUSH2 0x0b6e
0000030c: JUMP
0000030d: JUMPDEST
0000030e: CALLVALUE
0000030f: ISZERO
00000310: PUSH2 0x0318
00000313: JUMPI
00000314: PUSH1 0x00
00000316: DUP1
00000317: REVERT
00000318: JUMPDEST
00000319: PUSH2 0x02aa
0000031c: PUSH2 0x0b74
0000031f: JUMP
00000320: JUMPDEST
00000321: CALLVALUE
00000322: ISZERO
00000323: PUSH2 0x032b
00000326: JUMPI
00000327: PUSH1 0x00
00000329: DUP1
0000032a: REVERT
0000032b: JUMPDEST
0000032c: PUSH2 0x027b
0000032f: PUSH2 0x0b7a
00000332: JUMP
00000333: JUMPDEST
00000334: CALLVALUE
00000335: ISZERO
00000336: PUSH2 0x033e
00000339: JUMPI
0000033a: PUSH1 0x00
0000033c: DUP1
0000033d: REVERT
0000033e: JUMPDEST
0000033f: PUSH2 0x02aa
00000342: PUSH1 0xff
00000344: PUSH1 0x04
00000346: CALLDATALOAD
00000347: AND
00000348: PUSH2 0x0b8e
0000034b: JUMP
0000034c: JUMPDEST
0000034d: CALLVALUE
0000034e: ISZERO
0000034f: PUSH2 0x0357
00000352: JUMPI
00000353: PUSH1 0x00
00000355: DUP1
00000356: REVERT
00000357: JUMPDEST
00000358: PUSH2 0x0266
0000035b: PUSH1 0x04
0000035d: CALLDATALOAD
0000035e: PUSH1 0x24
00000360: CALLDATALOAD
00000361: PUSH2 0x0ba6
00000364: JUMP
00000365: JUMPDEST
00000366: CALLVALUE
00000367: ISZERO
00000368: PUSH2 0x0370
0000036b: JUMPI
0000036c: PUSH1 0x00
0000036e: DUP1
0000036f: REVERT
00000370: JUMPDEST
00000371: PUSH2 0x02aa
00000374: PUSH2 0x0cc6
00000377: JUMP
00000378: JUMPDEST
00000379: CALLVALUE
0000037a: ISZERO
0000037b: PUSH2 0x0383
0000037e: JUMPI
0000037f: PUSH1 0x00
00000381: DUP1
00000382: REVERT
00000383: JUMPDEST
00000384: PUSH2 0x0266
00000387: PUSH2 0x0ccc
0000038a: JUMP
0000038b: JUMPDEST
0000038c: CALLVALUE
0000038d: ISZERO
0000038e: PUSH2 0x0396
00000391: JUMPI
00000392: PUSH1 0x00
00000394: DUP1
00000395: REVERT
00000396: JUMPDEST
00000397: PUSH2 0x039e
0000039a: PUSH2 0x0d63
0000039d: JUMP
0000039e: JUMPDEST
0000039f: PUSH1 0x40
000003a1: MLOAD
000003a2: PUSH1 0xff
000003a4: SWAP1
000003a5: SWAP2
000003a6: AND
000003a7: DUP2
000003a8: MSTORE
000003a9: PUSH1 0x20
000003ab: ADD
000003ac: PUSH1 0x40
000003ae: MLOAD
000003af: DUP1
000003b0: SWAP2
000003b1: SUB
000003b2: SWAP1
000003b3: RETURN
000003b4: JUMPDEST
000003b5: CALLVALUE
000003b6: ISZERO
000003b7: PUSH2 0x03bf
000003ba: JUMPI
000003bb: PUSH1 0x00
000003bd: DUP1
000003be: REVERT
000003bf: JUMPDEST
000003c0: PUSH2 0x027b
000003c3: PUSH2 0x0d6c
000003c6: JUMP
000003c7: JUMPDEST
000003c8: CALLVALUE
000003c9: ISZERO
000003ca: PUSH2 0x03d2
000003cd: JUMPI
000003ce: PUSH1 0x00
000003d0: DUP1
000003d1: REVERT
000003d2: JUMPDEST
000003d3: PUSH2 0x0266
000003d6: PUSH1 0x01
000003d8: PUSH1 0xa0
000003da: PUSH1 0x02
000003dc: EXP
000003dd: SUB
000003de: PUSH1 0x04
000003e0: CALLDATALOAD
000003e1: AND
000003e2: PUSH2 0x0d7b
000003e5: JUMP
000003e6: JUMPDEST
000003e7: CALLVALUE
000003e8: ISZERO
000003e9: PUSH2 0x03f1
000003ec: JUMPI
000003ed: PUSH1 0x00
000003ef: DUP1
000003f0: REVERT
000003f1: JUMPDEST
000003f2: PUSH2 0x027b
000003f5: PUSH2 0x0e2a
000003f8: JUMP
000003f9: JUMPDEST
000003fa: CALLVALUE
000003fb: ISZERO
000003fc: PUSH2 0x0404
000003ff: JUMPI
00000400: PUSH1 0x00
00000402: DUP1
00000403: REVERT
00000404: JUMPDEST
00000405: PUSH2 0x0266
00000408: PUSH2 0x0e39
0000040b: JUMP
0000040c: JUMPDEST
0000040d: CALLVALUE
0000040e: ISZERO
0000040f: PUSH2 0x0417
00000412: JUMPI
00000413: PUSH1 0x00
00000415: DUP1
00000416: REVERT
00000417: JUMPDEST
00000418: PUSH2 0x02aa
0000041b: PUSH1 0x01
0000041d: PUSH1 0xa0
0000041f: PUSH1 0x02
00000421: EXP
00000422: SUB
00000423: PUSH1 0x04
00000425: CALLDATALOAD
00000426: AND
00000427: PUSH2 0x0f53
0000042a: JUMP
0000042b: JUMPDEST
0000042c: CALLVALUE
0000042d: ISZERO
0000042e: PUSH2 0x0436
00000431: JUMPI
00000432: PUSH1 0x00
00000434: DUP1
00000435: REVERT
00000436: JUMPDEST
00000437: PUSH2 0x02aa
0000043a: PUSH2 0x0f65
0000043d: JUMP
0000043e: JUMPDEST
0000043f: CALLVALUE
00000440: ISZERO
00000441: PUSH2 0x0449
00000444: JUMPI
00000445: PUSH1 0x00
00000447: DUP1
00000448: REVERT
00000449: JUMPDEST
0000044a: PUSH2 0x02aa
0000044d: PUSH1 0x01
0000044f: PUSH1 0xa0
00000451: PUSH1 0x02
00000453: EXP
00000454: SUB
00000455: PUSH1 0x04
00000457: CALLDATALOAD
00000458: AND
00000459: PUSH2 0x0f6b
0000045c: JUMP
0000045d: JUMPDEST
0000045e: CALLVALUE
0000045f: ISZERO
00000460: PUSH2 0x0468
00000463: JUMPI
00000464: PUSH1 0x00
00000466: DUP1
00000467: REVERT
00000468: JUMPDEST
00000469: PUSH2 0x04ae
0000046c: PUSH1 0x04
0000046e: PUSH1 0x24
00000470: DUP2
00000471: CALLDATALOAD
00000472: DUP2
00000473: DUP2
00000474: ADD
00000475: SWAP1
00000476: DUP4
00000477: ADD
00000478: CALLDATALOAD
00000479: DUP1
0000047a: PUSH1 0x20
0000047c: PUSH1 0x1f
0000047e: DUP3
0000047f: ADD
00000480: DUP2
00000481: SWAP1
00000482: DIV
00000483: DUP2
00000484: MUL
00000485: ADD
00000486: PUSH1 0x40
00000488: MLOAD
00000489: SWAP1
0000048a: DUP2
0000048b: ADD
0000048c: PUSH1 0x40
0000048e: MSTORE
0000048f: DUP2
00000490: DUP2
00000491: MSTORE
00000492: SWAP3
00000493: SWAP2
00000494: SWAP1
00000495: PUSH1 0x20
00000497: DUP5
00000498: ADD
00000499: DUP4
0000049a: DUP4
0000049b: DUP1
0000049c: DUP3
0000049d: DUP5
0000049e: CALLDATACOPY
0000049f: POP
000004a0: SWAP5
000004a1: SWAP7
000004a2: POP
000004a3: PUSH2 0x0f7d
000004a6: SWAP6
000004a7: POP
000004a8: POP
000004a9: POP
000004aa: POP
000004ab: POP
000004ac: POP
000004ad: JUMP
000004ae: JUMPDEST
000004af: PUSH1 0x40
000004b1: MLOAD
000004b2: PUSH1 0x01
000004b4: PUSH1 0xa0
000004b6: PUSH1 0x02
000004b8: EXP
000004b9: SUB
000004ba: SWAP1
000004bb: SWAP5
000004bc: AND
000004bd: DUP5
000004be: MSTORE
000004bf: PUSH16 0xffffffffffffffffffffffffffffffff
000004d0: SWAP1
000004d1: SWAP3
000004d2: AND
000004d3: PUSH1 0x20
000004d5: DUP5
000004d6: ADD
000004d7: MSTORE
000004d8: PUSH4 0xffffffff
000004dd: SWAP1
000004de: DUP2
000004df: AND
000004e0: PUSH1 0x40
000004e2: DUP1
000004e3: DUP6
000004e4: ADD
000004e5: SWAP2
000004e6: SWAP1
000004e7: SWAP2
000004e8: MSTORE
000004e9: SWAP2
000004ea: AND
000004eb: PUSH1 0x60
000004ed: DUP4
000004ee: ADD
000004ef: MSTORE
000004f0: PUSH1 0x80
000004f2: SWAP1
000004f3: SWAP2
000004f4: ADD
000004f5: SWAP1
000004f6: MLOAD
000004f7: DUP1
000004f8: SWAP2
000004f9: SUB
000004fa: SWAP1
000004fb: RETURN
000004fc: JUMPDEST
000004fd: CALLVALUE
000004fe: ISZERO
000004ff: PUSH2 0x0507
00000502: JUMPI
00000503: PUSH1 0x00
00000505: DUP1
00000506: REVERT
00000507: JUMPDEST
00000508: PUSH2 0x02aa
0000050b: PUSH1 0xff
0000050d: PUSH1 0x04
0000050f: CALLDATALOAD
00000510: AND
00000511: PUSH2 0x1309
00000514: JUMP
00000515: JUMPDEST
00000516: CALLVALUE
00000517: ISZERO
00000518: PUSH2 0x0520
0000051b: JUMPI
0000051c: PUSH1 0x00
0000051e: DUP1
0000051f: REVERT
00000520: JUMPDEST
00000521: PUSH2 0x02aa
00000524: PUSH2 0x1321
00000527: JUMP
00000528: JUMPDEST
00000529: CALLVALUE
0000052a: ISZERO
0000052b: PUSH2 0x0533
0000052e: JUMPI
0000052f: PUSH1 0x00
00000531: DUP1
00000532: REVERT
00000533: JUMPDEST
00000534: PUSH2 0x0266
00000537: PUSH1 0x04
00000539: CALLDATALOAD
0000053a: PUSH2 0x1327
0000053d: JUMP
0000053e: JUMPDEST
0000053f: CALLVALUE
00000540: ISZERO
00000541: PUSH2 0x0549
00000544: JUMPI
00000545: PUSH1 0x00
00000547: DUP1
00000548: REVERT
00000549: JUMPDEST
0000054a: PUSH2 0x02aa
0000054d: PUSH16 0xffffffffffffffffffffffffffffffff
0000055e: PUSH1 0x04
00000560: CALLDATALOAD
00000561: AND
00000562: PUSH2 0x1412
00000565: JUMP
00000566: JUMPDEST
00000567: CALLVALUE
00000568: ISZERO
00000569: PUSH2 0x0571
0000056c: JUMPI
0000056d: PUSH1 0x00
0000056f: DUP1
00000570: REVERT
00000571: JUMPDEST
00000572: PUSH2 0x02aa
00000575: PUSH1 0xff
00000577: PUSH1 0x04
00000579: CALLDATALOAD
0000057a: AND
0000057b: PUSH2 0x1424
0000057e: JUMP
0000057f: JUMPDEST
00000580: CALLVALUE
00000581: ISZERO
00000582: PUSH2 0x058a
00000585: JUMPI
00000586: PUSH1 0x00
00000588: DUP1
00000589: REVERT
0000058a: JUMPDEST
0000058b: PUSH2 0x027b
0000058e: PUSH2 0x1439
00000591: JUMP
00000592: JUMPDEST
00000593: CALLVALUE
00000594: ISZERO
00000595: PUSH2 0x059d
00000598: JUMPI
00000599: PUSH1 0x00
0000059b: DUP1
0000059c: REVERT
0000059d: JUMPDEST
0000059e: PUSH2 0x02aa
000005a1: PUSH2 0x1448
000005a4: JUMP
000005a5: JUMPDEST
000005a6: CALLVALUE
000005a7: ISZERO
000005a8: PUSH2 0x05b0
000005ab: JUMPI
000005ac: PUSH1 0x00
000005ae: DUP1
000005af: REVERT
000005b0: JUMPDEST
000005b1: PUSH2 0x0266
000005b4: PUSH1 0xff
000005b6: PUSH1 0x04
000005b8: CALLDATALOAD
000005b9: AND
000005ba: PUSH1 0x24
000005bc: CALLDATALOAD
000005bd: PUSH2 0x144e
000005c0: JUMP
000005c1: JUMPDEST
000005c2: CALLVALUE
000005c3: ISZERO
000005c4: PUSH2 0x05cc
000005c7: JUMPI
000005c8: PUSH1 0x00
000005ca: DUP1
000005cb: REVERT
000005cc: JUMPDEST
000005cd: PUSH2 0x02aa
000005d0: PUSH2 0x14d2
000005d3: JUMP
000005d4: JUMPDEST
000005d5: CALLVALUE
000005d6: ISZERO
000005d7: PUSH2 0x05df
000005da: JUMPI
000005db: PUSH1 0x00
000005dd: DUP1
000005de: REVERT
000005df: JUMPDEST
000005e0: PUSH2 0x0266
000005e3: PUSH2 0x14d8
000005e6: JUMP
000005e7: JUMPDEST
000005e8: CALLVALUE
000005e9: ISZERO
000005ea: PUSH2 0x05f2
000005ed: JUMPI
000005ee: PUSH1 0x00
000005f0: DUP1
000005f1: REVERT
000005f2: JUMPDEST
000005f3: PUSH2 0x05fa
000005f6: PUSH2 0x1544
000005f9: JUMP
000005fa: JUMPDEST
000005fb: PUSH1 0x40
000005fd: MLOAD
000005fe: SWAP1
000005ff: ISZERO
00000600: ISZERO
00000601: DUP2
00000602: MSTORE
00000603: PUSH1 0x20
00000605: ADD
00000606: PUSH1 0x40
00000608: MLOAD
00000609: DUP1
0000060a: SWAP2
0000060b: SUB
0000060c: SWAP1
0000060d: RETURN
0000060e: JUMPDEST
0000060f: CALLVALUE
00000610: ISZERO
00000611: PUSH2 0x0619
00000614: JUMPI
00000615: PUSH1 0x00
00000617: DUP1
00000618: REVERT
00000619: JUMPDEST
0000061a: PUSH2 0x05fa
0000061d: PUSH2 0x154d
00000620: JUMP
00000621: JUMPDEST
00000622: CALLVALUE
00000623: ISZERO
00000624: PUSH2 0x062c
00000627: JUMPI
00000628: PUSH1 0x00
0000062a: DUP1
0000062b: REVERT
0000062c: JUMPDEST
0000062d: PUSH2 0x02aa
00000630: PUSH1 0xff
00000632: PUSH1 0x04
00000634: CALLDATALOAD
00000635: AND
00000636: PUSH2 0x155d
00000639: JUMP
0000063a: JUMPDEST
0000063b: CALLVALUE
0000063c: ISZERO
0000063d: PUSH2 0x0645
00000640: JUMPI
00000641: PUSH1 0x00
00000643: DUP1
00000644: REVERT
00000645: JUMPDEST
00000646: PUSH2 0x0266
00000649: PUSH2 0x1575
0000064c: JUMP
0000064d: JUMPDEST
0000064e: CALLVALUE
0000064f: ISZERO
00000650: PUSH2 0x0658
00000653: JUMPI
00000654: PUSH1 0x00
00000656: DUP1
00000657: REVERT
00000658: JUMPDEST
00000659: PUSH2 0x05fa
0000065c: PUSH1 0x01
0000065e: PUSH1 0xa0
00000660: PUSH1 0x02
00000662: EXP
00000663: SUB
00000664: PUSH1 0x04
00000666: CALLDATALOAD
00000667: AND
00000668: PUSH2 0x169e
0000066b: JUMP
0000066c: JUMPDEST
0000066d: CALLVALUE
0000066e: ISZERO
0000066f: PUSH2 0x0677
00000672: JUMPI
00000673: PUSH1 0x00
00000675: DUP1
00000676: REVERT
00000677: JUMPDEST
00000678: PUSH2 0x02aa
0000067b: PUSH2 0x16b3
0000067e: JUMP
0000067f: JUMPDEST
00000680: CALLVALUE
00000681: ISZERO
00000682: PUSH2 0x068a
00000685: JUMPI
00000686: PUSH1 0x00
00000688: DUP1
00000689: REVERT
0000068a: JUMPDEST
0000068b: PUSH2 0x0266
0000068e: PUSH2 0x16b9
00000691: JUMP
00000692: JUMPDEST
00000693: PUSH2 0x0266
00000696: PUSH1 0x04
00000698: PUSH1 0x24
0000069a: DUP2
0000069b: CALLDATALOAD
0000069c: DUP2
0000069d: DUP2
0000069e: ADD
0000069f: SWAP1
000006a0: DUP4
000006a1: ADD
000006a2: CALLDATALOAD
000006a3: DUP1
000006a4: PUSH1 0x20
000006a6: PUSH1 0x1f
000006a8: DUP3
000006a9: ADD
000006aa: DUP2
000006ab: SWAP1
000006ac: DIV
000006ad: DUP2
000006ae: MUL
000006af: ADD
000006b0: PUSH1 0x40
000006b2: MLOAD
000006b3: SWAP1
000006b4: DUP2
000006b5: ADD
000006b6: PUSH1 0x40
000006b8: MSTORE
000006b9: DUP2
000006ba: DUP2
000006bb: MSTORE
000006bc: SWAP3
000006bd: SWAP2
000006be: SWAP1
000006bf: PUSH1 0x20
000006c1: DUP5
000006c2: ADD
000006c3: DUP4
000006c4: DUP4
000006c5: DUP1
000006c6: DUP3
000006c7: DUP5
000006c8: CALLDATACOPY
000006c9: POP
000006ca: SWAP5
000006cb: SWAP7
000006cc: POP
000006cd: POP
000006ce: PUSH1 0xff
000006d0: DUP6
000006d1: CALLDATALOAD
000006d2: AND
000006d3: SWAP5
000006d4: PUSH1 0x20
000006d6: DUP2
000006d7: ADD
000006d8: CALLDATALOAD
000006d9: SWAP5
000006da: POP
000006db: PUSH1 0x40
000006dd: ADD
000006de: CALLDATALOAD
000006df: SWAP3
000006e0: POP
000006e1: PUSH2 0x173e
000006e4: SWAP2
000006e5: POP
000006e6: POP
000006e7: JUMP
000006e8: JUMPDEST
000006e9: CALLVALUE
000006ea: ISZERO
000006eb: PUSH2 0x06f3
000006ee: JUMPI
000006ef: PUSH1 0x00
000006f1: DUP1
000006f2: REVERT
000006f3: JUMPDEST
000006f4: PUSH2 0x02aa
000006f7: PUSH1 0x01
000006f9: PUSH1 0xa0
000006fb: PUSH1 0x02
000006fd: EXP
000006fe: SUB
000006ff: PUSH1 0x04
00000701: CALLDATALOAD
00000702: AND
00000703: PUSH2 0x18cb
00000706: JUMP
00000707: JUMPDEST
00000708: CALLVALUE
00000709: ISZERO
0000070a: PUSH2 0x0712
0000070d: JUMPI
0000070e: PUSH1 0x00
00000710: DUP1
00000711: REVERT
00000712: JUMPDEST
00000713: PUSH2 0x02aa
00000716: PUSH1 0x01
00000718: PUSH1 0xa0
0000071a: PUSH1 0x02
0000071c: EXP
0000071d: SUB
0000071e: PUSH1 0x04
00000720: CALLDATALOAD
00000721: AND
00000722: PUSH2 0x18dd
00000725: JUMP
00000726: JUMPDEST
00000727: CALLVALUE
00000728: ISZERO
00000729: PUSH2 0x0731
0000072c: JUMPI
0000072d: PUSH1 0x00
0000072f: DUP1
00000730: REVERT
00000731: JUMPDEST
00000732: PUSH2 0x0266
00000735: PUSH2 0x18ef
00000738: JUMP
00000739: JUMPDEST
0000073a: CALLVALUE
0000073b: ISZERO
0000073c: PUSH2 0x0744
0000073f: JUMPI
00000740: PUSH1 0x00
00000742: DUP1
00000743: REVERT
00000744: JUMPDEST
00000745: PUSH2 0x05fa
00000748: PUSH2 0x1a0f
0000074b: JUMP
0000074c: JUMPDEST
0000074d: CALLVALUE
0000074e: ISZERO
0000074f: PUSH2 0x0757
00000752: JUMPI
00000753: PUSH1 0x00
00000755: DUP1
00000756: REVERT
00000757: JUMPDEST
00000758: PUSH2 0x0266
0000075b: PUSH1 0x01
0000075d: PUSH1 0xa0
0000075f: PUSH1 0x02
00000761: EXP
00000762: SUB
00000763: PUSH1 0x04
00000765: CALLDATALOAD
00000766: AND
00000767: PUSH2 0x1a31
0000076a: JUMP
0000076b: JUMPDEST
0000076c: CALLVALUE
0000076d: ISZERO
0000076e: PUSH2 0x0776
00000771: JUMPI
00000772: PUSH1 0x00
00000774: DUP1
00000775: REVERT
00000776: JUMPDEST
00000777: PUSH2 0x02aa
0000077a: PUSH2 0x1acc
0000077d: JUMP
0000077e: JUMPDEST
0000077f: CALLVALUE
00000780: ISZERO
00000781: PUSH2 0x0789
00000784: JUMPI
00000785: PUSH1 0x00
00000787: DUP1
00000788: REVERT
00000789: JUMPDEST
0000078a: PUSH2 0x05fa
0000078d: PUSH1 0x01
0000078f: PUSH1 0xa0
00000791: PUSH1 0x02
00000793: EXP
00000794: SUB
00000795: PUSH1 0x04
00000797: CALLDATALOAD
00000798: AND
00000799: PUSH2 0x1ad2
0000079c: JUMP
0000079d: JUMPDEST
0000079e: CALLVALUE
0000079f: ISZERO
000007a0: PUSH2 0x07a8
000007a3: JUMPI
000007a4: PUSH1 0x00
000007a6: DUP1
000007a7: REVERT
000007a8: JUMPDEST
000007a9: PUSH2 0x02aa
000007ac: PUSH1 0xff
000007ae: PUSH1 0x04
000007b0: CALLDATALOAD
000007b1: AND
000007b2: PUSH2 0x1ae7
000007b5: JUMP
000007b6: JUMPDEST
000007b7: CALLVALUE
000007b8: ISZERO
000007b9: PUSH2 0x07c1
000007bc: JUMPI
000007bd: PUSH1 0x00
000007bf: DUP1
000007c0: REVERT
000007c1: JUMPDEST
000007c2: PUSH2 0x02aa
000007c5: PUSH2 0x1aff
000007c8: JUMP
000007c9: JUMPDEST
000007ca: CALLVALUE
000007cb: ISZERO
000007cc: PUSH2 0x07d4
000007cf: JUMPI
000007d0: PUSH1 0x00
000007d2: DUP1
000007d3: REVERT
000007d4: JUMPDEST
000007d5: PUSH2 0x027b
000007d8: PUSH2 0x1b05
000007db: JUMP
000007dc: JUMPDEST
000007dd: CALLVALUE
000007de: ISZERO
000007df: PUSH2 0x07e7
000007e2: JUMPI
000007e3: PUSH1 0x00
000007e5: DUP1
000007e6: REVERT
000007e7: JUMPDEST
000007e8: PUSH2 0x039e
000007eb: PUSH2 0x1b14
000007ee: JUMP
000007ef: JUMPDEST
000007f0: PUSH1 0x00
000007f2: SLOAD
000007f3: CALLER
000007f4: PUSH1 0x01
000007f6: PUSH1 0xa0
000007f8: PUSH1 0x02
000007fa: EXP
000007fb: SUB
000007fc: SWAP1
000007fd: DUP2
000007fe: AND
000007ff: SWAP2
00000800: AND
00000801: EQ
00000802: PUSH2 0x080a
00000805: JUMPI
00000806: PUSH1 0x00
00000808: DUP1
00000809: REVERT
0000080a: JUMPDEST
0000080b: PUSH1 0x01
0000080d: PUSH1 0xa0
0000080f: PUSH1 0x02
00000811: EXP
00000812: SUB
00000813: DUP2
00000814: AND
00000815: ISZERO
00000816: ISZERO
00000817: PUSH2 0x081f
0000081a: JUMPI
0000081b: PUSH1 0x00
0000081d: DUP1
0000081e: REVERT
0000081f: JUMPDEST
00000820: PUSH1 0x19
00000822: DUP1
00000823: SLOAD
00000824: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00000839: NOT
0000083a: AND
0000083b: PUSH1 0x01
0000083d: PUSH1 0xa0
0000083f: PUSH1 0x02
00000841: EXP
00000842: SUB
00000843: DUP4
00000844: DUP2
00000845: AND
00000846: SWAP2
00000847: SWAP1
00000848: SWAP2
00000849: OR
0000084a: SWAP2
0000084b: DUP3
0000084c: SWAP1
0000084d: SSTORE
0000084e: PUSH32 0x5719a5656c5cfdaafa148ecf366fd3b0a7fae06449ce2a46225977fb7417e29d
0000086f: SWAP2
00000870: AND
00000871: PUSH1 0x40
00000873: MLOAD
00000874: PUSH1 0x01
00000876: PUSH1 0xa0
00000878: PUSH1 0x02
0000087a: EXP
0000087b: SUB
0000087c: SWAP1
0000087d: SWAP2
0000087e: AND
0000087f: DUP2
00000880: MSTORE
00000881: PUSH1 0x20
00000883: ADD
00000884: PUSH1 0x40
00000886: MLOAD
00000887: DUP1
00000888: SWAP2
00000889: SUB
0000088a: SWAP1
0000088b: LOG1
0000088c: POP
0000088d: JUMP
0000088e: JUMPDEST
0000088f: PUSH1 0x05
00000891: SLOAD
00000892: PUSH1 0x01
00000894: PUSH1 0xa0
00000896: PUSH1 0x02
00000898: EXP
00000899: SUB
0000089a: AND
0000089b: DUP2
0000089c: JUMP
0000089d: JUMPDEST
0000089e: PUSH1 0x09
000008a0: SLOAD
000008a1: DUP2
000008a2: JUMP
000008a3: JUMPDEST
000008a4: PUSH1 0x00
000008a6: DUP1
000008a7: SLOAD
000008a8: DUP2
000008a9: SWAP1
000008aa: CALLER
000008ab: PUSH1 0x01
000008ad: PUSH1 0xa0
000008af: PUSH1 0x02
000008b1: EXP
000008b2: SUB
000008b3: SWAP1
000008b4: DUP2
000008b5: AND
000008b6: SWAP2
000008b7: AND
000008b8: EQ
000008b9: PUSH2 0x08c1
000008bc: JUMPI
000008bd: PUSH1 0x00
000008bf: DUP1
000008c0: REVERT
000008c1: JUMPDEST
000008c2: PUSH1 0x01
000008c4: PUSH1 0xa0
000008c6: PUSH1 0x02
000008c8: EXP
000008c9: SUB
000008ca: DUP8
000008cb: AND
000008cc: PUSH1 0x00
000008ce: SWAP1
000008cf: DUP2
000008d0: MSTORE
000008d1: PUSH1 0x0b
000008d3: PUSH1 0x20
000008d5: MSTORE
000008d6: PUSH1 0x40
000008d8: DUP2
000008d9: KECCAK256
000008da: SLOAD
000008db: GT
000008dc: PUSH2 0x08e4
000008df: JUMPI
000008e0: PUSH1 0x00
000008e2: DUP1
000008e3: REVERT
000008e4: JUMPDEST
000008e5: POP
000008e6: POP
000008e7: PUSH1 0x01
000008e9: PUSH1 0xa0
000008eb: PUSH1 0x02
000008ed: EXP
000008ee: SUB
000008ef: DUP6
000008f0: AND
000008f1: PUSH1 0x00
000008f3: SWAP1
000008f4: DUP2
000008f5: MSTORE
000008f6: PUSH1 0x0b
000008f8: PUSH1 0x20
000008fa: SWAP1
000008fb: DUP2
000008fc: MSTORE
000008fd: PUSH1 0x40
000008ff: DUP1
00000900: DUP4
00000901: KECCAK256
00000902: DUP1
00000903: SLOAD
00000904: PUSH1 0x0d
00000906: DUP5
00000907: MSTORE
00000908: DUP3
00000909: DUP6
0000090a: KECCAK256
0000090b: DUP1
0000090c: SLOAD
0000090d: SWAP3
0000090e: DUP7
0000090f: SWAP1
00000910: SSTORE
00000911: DUP6
00000912: SWAP1
00000913: SSTORE
00000914: PUSH1 0x1a
00000916: SWAP1
00000917: SWAP4
00000918: MSTORE
00000919: SWAP3
0000091a: KECCAK256
0000091b: DUP2
0000091c: SWAP1
0000091d: SSTORE
0000091e: PUSH1 0x07
00000920: SLOAD
00000921: SWAP1
00000922: SWAP2
00000923: SWAP1
00000924: PUSH2 0x0933
00000927: SWAP1
00000928: DUP4
00000929: PUSH4 0xffffffff
0000092e: PUSH2 0x1b81
00000931: AND
00000932: JUMP
00000933: JUMPDEST
00000934: PUSH1 0x07
00000936: SSTORE
00000937: PUSH1 0x09
00000939: SLOAD
0000093a: PUSH2 0x0949
0000093d: SWAP1
0000093e: DUP3
0000093f: PUSH4 0xffffffff
00000944: PUSH2 0x1b81
00000947: AND
00000948: JUMP
00000949: JUMPDEST
0000094a: PUSH1 0x09
0000094c: SSTORE
0000094d: PUSH1 0x01
0000094f: SLOAD
00000950: PUSH1 0x01
00000952: PUSH1 0xa0
00000954: PUSH1 0x02
00000956: EXP
00000957: SUB
00000958: AND
00000959: PUSH4 0x2a724f2a
0000095e: DUP9
0000095f: PUSH1 0x40
00000961: MLOAD
00000962: PUSH1 0xe0
00000964: PUSH1 0x02
00000966: EXP
00000967: PUSH4 0xffffffff
0000096c: DUP5
0000096d: AND
0000096e: MUL
0000096f: DUP2
00000970: MSTORE
00000971: PUSH1 0x01
00000973: PUSH1 0xa0
00000975: PUSH1 0x02
00000977: EXP
00000978: SUB
00000979: SWAP1
0000097a: SWAP2
0000097b: AND
0000097c: PUSH1 0x04
0000097e: DUP3
0000097f: ADD
00000980: MSTORE
00000981: PUSH1 0x24
00000983: ADD
00000984: PUSH1 0x00
00000986: PUSH1 0x40
00000988: MLOAD
00000989: DUP1
0000098a: DUP4
0000098b: SUB
0000098c: DUP2
0000098d: PUSH1 0x00
0000098f: DUP8
00000990: DUP1
00000991: EXTCODESIZE
00000992: ISZERO
00000993: ISZERO
00000994: PUSH2 0x099c
00000997: JUMPI
00000998: PUSH1 0x00
0000099a: DUP1
0000099b: REVERT
0000099c: JUMPDEST
0000099d: GAS
0000099e: CALL
0000099f: ISZERO
000009a0: ISZERO
000009a1: PUSH2 0x09a9
000009a4: JUMPI
000009a5: PUSH1 0x00
000009a7: DUP1
000009a8: REVERT
000009a9: JUMPDEST
000009aa: POP
000009ab: POP
000009ac: POP
000009ad: PUSH1 0x01
000009af: PUSH1 0xa0
000009b1: PUSH1 0x02
000009b3: EXP
000009b4: SUB
000009b5: DUP8
000009b6: AND
000009b7: PUSH1 0x00
000009b9: SWAP1
000009ba: DUP2
000009bb: MSTORE
000009bc: PUSH1 0x1c
000009be: PUSH1 0x20
000009c0: MSTORE
000009c1: PUSH1 0x40
000009c3: SWAP1
000009c4: DUP2
000009c5: SWAP1
000009c6: KECCAK256
000009c7: DUP1
000009c8: SLOAD
000009c9: PUSH1 0xff
000009cb: NOT
000009cc: AND
000009cd: PUSH1 0x01
000009cf: OR
000009d0: SWAP1
000009d1: SSTORE
000009d2: PUSH32 0xc11da825993c0394a75762588c54907093a1361e6d6cb67950b28ba0010b8f39
000009f3: SWAP1
000009f4: DUP9
000009f5: SWAP1
000009f6: TIMESTAMP
000009f7: SWAP1
000009f8: MLOAD
000009f9: PUSH1 0x01
000009fb: PUSH1 0xa0
000009fd: PUSH1 0x02
000009ff: EXP
00000a00: SUB
00000a01: SWAP1
00000a02: SWAP3
00000a03: AND
00000a04: DUP3
00000a05: MSTORE
00000a06: PUSH1 0x20
00000a08: DUP3
00000a09: ADD
00000a0a: MSTORE
00000a0b: PUSH1 0x40
00000a0d: SWAP1
00000a0e: DUP2
00000a0f: ADD
00000a10: SWAP1
00000a11: MLOAD
00000a12: DUP1
00000a13: SWAP2
00000a14: SUB
00000a15: SWAP1
00000a16: LOG1
00000a17: PUSH2 0x0a2a
00000a1a: PUSH1 0x12
00000a1c: DUP8
00000a1d: DUP8
00000a1e: DUP8
00000a1f: DUP8
00000a20: PUSH4 0xffffffff
00000a25: PUSH2 0x1b93
00000a28: AND
00000a29: JUMP
00000a2a: JUMPDEST
00000a2b: PUSH32 0xa06cc0a3867aea08c9e799994171a2eaa01b0db6891bff21ff54cc2639d3e678
00000a4c: DUP8
00000a4d: DUP3
00000a4e: TIMESTAMP
00000a4f: PUSH1 0x40
00000a51: MLOAD
00000a52: DUP1
00000a53: DUP5
00000a54: PUSH1 0x01
00000a56: PUSH1 0xa0
00000a58: PUSH1 0x02
00000a5a: EXP
00000a5b: SUB
00000a5c: AND
00000a5d: PUSH1 0x01
00000a5f: PUSH1 0xa0
00000a61: PUSH1 0x02
00000a63: EXP
00000a64: SUB
00000a65: AND
00000a66: DUP2
00000a67: MSTORE
00000a68: PUSH1 0x20
00000a6a: ADD
00000a6b: DUP4
00000a6c: DUP2
00000a6d: MSTORE
00000a6e: PUSH1 0x20
00000a70: ADD
00000a71: DUP3
00000a72: DUP2
00000a73: MSTORE
00000a74: PUSH1 0x20
00000a76: ADD
00000a77: SWAP4
00000a78: POP
00000a79: POP
00000a7a: POP
00000a7b: POP
00000a7c: PUSH1 0x40
00000a7e: MLOAD
00000a7f: DUP1
00000a80: SWAP2
00000a81: SUB
00000a82: SWAP1
00000a83: LOG1
00000a84: POP
00000a85: POP
00000a86: POP
00000a87: POP
00000a88: POP
00000a89: POP
00000a8a: POP
00000a8b: JUMP
00000a8c: JUMPDEST
00000a8d: PUSH1 0x01
00000a8f: PUSH1 0xa0
00000a91: PUSH1 0x02
00000a93: EXP
00000a94: SUB
00000a95: CALLER
00000a96: AND
00000a97: PUSH1 0x00
00000a99: SWAP1
00000a9a: DUP2
00000a9b: MSTORE
00000a9c: PUSH1 0x1a
00000a9e: PUSH1 0x20
00000aa0: MSTORE
00000aa1: PUSH1 0x40
00000aa3: DUP2
00000aa4: KECCAK256
00000aa5: SLOAD
00000aa6: DUP2
00000aa7: SWAP1
00000aa8: GT
00000aa9: PUSH2 0x0ab1
00000aac: JUMPI
00000aad: PUSH1 0x00
00000aaf: DUP1
00000ab0: REVERT
00000ab1: JUMPDEST
00000ab2: PUSH1 0x01
00000ab4: PUSH1 0xa0
00000ab6: PUSH1 0x02
00000ab8: EXP
00000ab9: SUB
00000aba: CALLER
00000abb: AND
00000abc: PUSH1 0x00
00000abe: SWAP1
00000abf: DUP2
00000ac0: MSTORE
00000ac1: PUSH1 0x1b
00000ac3: PUSH1 0x20
00000ac5: MSTORE
00000ac6: PUSH1 0x40
00000ac8: SWAP1
00000ac9: KECCAK256
00000aca: SLOAD
00000acb: PUSH1 0xff
00000acd: AND
00000ace: ISZERO
00000acf: PUSH2 0x0ad7
00000ad2: JUMPI
00000ad3: PUSH1 0x00
00000ad5: DUP1
00000ad6: REVERT
00000ad7: JUMPDEST
00000ad8: POP
00000ad9: PUSH1 0x01
00000adb: PUSH1 0xa0
00000add: PUSH1 0x02
00000adf: EXP
00000ae0: SUB
00000ae1: CALLER
00000ae2: AND
00000ae3: PUSH1 0x00
00000ae5: DUP2
00000ae6: DUP2
00000ae7: MSTORE
00000ae8: PUSH1 0x1a
00000aea: PUSH1 0x20
00000aec: SWAP1
00000aed: DUP2
00000aee: MSTORE
00000aef: PUSH1 0x40
00000af1: DUP1
00000af2: DUP4
00000af3: KECCAK256
00000af4: DUP1
00000af5: SLOAD
00000af6: SWAP4
00000af7: SWAP1
00000af8: SSTORE
00000af9: PUSH1 0x1b
00000afb: SWAP1
00000afc: SWAP2
00000afd: MSTORE
00000afe: SWAP1
00000aff: SWAP2
00000b00: SWAP1
00000b01: DUP3
00000b02: ISZERO
00000b03: PUSH2 0x08fc
00000b06: MUL
00000b07: SWAP1
00000b08: DUP4
00000b09: SWAP1
00000b0a: MLOAD
00000b0b: PUSH1 0x00
00000b0d: PUSH1 0x40
00000b0f: MLOAD
00000b10: DUP1
00000b11: DUP4
00000b12: SUB
00000b13: DUP2
00000b14: DUP6
00000b15: DUP9
00000b16: DUP9
00000b17: CALL
00000b18: SWAP4
00000b19: POP
00000b1a: POP
00000b1b: POP
00000b1c: POP
00000b1d: ISZERO
00000b1e: ISZERO
00000b1f: PUSH2 0x0b27
00000b22: JUMPI
00000b23: PUSH1 0x00
00000b25: DUP1
00000b26: REVERT
00000b27: JUMPDEST
00000b28: PUSH32 0x1e62ddfe8c731f66f6b6294434d45407c080972bd05b50d1745257de2220a4e4
00000b49: CALLER
00000b4a: TIMESTAMP
00000b4b: PUSH1 0x40
00000b4d: MLOAD
00000b4e: PUSH1 0x01
00000b50: PUSH1 0xa0
00000b52: PUSH1 0x02
00000b54: EXP
00000b55: SUB
00000b56: SWAP1
00000b57: SWAP3
00000b58: AND
00000b59: DUP3
00000b5a: MSTORE
00000b5b: PUSH1 0x20
00000b5d: DUP3
00000b5e: ADD
00000b5f: MSTORE
00000b60: PUSH1 0x40
00000b62: SWAP1
00000b63: DUP2
00000b64: ADD
00000b65: SWAP1
00000b66: MLOAD
00000b67: DUP1
00000b68: SWAP2
00000b69: SUB
00000b6a: SWAP1
00000b6b: LOG1
00000b6c: POP
00000b6d: JUMP
00000b6e: JUMPDEST
00000b6f: PUSH1 0x06
00000b71: SLOAD
00000b72: DUP2
00000b73: JUMP
00000b74: JUMPDEST
00000b75: PUSH1 0x03
00000b77: SLOAD
00000b78: DUP2
00000b79: JUMP
00000b7a: JUMPDEST
00000b7b: PUSH1 0x11
00000b7d: SLOAD
00000b7e: PUSH2 0x0100
00000b81: SWAP1
00000b82: DIV
00000b83: PUSH1 0x01
00000b85: PUSH1 0xa0
00000b87: PUSH1 0x02
00000b89: EXP
00000b8a: SUB
00000b8b: AND
00000b8c: DUP2
00000b8d: JUMP
00000b8e: JUMPDEST
00000b8f: PUSH1 0xff
00000b91: AND
00000b92: PUSH1 0x00
00000b94: SWAP1
00000b95: DUP2
00000b96: MSTORE
00000b97: PUSH1 0x12
00000b99: PUSH1 0x20
00000b9b: MSTORE
00000b9c: PUSH1 0x40
00000b9e: SWAP1
00000b9f: KECCAK256
00000ba0: PUSH1 0x04
00000ba2: ADD
00000ba3: SLOAD
00000ba4: SWAP1
00000ba5: JUMP
00000ba6: JUMPDEST
00000ba7: PUSH1 0x00
00000ba9: SLOAD
00000baa: CALLER
00000bab: PUSH1 0x01
00000bad: PUSH1 0xa0
00000baf: PUSH1 0x02
00000bb1: EXP
00000bb2: SUB
00000bb3: SWAP1
00000bb4: DUP2
00000bb5: AND
00000bb6: SWAP2
00000bb7: AND
00000bb8: EQ
00000bb9: PUSH2 0x0bc1
00000bbc: JUMPI
00000bbd: PUSH1 0x00
00000bbf: DUP1
00000bc0: REVERT
00000bc1: JUMPDEST
00000bc2: PUSH1 0x00
00000bc4: DUP3
00000bc5: GT
00000bc6: DUP1
00000bc7: PUSH2 0x0bd3
00000bca: JUMPI
00000bcb: POP
00000bcc: PUSH1 0x0f
00000bce: SLOAD
00000bcf: PUSH1 0x09
00000bd1: SLOAD
00000bd2: EQ
00000bd3: JUMPDEST
00000bd4: ISZERO
00000bd5: ISZERO
00000bd6: PUSH2 0x0bde
00000bd9: JUMPI
00000bda: PUSH1 0x00
00000bdc: DUP1
00000bdd: REVERT
00000bde: JUMPDEST
00000bdf: PUSH1 0x00
00000be1: DUP2
00000be2: GT
00000be3: DUP1
00000be4: PUSH2 0x0bf0
00000be7: JUMPI
00000be8: POP
00000be9: PUSH1 0x0f
00000beb: SLOAD
00000bec: PUSH1 0x09
00000bee: SLOAD
00000bef: EQ
00000bf0: JUMPDEST
00000bf1: ISZERO
00000bf2: ISZERO
00000bf3: PUSH2 0x0bfb
00000bf6: JUMPI
00000bf7: PUSH1 0x00
00000bf9: DUP1
00000bfa: REVERT
00000bfb: JUMPDEST
00000bfc: PUSH2 0x0c05
00000bff: DUP3
00000c00: DUP3
00000c01: PUSH2 0x1c6a
00000c04: JUMP
00000c05: JUMPDEST
00000c06: PUSH1 0x01
00000c08: SLOAD
00000c09: PUSH1 0x01
00000c0b: PUSH1 0xa0
00000c0d: PUSH1 0x02
00000c0f: EXP
00000c10: SUB
00000c11: AND
00000c12: PUSH4 0x5f412d4f
00000c17: PUSH1 0x40
00000c19: MLOAD
00000c1a: DUP2
00000c1b: PUSH4 0xffffffff
00000c20: AND
00000c21: PUSH1 0xe0
00000c23: PUSH1 0x02
00000c25: EXP
00000c26: MUL
00000c27: DUP2
00000c28: MSTORE
00000c29: PUSH1 0x04
00000c2b: ADD
00000c2c: PUSH1 0x00
00000c2e: PUSH1 0x40
00000c30: MLOAD
00000c31: DUP1
00000c32: DUP4
00000c33: SUB
00000c34: DUP2
00000c35: PUSH1 0x00
00000c37: DUP8
00000c38: DUP1
00000c39: EXTCODESIZE
00000c3a: ISZERO
00000c3b: ISZERO
00000c3c: PUSH2 0x0c44
00000c3f: JUMPI
00000c40: PUSH1 0x00
00000c42: DUP1
00000c43: REVERT
00000c44: JUMPDEST
00000c45: GAS
00000c46: CALL
00000c47: ISZERO
00000c48: ISZERO
00000c49: PUSH2 0x0c51
00000c4c: JUMPI
00000c4d: PUSH1 0x00
00000c4f: DUP1
00000c50: REVERT
00000c51: JUMPDEST
00000c52: POP
00000c53: POP
00000c54: PUSH1 0x11
00000c56: DUP1
00000c57: SLOAD
00000c58: PUSH1 0xff
00000c5a: NOT
00000c5b: AND
00000c5c: PUSH1 0x01
00000c5e: OR
00000c5f: SWAP1
00000c60: SSTORE
00000c61: POP
00000c62: PUSH32 0x8b81fe67377346f7a0a4a369e94f00c5ae54efa1ff15df40b4d54554e164525a
00000c83: CALLER
00000c84: TIMESTAMP
00000c85: DUP5
00000c86: DUP5
00000c87: PUSH1 0x40
00000c89: MLOAD
00000c8a: DUP1
00000c8b: DUP6
00000c8c: PUSH1 0x01
00000c8e: PUSH1 0xa0
00000c90: PUSH1 0x02
00000c92: EXP
00000c93: SUB
00000c94: AND
00000c95: PUSH1 0x01
00000c97: PUSH1 0xa0
00000c99: PUSH1 0x02
00000c9b: EXP
00000c9c: SUB
00000c9d: AND
00000c9e: DUP2
00000c9f: MSTORE
00000ca0: PUSH1 0x20
00000ca2: ADD
00000ca3: DUP5
00000ca4: DUP2
00000ca5: MSTORE
00000ca6: PUSH1 0x20
00000ca8: ADD
00000ca9: DUP4
00000caa: DUP2
00000cab: MSTORE
00000cac: PUSH1 0x20
00000cae: ADD
00000caf: DUP3
00000cb0: DUP2
00000cb1: MSTORE
00000cb2: PUSH1 0x20
00000cb4: ADD
00000cb5: SWAP5
00000cb6: POP
00000cb7: POP
00000cb8: POP
00000cb9: POP
00000cba: POP
00000cbb: PUSH1 0x40
00000cbd: MLOAD
00000cbe: DUP1
00000cbf: SWAP2
00000cc0: SUB
00000cc1: SWAP1
00000cc2: LOG1
00000cc3: POP
00000cc4: POP
00000cc5: JUMP
00000cc6: JUMPDEST
00000cc7: PUSH1 0x07
00000cc9: SLOAD
00000cca: DUP2
00000ccb: JUMP
00000ccc: JUMPDEST
00000ccd: PUSH1 0x00
00000ccf: SLOAD
00000cd0: CALLER
00000cd1: PUSH1 0x01
00000cd3: PUSH1 0xa0
00000cd5: PUSH1 0x02
00000cd7: EXP
00000cd8: SUB
00000cd9: SWAP1
00000cda: DUP2
00000cdb: AND
00000cdc: SWAP2
00000cdd: AND
00000cde: EQ
00000cdf: PUSH2 0x0ce7
00000ce2: JUMPI
00000ce3: PUSH1 0x00
00000ce5: DUP1
00000ce6: REVERT
00000ce7: JUMPDEST
00000ce8: PUSH1 0x14
00000cea: SLOAD
00000ceb: PUSH1 0xff
00000ced: AND
00000cee: DUP1
00000cef: ISZERO
00000cf0: PUSH2 0x0cf8
00000cf3: JUMPI
00000cf4: PUSH1 0x00
00000cf6: DUP1
00000cf7: REVERT
00000cf8: JUMPDEST
00000cf9: PUSH1 0x16
00000cfb: SLOAD
00000cfc: PUSH2 0x0d17
00000cff: SWAP1
00000d00: PUSH1 0x01
00000d02: PUSH1 0xa0
00000d04: PUSH1 0x02
00000d06: EXP
00000d07: SUB
00000d08: AND
00000d09: PUSH3 0x1312d0
00000d0d: PUSH5 0x02540be400
00000d13: PUSH2 0x1d7f
00000d16: JUMP
00000d17: JUMPDEST
00000d18: PUSH1 0x14
00000d1a: SLOAD
00000d1b: PUSH2 0x0d38
00000d1e: SWAP1
00000d1f: PUSH3 0x010000
00000d23: SWAP1
00000d24: DIV
00000d25: PUSH1 0x01
00000d27: PUSH1 0xa0
00000d29: PUSH1 0x02
00000d2b: EXP
00000d2c: SUB
00000d2d: AND
00000d2e: PUSH3 0x1b2071
00000d32: PUSH1 0x00
00000d34: PUSH2 0x1d7f
00000d37: JUMP
00000d38: JUMPDEST
00000d39: PUSH1 0x15
00000d3b: SLOAD
00000d3c: PUSH2 0x0d53
00000d3f: SWAP1
00000d40: PUSH1 0x01
00000d42: PUSH1 0xa0
00000d44: PUSH1 0x02
00000d46: EXP
00000d47: SUB
00000d48: AND
00000d49: PUSH3 0x06c81d
00000d4d: PUSH1 0x00
00000d4f: PUSH2 0x1d7f
00000d52: JUMP
00000d53: JUMPDEST
00000d54: POP
00000d55: PUSH1 0x14
00000d57: DUP1
00000d58: SLOAD
00000d59: PUSH1 0xff
00000d5b: NOT
00000d5c: AND
00000d5d: PUSH1 0x01
00000d5f: OR
00000d60: SWAP1
00000d61: SSTORE
00000d62: JUMP
00000d63: JUMPDEST
00000d64: PUSH1 0x13
00000d66: SLOAD
00000d67: PUSH1 0xff
00000d69: AND
00000d6a: DUP2
00000d6b: JUMP
00000d6c: JUMPDEST
00000d6d: PUSH1 0x04
00000d6f: SLOAD
00000d70: PUSH1 0x01
00000d72: PUSH1 0xa0
00000d74: PUSH1 0x02
00000d76: EXP
00000d77: SUB
00000d78: AND
00000d79: DUP2
00000d7a: JUMP
00000d7b: JUMPDEST
00000d7c: PUSH1 0x00
00000d7e: SLOAD
00000d7f: CALLER
00000d80: PUSH1 0x01
00000d82: PUSH1 0xa0
00000d84: PUSH1 0x02
00000d86: EXP
00000d87: SUB
00000d88: SWAP1
00000d89: DUP2
00000d8a: AND
00000d8b: SWAP2
00000d8c: AND
00000d8d: EQ
00000d8e: PUSH2 0x0d96
00000d91: JUMPI
00000d92: PUSH1 0x00
00000d94: DUP1
00000d95: REVERT
00000d96: JUMPDEST
00000d97: PUSH1 0x01
00000d99: PUSH1 0xa0
00000d9b: PUSH1 0x02
00000d9d: EXP
00000d9e: SUB
00000d9f: DUP2
00000da0: AND
00000da1: PUSH1 0x00
00000da3: SWAP1
00000da4: DUP2
00000da5: MSTORE
00000da6: PUSH1 0x1c
00000da8: PUSH1 0x20
00000daa: MSTORE
00000dab: PUSH1 0x40
00000dad: SWAP1
00000dae: KECCAK256
00000daf: SLOAD
00000db0: PUSH1 0xff
00000db2: AND
00000db3: ISZERO
00000db4: ISZERO
00000db5: PUSH1 0x01
00000db7: EQ
00000db8: PUSH2 0x0dc0
00000dbb: JUMPI
00000dbc: PUSH1 0x00
00000dbe: DUP1
00000dbf: REVERT
00000dc0: JUMPDEST
00000dc1: PUSH1 0x01
00000dc3: PUSH1 0xa0
00000dc5: PUSH1 0x02
00000dc7: EXP
00000dc8: SUB
00000dc9: DUP2
00000dca: AND
00000dcb: PUSH1 0x00
00000dcd: SWAP1
00000dce: DUP2
00000dcf: MSTORE
00000dd0: PUSH1 0x1c
00000dd2: PUSH1 0x20
00000dd4: MSTORE
00000dd5: PUSH1 0x40
00000dd7: SWAP1
00000dd8: DUP2
00000dd9: SWAP1
00000dda: KECCAK256
00000ddb: DUP1
00000ddc: SLOAD
00000ddd: PUSH1 0xff
00000ddf: NOT
00000de0: AND
00000de1: SWAP1
00000de2: SSTORE
00000de3: PUSH32 0xa231666d2d1aeb79bb1f0db1a8c9bfc28af2eed3f0a9b68ed157c46ba782c3eb
00000e04: SWAP1
00000e05: DUP3
00000e06: SWAP1
00000e07: TIMESTAMP
00000e08: SWAP1
00000e09: MLOAD
00000e0a: PUSH1 0x01
00000e0c: PUSH1 0xa0
00000e0e: PUSH1 0x02
00000e10: EXP
00000e11: SUB
00000e12: SWAP1
00000e13: SWAP3
00000e14: AND
00000e15: DUP3
00000e16: MSTORE
00000e17: PUSH1 0x20
00000e19: DUP3
00000e1a: ADD
00000e1b: MSTORE
00000e1c: PUSH1 0x40
00000e1e: SWAP1
00000e1f: DUP2
00000e20: ADD
00000e21: SWAP1
00000e22: MLOAD
00000e23: DUP1
00000e24: SWAP2
00000e25: SUB
00000e26: SWAP1
00000e27: LOG1
00000e28: POP
00000e29: JUMP
00000e2a: JUMPDEST
00000e2b: PUSH1 0x19
00000e2d: SLOAD
00000e2e: PUSH1 0x01
00000e30: PUSH1 0xa0
00000e32: PUSH1 0x02
00000e34: EXP
00000e35: SUB
00000e36: AND
00000e37: DUP2
00000e38: JUMP
00000e39: JUMPDEST
00000e3a: PUSH1 0x01
00000e3c: PUSH1 0xa0
00000e3e: PUSH1 0x02
00000e40: EXP
00000e41: SUB
00000e42: CALLER
00000e43: AND
00000e44: PUSH1 0x00
00000e46: SWAP1
00000e47: DUP2
00000e48: MSTORE
00000e49: PUSH1 0x0b
00000e4b: PUSH1 0x20
00000e4d: MSTORE
00000e4e: PUSH1 0x40
00000e50: DUP2
00000e51: KECCAK256
00000e52: SLOAD
00000e53: DUP2
00000e54: SWAP1
00000e55: GT
00000e56: PUSH2 0x0e5e
00000e59: JUMPI
00000e5a: PUSH1 0x00
00000e5c: DUP1
00000e5d: REVERT
00000e5e: JUMPDEST
00000e5f: PUSH2 0x0e66
00000e62: PUSH2 0x1a0f
00000e65: JUMP
00000e66: JUMPDEST
00000e67: DUP1
00000e68: ISZERO
00000e69: PUSH2 0x0e75
00000e6c: JUMPI
00000e6d: POP
00000e6e: PUSH1 0x0e
00000e70: SLOAD
00000e71: PUSH1 0x09
00000e73: SLOAD
00000e74: LT
00000e75: JUMPDEST
00000e76: DUP1
00000e77: PUSH2 0x0e83
00000e7a: JUMPI
00000e7b: POP
00000e7c: PUSH2 0x0e83
00000e7f: PUSH2 0x1ea6
00000e82: JUMP
00000e83: JUMPDEST
00000e84: ISZERO
00000e85: ISZERO
00000e86: PUSH2 0x0e8e
00000e89: JUMPI
00000e8a: PUSH1 0x00
00000e8c: DUP1
00000e8d: REVERT
00000e8e: JUMPDEST
00000e8f: POP
00000e90: PUSH1 0x01
00000e92: PUSH1 0xa0
00000e94: PUSH1 0x02
00000e96: EXP
00000e97: SUB
00000e98: CALLER
00000e99: AND
00000e9a: PUSH1 0x00
00000e9c: DUP2
00000e9d: DUP2
00000e9e: MSTORE
00000e9f: PUSH1 0x0b
00000ea1: PUSH1 0x20
00000ea3: MSTORE
00000ea4: PUSH1 0x40
00000ea6: DUP1
00000ea7: DUP3
00000ea8: KECCAK256
00000ea9: DUP1
00000eaa: SLOAD
00000eab: SWAP3
00000eac: SWAP1
00000ead: SSTORE
00000eae: SWAP1
00000eaf: SWAP2
00000eb0: SWAP1
00000eb1: DUP3
00000eb2: ISZERO
00000eb3: PUSH2 0x08fc
00000eb6: MUL
00000eb7: SWAP1
00000eb8: DUP4
00000eb9: SWAP1
00000eba: MLOAD
00000ebb: PUSH1 0x00
00000ebd: PUSH1 0x40
00000ebf: MLOAD
00000ec0: DUP1
00000ec1: DUP4
00000ec2: SUB
00000ec3: DUP2
00000ec4: DUP6
00000ec5: DUP9
00000ec6: DUP9
00000ec7: CALL
00000ec8: SWAP4
00000ec9: POP
00000eca: POP
00000ecb: POP
00000ecc: POP
00000ecd: ISZERO
00000ece: ISZERO
00000ecf: PUSH2 0x0ed7
00000ed2: JUMPI
00000ed3: PUSH1 0x00
00000ed5: DUP1
00000ed6: REVERT
00000ed7: JUMPDEST
00000ed8: PUSH1 0x01
00000eda: PUSH1 0xa0
00000edc: PUSH1 0x02
00000ede: EXP
00000edf: SUB
00000ee0: CALLER
00000ee1: AND
00000ee2: PUSH1 0x00
00000ee4: SWAP1
00000ee5: DUP2
00000ee6: MSTORE
00000ee7: PUSH1 0x0b
00000ee9: PUSH1 0x20
00000eeb: MSTORE
00000eec: PUSH1 0x40
00000eee: SWAP1
00000eef: KECCAK256
00000ef0: SLOAD
00000ef1: ISZERO
00000ef2: PUSH2 0x0ef7
00000ef5: JUMPI
00000ef6: INVALID
00000ef7: JUMPDEST
00000ef8: PUSH32 0x399cf6f6b4834b62adc1e73a85b69f3eea1c55f32d09057693655aab33e8b542
00000f19: CALLER
00000f1a: DUP3
00000f1b: TIMESTAMP
00000f1c: PUSH1 0x40
00000f1e: MLOAD
00000f1f: DUP1
00000f20: DUP5
00000f21: PUSH1 0x01
00000f23: PUSH1 0xa0
00000f25: PUSH1 0x02
00000f27: EXP
00000f28: SUB
00000f29: AND
00000f2a: PUSH1 0x01
00000f2c: PUSH1 0xa0
00000f2e: PUSH1 0x02
00000f30: EXP
00000f31: SUB
00000f32: AND
00000f33: DUP2
00000f34: MSTORE
00000f35: PUSH1 0x20
00000f37: ADD
00000f38: DUP4
00000f39: DUP2
00000f3a: MSTORE
00000f3b: PUSH1 0x20
00000f3d: ADD
00000f3e: DUP3
00000f3f: DUP2
00000f40: MSTORE
00000f41: PUSH1 0x20
00000f43: ADD
00000f44: SWAP4
00000f45: POP
00000f46: POP
00000f47: POP
00000f48: POP
00000f49: PUSH1 0x40
00000f4b: MLOAD
00000f4c: DUP1
00000f4d: SWAP2
00000f4e: SUB
00000f4f: SWAP1
00000f50: LOG1
00000f51: POP
00000f52: JUMP
00000f53: JUMPDEST
00000f54: PUSH1 0x1a
00000f56: PUSH1 0x20
00000f58: MSTORE
00000f59: PUSH1 0x00
00000f5b: SWAP1
00000f5c: DUP2
00000f5d: MSTORE
00000f5e: PUSH1 0x40
00000f60: SWAP1
00000f61: KECCAK256
00000f62: SLOAD
00000f63: DUP2
00000f64: JUMP
00000f65: JUMPDEST
00000f66: PUSH1 0x18
00000f68: SLOAD
00000f69: DUP2
00000f6a: JUMP
00000f6b: JUMPDEST
00000f6c: PUSH1 0x0b
00000f6e: PUSH1 0x20
00000f70: MSTORE
00000f71: PUSH1 0x00
00000f73: SWAP1
00000f74: DUP2
00000f75: MSTORE
00000f76: PUSH1 0x40
00000f78: SWAP1
00000f79: KECCAK256
00000f7a: SLOAD
00000f7b: DUP2
00000f7c: JUMP
00000f7d: JUMPDEST
00000f7e: PUSH1 0x00
00000f80: DUP1
00000f81: DUP1
00000f82: DUP1
00000f83: DUP1
00000f84: DUP1
00000f85: DUP1
00000f86: DUP1
00000f87: PUSH20 0x0838ae8262bdc0779cbfbeef8811f2abf51c1c7a
00000f9c: PUSH4 0xb655e138
00000fa1: DUP11
00000fa2: DUP4
00000fa3: PUSH1 0x40
00000fa5: MLOAD
00000fa6: DUP4
00000fa7: PUSH4 0xffffffff
00000fac: AND
00000fad: PUSH1 0xe0
00000faf: PUSH1 0x02
00000fb1: EXP
00000fb2: MUL
00000fb3: DUP2
00000fb4: MSTORE
00000fb5: PUSH1 0x04
00000fb7: ADD
00000fb8: DUP1
00000fb9: DUP1
00000fba: PUSH1 0x20
00000fbc: ADD
00000fbd: DUP4
00000fbe: DUP2
00000fbf: MSTORE
00000fc0: PUSH1 0x20
00000fc2: ADD
00000fc3: DUP3
00000fc4: DUP2
00000fc5: SUB
00000fc6: DUP3
00000fc7: MSTORE
00000fc8: DUP5
00000fc9: DUP2
00000fca: DUP2
00000fcb: MLOAD
00000fcc: DUP2
00000fcd: MSTORE
00000fce: PUSH1 0x20
00000fd0: ADD
00000fd1: SWAP2
00000fd2: POP
00000fd3: DUP1
00000fd4: MLOAD
00000fd5: SWAP1
00000fd6: PUSH1 0x20
00000fd8: ADD
00000fd9: SWAP1
00000fda: DUP1
00000fdb: DUP4
00000fdc: DUP4
00000fdd: PUSH1 0x00
00000fdf: JUMPDEST
00000fe0: DUP4
00000fe1: DUP2
00000fe2: LT
00000fe3: ISZERO
00000fe4: PUSH2 0x0ff7
00000fe7: JUMPI
00000fe8: DUP1
00000fe9: DUP3
00000fea: ADD
00000feb: MLOAD
00000fec: DUP4
00000fed: DUP3
00000fee: ADD
00000fef: MSTORE
00000ff0: PUSH1 0x20
00000ff2: ADD
00000ff3: PUSH2 0x0fdf
00000ff6: JUMP
00000ff7: JUMPDEST
00000ff8: POP
00000ff9: POP
00000ffa: POP
00000ffb: POP
00000ffc: SWAP1
00000ffd: POP
00000ffe: SWAP1
00000fff: DUP2
00001000: ADD
00001001: SWAP1
00001002: PUSH1 0x1f
00001004: AND
00001005: DUP1
00001006: ISZERO
00001007: PUSH2 0x1024
0000100a: JUMPI
0000100b: DUP1
0000100c: DUP3
0000100d: SUB
0000100e: DUP1
0000100f: MLOAD
00001010: PUSH1 0x01
00001012: DUP4
00001013: PUSH1 0x20
00001015: SUB
00001016: PUSH2 0x0100
00001019: EXP
0000101a: SUB
0000101b: NOT
0000101c: AND
0000101d: DUP2
0000101e: MSTORE
0000101f: PUSH1 0x20
00001021: ADD
00001022: SWAP2
00001023: POP
00001024: JUMPDEST
00001025: POP
00001026: SWAP4
00001027: POP
00001028: POP
00001029: POP
0000102a: POP
0000102b: PUSH1 0x20
0000102d: PUSH1 0x40
0000102f: MLOAD
00001030: DUP1
00001031: DUP4
00001032: SUB
00001033: DUP2
00001034: DUP7
00001035: DUP1
00001036: EXTCODESIZE
00001037: ISZERO
00001038: ISZERO
00001039: PUSH2 0x1041
0000103c: JUMPI
0000103d: PUSH1 0x00
0000103f: DUP1
00001040: REVERT
00001041: JUMPDEST
00001042: GAS
00001043: DELEGATECALL
00001044: ISZERO
00001045: ISZERO
00001046: PUSH2 0x104e
00001049: JUMPI
0000104a: PUSH1 0x00
0000104c: DUP1
0000104d: REVERT
0000104e: JUMPDEST
0000104f: POP
00001050: POP
00001051: POP
00001052: PUSH1 0x40
00001054: MLOAD
00001055: DUP1
00001056: MLOAD
00001057: SWAP5
00001058: POP
00001059: PUSH20 0x0838ae8262bdc0779cbfbeef8811f2abf51c1c7a
0000106e: SWAP1
0000106f: POP
00001070: PUSH4 0x16419aa7
00001075: DUP11
00001076: PUSH1 0x14
00001078: PUSH1 0x40
0000107a: MLOAD
0000107b: DUP4
0000107c: PUSH4 0xffffffff
00001081: AND
00001082: PUSH1 0xe0
00001084: PUSH1 0x02
00001086: EXP
00001087: MUL
00001088: DUP2
00001089: MSTORE
0000108a: PUSH1 0x04
0000108c: ADD
0000108d: DUP1
0000108e: DUP1
0000108f: PUSH1 0x20
00001091: ADD
00001092: DUP4
00001093: DUP2
00001094: MSTORE
00001095: PUSH1 0x20
00001097: ADD
00001098: DUP3
00001099: DUP2
0000109a: SUB
0000109b: DUP3
0000109c: MSTORE
0000109d: DUP5
0000109e: DUP2
0000109f: DUP2
000010a0: MLOAD
000010a1: DUP2
000010a2: MSTORE
000010a3: PUSH1 0x20
000010a5: ADD
000010a6: SWAP2
000010a7: POP
000010a8: DUP1
000010a9: MLOAD
000010aa: SWAP1
000010ab: PUSH1 0x20
000010ad: ADD
000010ae: SWAP1
000010af: DUP1
000010b0: DUP4
000010b1: DUP4
000010b2: PUSH1 0x00
000010b4: JUMPDEST
000010b5: DUP4
000010b6: DUP2
000010b7: LT
000010b8: ISZERO
000010b9: PUSH2 0x10cc
000010bc: JUMPI
000010bd: DUP1
000010be: DUP3
000010bf: ADD
000010c0: MLOAD
000010c1: DUP4
000010c2: DUP3
000010c3: ADD
000010c4: MSTORE
000010c5: PUSH1 0x20
000010c7: ADD
000010c8: PUSH2 0x10b4
000010cb: JUMP
000010cc: JUMPDEST
000010cd: POP
000010ce: POP
000010cf: POP
000010d0: POP
000010d1: SWAP1
000010d2: POP
000010d3: SWAP1
000010d4: DUP2
000010d5: ADD
000010d6: SWAP1
000010d7: PUSH1 0x1f
000010d9: AND
000010da: DUP1
000010db: ISZERO
000010dc: PUSH2 0x10f9
000010df: JUMPI
000010e0: DUP1
000010e1: DUP3
000010e2: SUB
000010e3: DUP1
000010e4: MLOAD
000010e5: PUSH1 0x01
000010e7: DUP4
000010e8: PUSH1 0x20
000010ea: SUB
000010eb: PUSH2 0x0100
000010ee: EXP
000010ef: SUB
000010f0: NOT
000010f1: AND
000010f2: DUP2
000010f3: MSTORE
000010f4: PUSH1 0x20
000010f6: ADD
000010f7: SWAP2
000010f8: POP
000010f9: JUMPDEST
000010fa: POP
000010fb: SWAP4
000010fc: POP
000010fd: POP
000010fe: POP
000010ff: POP
00001100: PUSH1 0x20
00001102: PUSH1 0x40
00001104: MLOAD
00001105: DUP1
00001106: DUP4
00001107: SUB
00001108: DUP2
00001109: DUP7
0000110a: DUP1
0000110b: EXTCODESIZE
0000110c: ISZERO
0000110d: ISZERO
0000110e: PUSH2 0x1116
00001111: JUMPI
00001112: PUSH1 0x00
00001114: DUP1
00001115: REVERT
00001116: JUMPDEST
00001117: GAS
00001118: DELEGATECALL
00001119: ISZERO
0000111a: ISZERO
0000111b: PUSH2 0x1123
0000111e: JUMPI
0000111f: PUSH1 0x00
00001121: DUP1
00001122: REVERT
00001123: JUMPDEST
00001124: POP
00001125: POP
00001126: POP
00001127: PUSH1 0x40
00001129: MLOAD
0000112a: DUP1
0000112b: MLOAD
0000112c: PUSH17 0x0100000000000000000000000000000000
0000113e: SWAP1
0000113f: DIV
00001140: SWAP4
00001141: POP
00001142: PUSH20 0x0838ae8262bdc0779cbfbeef8811f2abf51c1c7a
00001157: SWAP1
00001158: POP
00001159: PUSH4 0xd54dd8f9
0000115e: DUP11
0000115f: PUSH1 0x24
00001161: PUSH1 0x40
00001163: MLOAD
00001164: DUP4
00001165: PUSH4 0xffffffff
0000116a: AND
0000116b: PUSH1 0xe0
0000116d: PUSH1 0x02
0000116f: EXP
00001170: MUL
00001171: DUP2
00001172: MSTORE
00001173: PUSH1 0x04
00001175: ADD
00001176: DUP1
00001177: DUP1
00001178: PUSH1 0x20
0000117a: ADD
0000117b: DUP4
0000117c: DUP2
0000117d: MSTORE
0000117e: PUSH1 0x20
00001180: ADD
00001181: DUP3
00001182: DUP2
00001183: SUB
00001184: DUP3
00001185: MSTORE
00001186: DUP5
00001187: DUP2
00001188: DUP2
00001189: MLOAD
0000118a: DUP2
0000118b: MSTORE
0000118c: PUSH1 0x20
0000118e: ADD
0000118f: SWAP2
00001190: POP
00001191: DUP1
00001192: MLOAD
00001193: SWAP1
00001194: PUSH1 0x20
00001196: ADD
00001197: SWAP1
00001198: DUP1
00001199: DUP4
0000119a: DUP4
0000119b: PUSH1 0x00
0000119d: JUMPDEST
0000119e: DUP4
0000119f: DUP2
000011a0: LT
000011a1: ISZERO
000011a2: PUSH2 0x11b5
000011a5: JUMPI
000011a6: DUP1
000011a7: DUP3
000011a8: ADD
000011a9: MLOAD
000011aa: DUP4
000011ab: DUP3
000011ac: ADD
000011ad: MSTORE
000011ae: PUSH1 0x20
000011b0: ADD
000011b1: PUSH2 0x119d
000011b4: JUMP
000011b5: JUMPDEST
000011b6: POP
000011b7: POP
000011b8: POP
000011b9: POP
000011ba: SWAP1
000011bb: POP
000011bc: SWAP1
000011bd: DUP2
000011be: ADD
000011bf: SWAP1
000011c0: PUSH1 0x1f
000011c2: AND
000011c3: DUP1
000011c4: ISZERO
000011c5: PUSH2 0x11e2
000011c8: JUMPI
000011c9: DUP1
000011ca: DUP3
000011cb: SUB
000011cc: DUP1
000011cd: MLOAD
000011ce: PUSH1 0x01
000011d0: DUP4
000011d1: PUSH1 0x20
000011d3: SUB
000011d4: PUSH2 0x0100
000011d7: EXP
000011d8: SUB
000011d9: NOT
000011da: AND
000011db: DUP2
000011dc: MSTORE
000011dd: PUSH1 0x20
000011df: ADD
000011e0: SWAP2
000011e1: POP
000011e2: JUMPDEST
000011e3: POP
000011e4: SWAP4
000011e5: POP
000011e6: POP
000011e7: POP
000011e8: POP
000011e9: PUSH1 0x20
000011eb: PUSH1 0x40
000011ed: MLOAD
000011ee: DUP1
000011ef: DUP4
000011f0: SUB
000011f1: DUP2
000011f2: DUP7
000011f3: DUP1
000011f4: EXTCODESIZE
000011f5: ISZERO
000011f6: ISZERO
000011f7: PUSH2 0x11ff
000011fa: JUMPI
000011fb: PUSH1 0x00
000011fd: DUP1
000011fe: REVERT
000011ff: JUMPDEST
00001200: GAS
00001201: DELEGATECALL
00001202: ISZERO
00001203: ISZERO
00001204: PUSH2 0x120c
00001207: JUMPI
00001208: PUSH1 0x00
0000120a: DUP1
0000120b: REVERT
0000120c: JUMPDEST
0000120d: POP
0000120e: POP
0000120f: POP
00001210: PUSH1 0x40
00001212: MLOAD
00001213: DUP1
00001214: MLOAD
00001215: PUSH1 0xe0
00001217: PUSH1 0x02
00001219: EXP
0000121a: SWAP1
0000121b: DIV
0000121c: SWAP3
0000121d: POP
0000121e: PUSH20 0x0838ae8262bdc0779cbfbeef8811f2abf51c1c7a
00001233: SWAP1
00001234: POP
00001235: PUSH4 0xd54dd8f9
0000123a: DUP11
0000123b: PUSH1 0x28
0000123d: PUSH1 0x40
0000123f: MLOAD
00001240: DUP4
00001241: PUSH4 0xffffffff
00001246: AND
00001247: PUSH1 0xe0
00001249: PUSH1 0x02
0000124b: EXP
0000124c: MUL
0000124d: DUP2
0000124e: MSTORE
0000124f: PUSH1 0x04
00001251: ADD
00001252: DUP1
00001253: DUP1
00001254: PUSH1 0x20
00001256: ADD
00001257: DUP4
00001258: DUP2
00001259: MSTORE
0000125a: PUSH1 0x20
0000125c: ADD
0000125d: DUP3
0000125e: DUP2
0000125f: SUB
00001260: DUP3
00001261: MSTORE
00001262: DUP5
00001263: DUP2
00001264: DUP2
00001265: MLOAD
00001266: DUP2
00001267: MSTORE
00001268: PUSH1 0x20
0000126a: ADD
0000126b: SWAP2
0000126c: POP
0000126d: DUP1
0000126e: MLOAD
0000126f: SWAP1
00001270: PUSH1 0x20
00001272: ADD
00001273: SWAP1
00001274: DUP1
00001275: DUP4
00001276: DUP4
00001277: PUSH1 0x00
00001279: JUMPDEST
0000127a: DUP4
0000127b: DUP2
0000127c: LT
0000127d: ISZERO
0000127e: PUSH2 0x1291
00001281: JUMPI
00001282: DUP1
00001283: DUP3
00001284: ADD
00001285: MLOAD
00001286: DUP4
00001287: DUP3
00001288: ADD
00001289: MSTORE
0000128a: PUSH1 0x20
0000128c: ADD
0000128d: PUSH2 0x1279
00001290: JUMP
00001291: JUMPDEST
00001292: POP
00001293: POP
00001294: POP
00001295: POP
00001296: SWAP1
00001297: POP
00001298: SWAP1
00001299: DUP2
0000129a: ADD
0000129b: SWAP1
0000129c: PUSH1 0x1f
0000129e: AND
0000129f: DUP1
000012a0: ISZERO
000012a1: PUSH2 0x12be
000012a4: JUMPI
000012a5: DUP1
000012a6: DUP3
000012a7: SUB
000012a8: DUP1
000012a9: MLOAD
000012aa: PUSH1 0x01
000012ac: DUP4
000012ad: PUSH1 0x20
000012af: SUB
000012b0: PUSH2 0x0100
000012b3: EXP
000012b4: SUB
000012b5: NOT
000012b6: AND
000012b7: DUP2
000012b8: MSTORE
000012b9: PUSH1 0x20
000012bb: ADD
000012bc: SWAP2
000012bd: POP
000012be: JUMPDEST
000012bf: POP
000012c0: SWAP4
000012c1: POP
000012c2: POP
000012c3: POP
000012c4: POP
000012c5: PUSH1 0x20
000012c7: PUSH1 0x40
000012c9: MLOAD
000012ca: DUP1
000012cb: DUP4
000012cc: SUB
000012cd: DUP2
000012ce: DUP7
000012cf: DUP1
000012d0: EXTCODESIZE
000012d1: ISZERO
000012d2: ISZERO
000012d3: PUSH2 0x12db
000012d6: JUMPI
000012d7: PUSH1 0x00
000012d9: DUP1
000012da: REVERT
000012db: JUMPDEST
000012dc: GAS
000012dd: DELEGATECALL
000012de: ISZERO
000012df: ISZERO
000012e0: PUSH2 0x12e8
000012e3: JUMPI
000012e4: PUSH1 0x00
000012e6: DUP1
000012e7: REVERT
000012e8: JUMPDEST
000012e9: POP
000012ea: POP
000012eb: POP
000012ec: PUSH1 0x40
000012ee: MLOAD
000012ef: DUP1
000012f0: MLOAD
000012f1: SWAP5
000012f2: SWAP11
000012f3: SWAP4
000012f4: SWAP10
000012f5: POP
000012f6: SWAP2
000012f7: SWAP8
000012f8: POP
000012f9: POP
000012fa: PUSH1 0xe0
000012fc: PUSH1 0x02
000012fe: EXP
000012ff: SWAP1
00001300: SWAP3
00001301: DIV
00001302: SWAP5
00001303: POP
00001304: SWAP3
00001305: POP
00001306: POP
00001307: POP
00001308: JUMP
00001309: JUMPDEST
0000130a: PUSH1 0xff
0000130c: AND
0000130d: PUSH1 0x00
0000130f: SWAP1
00001310: DUP2
00001311: MSTORE
00001312: PUSH1 0x12
00001314: PUSH1 0x20
00001316: MSTORE
00001317: PUSH1 0x40
00001319: SWAP1
0000131a: KECCAK256
0000131b: PUSH1 0x02
0000131d: ADD
0000131e: SLOAD
0000131f: SWAP1
00001320: JUMP
00001321: JUMPDEST
00001322: PUSH1 0x02
00001324: SLOAD
00001325: DUP2
00001326: JUMP
00001327: JUMPDEST
00001328: PUSH1 0x00
0000132a: DUP1
0000132b: SLOAD
0000132c: DUP2
0000132d: SWAP1
0000132e: DUP2
0000132f: SWAP1
00001330: DUP2
00001331: SWAP1
00001332: CALLER
00001333: PUSH1 0x01
00001335: PUSH1 0xa0
00001337: PUSH1 0x02
00001339: EXP
0000133a: SUB
0000133b: SWAP1
0000133c: DUP2
0000133d: AND
0000133e: SWAP2
0000133f: AND
00001340: EQ
00001341: PUSH2 0x1349
00001344: JUMPI
00001345: PUSH1 0x00
00001347: DUP1
00001348: REVERT
00001349: JUMPDEST
0000134a: PUSH1 0x02
0000134c: SLOAD
0000134d: DUP6
0000134e: GT
0000134f: PUSH2 0x1357
00001352: JUMPI
00001353: PUSH1 0x00
00001355: DUP1
00001356: REVERT
00001357: JUMPDEST
00001358: TIMESTAMP
00001359: DUP6
0000135a: GT
0000135b: PUSH2 0x1363
0000135e: JUMPI
0000135f: PUSH1 0x00
00001361: DUP1
00001362: REVERT
00001363: JUMPDEST
00001364: PUSH1 0x02
00001366: SLOAD
00001367: TIMESTAMP
00001368: LT
00001369: PUSH2 0x1371
0000136c: JUMPI
0000136d: PUSH1 0x00
0000136f: DUP1
00001370: REVERT
00001371: JUMPDEST
00001372: PUSH1 0x02
00001374: DUP1
00001375: SLOAD
00001376: SWAP1
00001377: DUP7
00001378: SWAP1
00001379: SSTORE
0000137a: PUSH1 0x03
0000137c: DUP1
0000137d: SLOAD
0000137e: DUP3
0000137f: DUP9
00001380: SUB
00001381: SWAP1
00001382: DUP2
00001383: ADD
00001384: SWAP1
00001385: SWAP2
00001386: SSTORE
00001387: SWAP5
00001388: POP
00001389: SWAP3
0000138a: POP
0000138b: PUSH1 0x00
0000138d: SWAP2
0000138e: POP
0000138f: JUMPDEST
00001390: PUSH1 0x04
00001392: DUP3
00001393: PUSH1 0xff
00001395: AND
00001396: LT
00001397: ISZERO
00001398: PUSH2 0x13d1
0000139b: JUMPI
0000139c: POP
0000139d: PUSH1 0xff
0000139f: DUP2
000013a0: AND
000013a1: PUSH1 0x00
000013a3: SWAP1
000013a4: DUP2
000013a5: MSTORE
000013a6: PUSH1 0x12
000013a8: PUSH1 0x20
000013aa: DUP2
000013ab: SWAP1
000013ac: MSTORE
000013ad: PUSH1 0x40
000013af: SWAP1
000013b0: SWAP2
000013b1: KECCAK256
000013b2: SLOAD
000013b3: DUP5
000013b4: ADD
000013b5: SWAP1
000013b6: PUSH2 0x13c6
000013b9: SWAP1
000013ba: DUP4
000013bb: DUP4
000013bc: PUSH4 0xffffffff
000013c1: PUSH2 0x1eb6
000013c4: AND
000013c5: JUMP
000013c6: JUMPDEST
000013c7: PUSH1 0x01
000013c9: SWAP1
000013ca: SWAP2
000013cb: ADD
000013cc: SWAP1
000013cd: PUSH2 0x138f
000013d0: JUMP
000013d1: JUMPDEST
000013d2: PUSH32 0xb03c6e4d98649731c861f3ac1560370eb9b13fe3950dbe318f413df44aecc1fd
000013f3: DUP4
000013f4: DUP7
000013f5: PUSH1 0x40
000013f7: MLOAD
000013f8: SWAP2
000013f9: DUP3
000013fa: MSTORE
000013fb: PUSH1 0x20
000013fd: DUP3
000013fe: ADD
000013ff: MSTORE
00001400: PUSH1 0x40
00001402: SWAP1
00001403: DUP2
00001404: ADD
00001405: SWAP1
00001406: MLOAD
00001407: DUP1
00001408: SWAP2
00001409: SUB
0000140a: SWAP1
0000140b: LOG1
0000140c: POP
0000140d: POP
0000140e: POP
0000140f: POP
00001410: POP
00001411: JUMP
00001412: JUMPDEST
00001413: PUSH1 0x0a
00001415: PUSH1 0x20
00001417: MSTORE
00001418: PUSH1 0x00
0000141a: SWAP1
0000141b: DUP2
0000141c: MSTORE
0000141d: PUSH1 0x40
0000141f: SWAP1
00001420: KECCAK256
00001421: SLOAD
00001422: DUP2
00001423: JUMP
00001424: JUMPDEST
00001425: PUSH1 0xff
00001427: AND
00001428: PUSH1 0x00
0000142a: SWAP1
0000142b: DUP2
0000142c: MSTORE
0000142d: PUSH1 0x12
0000142f: PUSH1 0x20
00001431: MSTORE
00001432: PUSH1 0x40
00001434: SWAP1
00001435: KECCAK256
00001436: SLOAD
00001437: SWAP1
00001438: JUMP
00001439: JUMPDEST
0000143a: PUSH1 0x00
0000143c: SLOAD
0000143d: PUSH1 0x01
0000143f: PUSH1 0xa0
00001441: PUSH1 0x02
00001443: EXP
00001444: SUB
00001445: AND
00001446: DUP2
00001447: JUMP
00001448: JUMPDEST
00001449: PUSH1 0x0e
0000144b: SLOAD
0000144c: DUP2
0000144d: JUMP
0000144e: JUMPDEST
0000144f: PUSH1 0x00
00001451: SLOAD
00001452: CALLER
00001453: PUSH1 0x01
00001455: PUSH1 0xa0
00001457: PUSH1 0x02
00001459: EXP
0000145a: SUB
0000145b: SWAP1
0000145c: DUP2
0000145d: AND
0000145e: SWAP2
0000145f: AND
00001460: EQ
00001461: PUSH2 0x1469
00001464: JUMPI
00001465: PUSH1 0x00
00001467: DUP1
00001468: REVERT
00001469: JUMPDEST
0000146a: PUSH2 0x147b
0000146d: PUSH1 0x12
0000146f: DUP4
00001470: DUP4
00001471: PUSH4 0xffffffff
00001476: PUSH2 0x1eed
00001479: AND
0000147a: JUMP
0000147b: JUMPDEST
0000147c: PUSH32 0x3c943c1401d461f1e9a9793a341ba4f600dc3643686cb337621026d523049715
0000149d: CALLER
0000149e: DUP4
0000149f: DUP4
000014a0: PUSH1 0x40
000014a2: MLOAD
000014a3: PUSH1 0x01
000014a5: PUSH1 0xa0
000014a7: PUSH1 0x02
000014a9: EXP
000014aa: SUB
000014ab: SWAP1
000014ac: SWAP4
000014ad: AND
000014ae: DUP4
000014af: MSTORE
000014b0: PUSH1 0xff
000014b2: SWAP1
000014b3: SWAP2
000014b4: AND
000014b5: PUSH1 0x20
000014b7: DUP4
000014b8: ADD
000014b9: MSTORE
000014ba: PUSH1 0x40
000014bc: DUP1
000014bd: DUP4
000014be: ADD
000014bf: SWAP2
000014c0: SWAP1
000014c1: SWAP2
000014c2: MSTORE
000014c3: PUSH1 0x60
000014c5: SWAP1
000014c6: SWAP2
000014c7: ADD
000014c8: SWAP1
000014c9: MLOAD
000014ca: DUP1
000014cb: SWAP2
000014cc: SUB
000014cd: SWAP1
000014ce: LOG1
000014cf: POP
000014d0: POP
000014d1: JUMP
000014d2: JUMPDEST
000014d3: PUSH1 0x17
000014d5: SLOAD
000014d6: DUP2
000014d7: JUMP
000014d8: JUMPDEST
000014d9: PUSH1 0x00
000014db: SLOAD
000014dc: CALLER
000014dd: PUSH1 0x01
000014df: PUSH1 0xa0
000014e1: PUSH1 0x02
000014e3: EXP
000014e4: SUB
000014e5: SWAP1
000014e6: DUP2
000014e7: AND
000014e8: SWAP2
000014e9: AND
000014ea: EQ
000014eb: PUSH2 0x14f3
000014ee: JUMPI
000014ef: PUSH1 0x00
000014f1: DUP1
000014f2: REVERT
000014f3: JUMPDEST
000014f4: PUSH1 0x01
000014f6: SLOAD
000014f7: PUSH1 0x01
000014f9: PUSH1 0xa0
000014fb: PUSH1 0x02
000014fd: EXP
000014fe: SUB
000014ff: AND
00001500: PUSH4 0x3e96d28e
00001505: PUSH1 0x40
00001507: MLOAD
00001508: DUP2
00001509: PUSH4 0xffffffff
0000150e: AND
0000150f: PUSH1 0xe0
00001511: PUSH1 0x02
00001513: EXP
00001514: MUL
00001515: DUP2
00001516: MSTORE
00001517: PUSH1 0x04
00001519: ADD
0000151a: PUSH1 0x00
0000151c: PUSH1 0x40
0000151e: MLOAD
0000151f: DUP1
00001520: DUP4
00001521: SUB
00001522: DUP2
00001523: PUSH1 0x00
00001525: DUP8
00001526: DUP1
00001527: EXTCODESIZE
00001528: ISZERO
00001529: ISZERO
0000152a: PUSH2 0x1532
0000152d: JUMPI
0000152e: PUSH1 0x00
00001530: DUP1
00001531: REVERT
00001532: JUMPDEST
00001533: GAS
00001534: CALL
00001535: ISZERO
00001536: ISZERO
00001537: PUSH2 0x153f
0000153a: JUMPI
0000153b: PUSH1 0x00
0000153d: DUP1
0000153e: REVERT
0000153f: JUMPDEST
00001540: POP
00001541: POP
00001542: POP
00001543: JUMP
00001544: JUMPDEST
00001545: PUSH1 0x11
00001547: SLOAD
00001548: PUSH1 0xff
0000154a: AND
0000154b: DUP2
0000154c: JUMP
0000154d: JUMPDEST
0000154e: PUSH1 0x00
00001550: SLOAD
00001551: PUSH1 0xa0
00001553: PUSH1 0x02
00001555: EXP
00001556: SWAP1
00001557: DIV
00001558: PUSH1 0xff
0000155a: AND
0000155b: DUP2
0000155c: JUMP
0000155d: JUMPDEST
0000155e: PUSH1 0xff
00001560: AND
00001561: PUSH1 0x00
00001563: SWAP1
00001564: DUP2
00001565: MSTORE
00001566: PUSH1 0x12
00001568: PUSH1 0x20
0000156a: MSTORE
0000156b: PUSH1 0x40
0000156d: SWAP1
0000156e: KECCAK256
0000156f: PUSH1 0x03
00001571: ADD
00001572: SLOAD
00001573: SWAP1
00001574: JUMP
00001575: JUMPDEST
00001576: PUSH1 0x00
00001578: DUP1
00001579: SLOAD
0000157a: CALLER
0000157b: PUSH1 0x01
0000157d: PUSH1 0xa0
0000157f: PUSH1 0x02
00001581: EXP
00001582: SUB
00001583: SWAP1
00001584: DUP2
00001585: AND
00001586: SWAP2
00001587: AND
00001588: EQ
00001589: PUSH2 0x1591
0000158c: JUMPI
0000158d: PUSH1 0x00
0000158f: DUP1
00001590: REVERT
00001591: JUMPDEST
00001592: PUSH1 0x00
00001594: SLOAD
00001595: PUSH1 0xa0
00001597: PUSH1 0x02
00001599: EXP
0000159a: SWAP1
0000159b: DIV
0000159c: PUSH1 0xff
0000159e: AND
0000159f: ISZERO
000015a0: PUSH2 0x15a8
000015a3: JUMPI
000015a4: PUSH1 0x00
000015a6: DUP1
000015a7: REVERT
000015a8: JUMPDEST
000015a9: PUSH2 0x15b0
000015ac: PUSH2 0x1a0f
000015af: JUMP
000015b0: JUMPDEST
000015b1: ISZERO
000015b2: ISZERO
000015b3: PUSH2 0x15bb
000015b6: JUMPI
000015b7: PUSH1 0x00
000015b9: DUP1
000015ba: REVERT
000015bb: JUMPDEST
000015bc: PUSH1 0x11
000015be: SLOAD
000015bf: PUSH1 0xff
000015c1: AND
000015c2: ISZERO
000015c3: ISZERO
000015c4: PUSH2 0x15cc
000015c7: JUMPI
000015c8: PUSH1 0x00
000015ca: DUP1
000015cb: REVERT
000015cc: JUMPDEST
000015cd: PUSH1 0x0e
000015cf: SLOAD
000015d0: PUSH1 0x09
000015d2: SLOAD
000015d3: GT
000015d4: PUSH2 0x15dc
000015d7: JUMPI
000015d8: PUSH1 0x00
000015da: DUP1
000015db: REVERT
000015dc: JUMPDEST
000015dd: PUSH1 0x10
000015df: SLOAD
000015e0: PUSH1 0x07
000015e2: SLOAD
000015e3: PUSH2 0x15f1
000015e6: SWAP2
000015e7: PUSH4 0xffffffff
000015ec: PUSH2 0x1b81
000015ef: AND
000015f0: JUMP
000015f1: JUMPDEST
000015f2: PUSH1 0x10
000015f4: SLOAD
000015f5: SWAP1
000015f6: SWAP2
000015f7: POP
000015f8: PUSH2 0x1607
000015fb: SWAP1
000015fc: DUP3
000015fd: PUSH4 0xffffffff
00001602: PUSH2 0x1f27
00001605: AND
00001606: JUMP
00001607: JUMPDEST
00001608: PUSH1 0x10
0000160a: SSTORE
0000160b: PUSH1 0x11
0000160d: SLOAD
0000160e: PUSH2 0x0100
00001611: SWAP1
00001612: DIV
00001613: PUSH1 0x01
00001615: PUSH1 0xa0
00001617: PUSH1 0x02
00001619: EXP
0000161a: SUB
0000161b: AND
0000161c: PUSH2 0x08fc
0000161f: DUP3
00001620: ISZERO
00001621: MUL
00001622: DUP3
00001623: PUSH1 0x40
00001625: MLOAD
00001626: PUSH1 0x00
00001628: PUSH1 0x40
0000162a: MLOAD
0000162b: DUP1
0000162c: DUP4
0000162d: SUB
0000162e: DUP2
0000162f: DUP6
00001630: DUP9
00001631: DUP9
00001632: CALL
00001633: SWAP4
00001634: POP
00001635: POP
00001636: POP
00001637: POP
00001638: ISZERO
00001639: ISZERO
0000163a: PUSH2 0x1642
0000163d: JUMPI
0000163e: PUSH1 0x00
00001640: DUP1
00001641: REVERT
00001642: JUMPDEST
00001643: PUSH32 0x9f7cbddba892cf26a7cd63d61d3c8d085df04bbbe7601e53311038ca6dab196b
00001664: CALLER
00001665: DUP3
00001666: TIMESTAMP
00001667: PUSH1 0x40
00001669: MLOAD
0000166a: DUP1
0000166b: DUP5
0000166c: PUSH1 0x01
0000166e: PUSH1 0xa0
00001670: PUSH1 0x02
00001672: EXP
00001673: SUB
00001674: AND
00001675: PUSH1 0x01
00001677: PUSH1 0xa0
00001679: PUSH1 0x02
0000167b: EXP
0000167c: SUB
0000167d: AND
0000167e: DUP2
0000167f: MSTORE
00001680: PUSH1 0x20
00001682: ADD
00001683: DUP4
00001684: DUP2
00001685: MSTORE
00001686: PUSH1 0x20
00001688: ADD
00001689: DUP3
0000168a: DUP2
0000168b: MSTORE
0000168c: PUSH1 0x20
0000168e: ADD
0000168f: SWAP4
00001690: POP
00001691: POP
00001692: POP
00001693: POP
00001694: PUSH1 0x40
00001696: MLOAD
00001697: DUP1
00001698: SWAP2
00001699: SUB
0000169a: SWAP1
0000169b: LOG1
0000169c: POP
0000169d: JUMP
0000169e: JUMPDEST
0000169f: PUSH1 0x1b
000016a1: PUSH1 0x20
000016a3: MSTORE
000016a4: PUSH1 0x00
000016a6: SWAP1
000016a7: DUP2
000016a8: MSTORE
000016a9: PUSH1 0x40
000016ab: SWAP1
000016ac: KECCAK256
000016ad: SLOAD
000016ae: PUSH1 0xff
000016b0: AND
000016b1: DUP2
000016b2: JUMP
000016b3: JUMPDEST
000016b4: PUSH1 0x10
000016b6: SLOAD
000016b7: DUP2
000016b8: JUMP
000016b9: JUMPDEST
000016ba: PUSH1 0x00
000016bc: SLOAD
000016bd: CALLER
000016be: PUSH1 0x01
000016c0: PUSH1 0xa0
000016c2: PUSH1 0x02
000016c4: EXP
000016c5: SUB
000016c6: SWAP1
000016c7: DUP2
000016c8: AND
000016c9: SWAP2
000016ca: AND
000016cb: EQ
000016cc: PUSH2 0x16d4
000016cf: JUMPI
000016d0: PUSH1 0x00
000016d2: DUP1
000016d3: REVERT
000016d4: JUMPDEST
000016d5: PUSH1 0x00
000016d7: DUP1
000016d8: SLOAD
000016d9: PUSH21 0xff0000000000000000000000000000000000000000
000016ef: NOT
000016f0: AND
000016f1: PUSH1 0xa0
000016f3: PUSH1 0x02
000016f5: EXP
000016f6: OR
000016f7: SWAP1
000016f8: SSTORE
000016f9: PUSH32 0x4898556e3bd8b06263e50e938f30f736c1fd2030390474dd6bc0b28d8c545037
0000171a: CALLER
0000171b: TIMESTAMP
0000171c: PUSH1 0x40
0000171e: MLOAD
0000171f: PUSH1 0x01
00001721: PUSH1 0xa0
00001723: PUSH1 0x02
00001725: EXP
00001726: SUB
00001727: SWAP1
00001728: SWAP3
00001729: AND
0000172a: DUP3
0000172b: MSTORE
0000172c: PUSH1 0x20
0000172e: DUP3
0000172f: ADD
00001730: MSTORE
00001731: PUSH1 0x40
00001733: SWAP1
00001734: DUP2
00001735: ADD
00001736: SWAP1
00001737: MLOAD
00001738: DUP1
00001739: SWAP2
0000173a: SUB
0000173b: SWAP1
0000173c: LOG1
0000173d: JUMP
0000173e: JUMPDEST
0000173f: PUSH1 0x00
00001741: DUP1
00001742: PUSH1 0x00
00001744: DUP1
00001745: PUSH1 0x00
00001747: DUP1
00001748: PUSH1 0x00
0000174a: DUP1
0000174b: PUSH1 0x02
0000174d: DUP13
0000174e: PUSH1 0x40
00001750: MLOAD
00001751: DUP1
00001752: DUP3
00001753: DUP1
00001754: MLOAD
00001755: SWAP1
00001756: PUSH1 0x20
00001758: ADD
00001759: SWAP1
0000175a: DUP1
0000175b: DUP4
0000175c: DUP4
0000175d: JUMPDEST
0000175e: PUSH1 0x20
00001760: DUP4
00001761: LT
00001762: PUSH2 0x177c
00001765: JUMPI
00001766: DUP1
00001767: MLOAD
00001768: DUP3
00001769: MSTORE
0000176a: PUSH1 0x1f
0000176c: NOT
0000176d: SWAP1
0000176e: SWAP3
0000176f: ADD
00001770: SWAP2
00001771: PUSH1 0x20
00001773: SWAP2
00001774: DUP3
00001775: ADD
00001776: SWAP2
00001777: ADD
00001778: PUSH2 0x175d
0000177b: JUMP
0000177c: JUMPDEST
0000177d: PUSH1 0x01
0000177f: DUP4
00001780: PUSH1 0x20
00001782: SUB
00001783: PUSH2 0x0100
00001786: EXP
00001787: SUB
00001788: DUP1
00001789: NOT
0000178a: DUP3
0000178b: MLOAD
0000178c: AND
0000178d: DUP2
0000178e: DUP5
0000178f: MLOAD
00001790: AND
00001791: DUP1
00001792: DUP3
00001793: OR
00001794: DUP6
00001795: MSTORE
00001796: POP
00001797: POP
00001798: POP
00001799: POP
0000179a: POP
0000179b: POP
0000179c: SWAP1
0000179d: POP
0000179e: ADD
0000179f: SWAP2
000017a0: POP
000017a1: POP
000017a2: PUSH1 0x20
000017a4: PUSH1 0x40
000017a6: MLOAD
000017a7: DUP1
000017a8: DUP4
000017a9: SUB
000017aa: DUP2
000017ab: PUSH1 0x00
000017ad: DUP7
000017ae: GAS
000017af: CALL
000017b0: ISZERO
000017b1: ISZERO
000017b2: PUSH2 0x17ba
000017b5: JUMPI
000017b6: PUSH1 0x00
000017b8: DUP1
000017b9: REVERT
000017ba: JUMPDEST
000017bb: POP
000017bc: POP
000017bd: PUSH1 0x40
000017bf: MLOAD
000017c0: DUP1
000017c1: MLOAD
000017c2: SWAP1
000017c3: POP
000017c4: SWAP8
000017c5: POP
000017c6: PUSH2 0x17ce
000017c9: DUP13
000017ca: PUSH2 0x0f7d
000017cd: JUMP
000017ce: JUMPDEST
000017cf: PUSH1 0x19
000017d1: SLOAD
000017d2: SWAP4
000017d3: SWAP11
000017d4: POP
000017d5: SWAP2
000017d6: SWAP9
000017d7: POP
000017d8: SWAP7
000017d9: POP
000017da: SWAP5
000017db: POP
000017dc: PUSH1 0x01
000017de: PUSH1 0xa0
000017e0: PUSH1 0x02
000017e2: EXP
000017e3: SUB
000017e4: AND
000017e5: PUSH1 0x01
000017e7: DUP10
000017e8: DUP14
000017e9: DUP14
000017ea: DUP14
000017eb: PUSH1 0x40
000017ed: MLOAD
000017ee: PUSH1 0x00
000017f0: DUP2
000017f1: MSTORE
000017f2: PUSH1 0x20
000017f4: ADD
000017f5: PUSH1 0x40
000017f7: MSTORE
000017f8: PUSH1 0x40
000017fa: MLOAD
000017fb: SWAP4
000017fc: DUP5
000017fd: MSTORE
000017fe: PUSH1 0xff
00001800: SWAP1
00001801: SWAP3
00001802: AND
00001803: PUSH1 0x20
00001805: DUP1
00001806: DUP6
00001807: ADD
00001808: SWAP2
00001809: SWAP1
0000180a: SWAP2
0000180b: MSTORE
0000180c: PUSH1 0x40
0000180e: DUP1
0000180f: DUP6
00001810: ADD
00001811: SWAP3
00001812: SWAP1
00001813: SWAP3
00001814: MSTORE
00001815: PUSH1 0x60
00001817: DUP5
00001818: ADD
00001819: SWAP3
0000181a: SWAP1
0000181b: SWAP3
0000181c: MSTORE
0000181d: PUSH1 0x80
0000181f: SWAP1
00001820: SWAP3
00001821: ADD
00001822: SWAP2
00001823: MLOAD
00001824: PUSH1 0x20
00001826: DUP2
00001827: SUB
00001828: SWAP1
00001829: DUP1
0000182a: DUP5
0000182b: SUB
0000182c: SWAP1
0000182d: PUSH1 0x00
0000182f: DUP7
00001830: GAS
00001831: CALL
00001832: ISZERO
00001833: ISZERO
00001834: PUSH2 0x183c
00001837: JUMPI
00001838: PUSH1 0x00
0000183a: DUP1
0000183b: REVERT
0000183c: JUMPDEST
0000183d: POP
0000183e: POP
0000183f: PUSH1 0x20
00001841: PUSH1 0x40
00001843: MLOAD
00001844: SUB
00001845: MLOAD
00001846: PUSH1 0x01
00001848: PUSH1 0xa0
0000184a: PUSH1 0x02
0000184c: EXP
0000184d: SUB
0000184e: AND
0000184f: EQ
00001850: PUSH2 0x1858
00001853: JUMPI
00001854: PUSH1 0x00
00001856: DUP1
00001857: REVERT
00001858: JUMPDEST
00001859: CALLER
0000185a: PUSH1 0x01
0000185c: PUSH1 0xa0
0000185e: PUSH1 0x02
00001860: EXP
00001861: SUB
00001862: AND
00001863: DUP8
00001864: PUSH1 0x01
00001866: PUSH1 0xa0
00001868: PUSH1 0x02
0000186a: EXP
0000186b: SUB
0000186c: AND
0000186d: EQ
0000186e: ISZERO
0000186f: ISZERO
00001870: PUSH2 0x1878
00001873: JUMPI
00001874: PUSH1 0x00
00001876: DUP1
00001877: REVERT
00001878: JUMPDEST
00001879: POP
0000187a: CALLVALUE
0000187b: SWAP2
0000187c: POP
0000187d: POP
0000187e: PUSH4 0xffffffff
00001883: DUP1
00001884: DUP4
00001885: AND
00001886: SWAP1
00001887: DUP5
00001888: AND
00001889: PUSH8 0x0de0b6b3a7640000
00001892: DUP3
00001893: MUL
00001894: DUP4
00001895: LT
00001896: PUSH2 0x189e
00001899: JUMPI
0000189a: PUSH1 0x00
0000189c: DUP1
0000189d: REVERT
0000189e: JUMPDEST
0000189f: PUSH8 0x0de0b6b3a7640000
000018a8: DUP2
000018a9: MUL
000018aa: DUP4
000018ab: GT
000018ac: PUSH2 0x18b4
000018af: JUMPI
000018b0: PUSH1 0x00
000018b2: DUP1
000018b3: REVERT
000018b4: JUMPDEST
000018b5: PUSH2 0x18bd
000018b8: DUP7
000018b9: PUSH2 0x1f3d
000018bc: JUMP
000018bd: JUMPDEST
000018be: POP
000018bf: POP
000018c0: POP
000018c1: POP
000018c2: POP
000018c3: POP
000018c4: POP
000018c5: POP
000018c6: POP
000018c7: POP
000018c8: POP
000018c9: POP
000018ca: JUMP
000018cb: JUMPDEST
000018cc: PUSH1 0x0c
000018ce: PUSH1 0x20
000018d0: MSTORE
000018d1: PUSH1 0x00
000018d3: SWAP1
000018d4: DUP2
000018d5: MSTORE
000018d6: PUSH1 0x40
000018d8: SWAP1
000018d9: KECCAK256
000018da: SLOAD
000018db: DUP2
000018dc: JUMP
000018dd: JUMPDEST
000018de: PUSH1 0x0d
000018e0: PUSH1 0x20
000018e2: MSTORE
000018e3: PUSH1 0x00
000018e5: SWAP1
000018e6: DUP2
000018e7: MSTORE
000018e8: PUSH1 0x40
000018ea: SWAP1
000018eb: KECCAK256
000018ec: SLOAD
000018ed: DUP2
000018ee: JUMP
000018ef: JUMPDEST
000018f0: PUSH1 0x00
000018f2: SLOAD
000018f3: CALLER
000018f4: PUSH1 0x01
000018f6: PUSH1 0xa0
000018f8: PUSH1 0x02
000018fa: EXP
000018fb: SUB
000018fc: SWAP1
000018fd: DUP2
000018fe: AND
000018ff: SWAP2
00001900: AND
00001901: EQ
00001902: PUSH2 0x190a
00001905: JUMPI
00001906: PUSH1 0x00
00001908: DUP1
00001909: REVERT
0000190a: JUMPDEST
0000190b: PUSH1 0x14
0000190d: SLOAD
0000190e: PUSH2 0x0100
00001911: SWAP1
00001912: DIV
00001913: PUSH1 0xff
00001915: AND
00001916: DUP1
00001917: ISZERO
00001918: PUSH2 0x1920
0000191b: JUMPI
0000191c: PUSH1 0x00
0000191e: DUP1
0000191f: REVERT
00001920: JUMPDEST
00001921: PUSH2 0x195c
00001924: PUSH1 0x01
00001926: PUSH2 0x193d
00001929: PUSH3 0x093a80
0000192d: PUSH1 0x02
0000192f: SLOAD
00001930: PUSH2 0x1f27
00001933: SWAP1
00001934: SWAP2
00001935: SWAP1
00001936: PUSH4 0xffffffff
0000193b: AND
0000193c: JUMP
0000193d: JUMPDEST
0000193e: PUSH1 0x12
00001940: SWAP2
00001941: SWAP1
00001942: PUSH5 0x02540be400
00001948: PUSH3 0x989680
0000194c: PUSH5 0x28bed01600
00001952: PUSH4 0xffffffff
00001957: PUSH2 0x1fad
0000195a: AND
0000195b: JUMP
0000195c: JUMPDEST
0000195d: PUSH2 0x1998
00001960: PUSH1 0x02
00001962: PUSH2 0x1979
00001965: PUSH3 0x127500
00001969: PUSH1 0x02
0000196b: SLOAD
0000196c: PUSH2 0x1f27
0000196f: SWAP1
00001970: SWAP2
00001971: SWAP1
00001972: PUSH4 0xffffffff
00001977: AND
00001978: JUMP
00001979: JUMPDEST
0000197a: PUSH1 0x12
0000197c: SWAP2
0000197d: SWAP1
0000197e: PUSH5 0x028fa6ae00
00001984: PUSH3 0x4c4b40
00001988: PUSH5 0x45d964b800
0000198e: PUSH4 0xffffffff
00001993: PUSH2 0x1fad
00001996: AND
00001997: JUMP
00001998: JUMPDEST
00001999: PUSH2 0x19d4
0000199c: PUSH1 0x03
0000199e: PUSH2 0x19b5
000019a1: PUSH3 0x24ea00
000019a5: PUSH1 0x02
000019a7: SLOAD
000019a8: PUSH2 0x1f27
000019ab: SWAP1
000019ac: SWAP2
000019ad: SWAP1
000019ae: PUSH4 0xffffffff
000019b3: AND
000019b4: JUMP
000019b5: JUMPDEST
000019b6: PUSH1 0x12
000019b8: SWAP2
000019b9: SWAP1
000019ba: PUSH5 0x02cb417800
000019c0: PUSH3 0x2625a0
000019c4: PUSH5 0x85e0abb600
000019ca: PUSH4 0xffffffff
000019cf: PUSH2 0x1fad
000019d2: AND
000019d3: JUMP
000019d4: JUMPDEST
000019d5: PUSH1 0x03
000019d7: SLOAD
000019d8: PUSH2 0x19fd
000019db: SWAP1
000019dc: PUSH1 0x12
000019de: SWAP1
000019df: PUSH1 0x04
000019e1: SWAP1
000019e2: PUSH5 0x037e11d600
000019e8: PUSH3 0x0f4240
000019ec: PUSH6 0x01d1a94a2000
000019f3: PUSH4 0xffffffff
000019f8: PUSH2 0x1fad
000019fb: AND
000019fc: JUMP
000019fd: JUMPDEST
000019fe: POP
000019ff: PUSH1 0x14
00001a01: DUP1
00001a02: SLOAD
00001a03: PUSH2 0xff00
00001a06: NOT
00001a07: AND
00001a08: PUSH2 0x0100
00001a0b: OR
00001a0c: SWAP1
00001a0d: SSTORE
00001a0e: JUMP
00001a0f: JUMPDEST
00001a10: PUSH1 0x0f
00001a12: SLOAD
00001a13: PUSH1 0x09
00001a15: SLOAD
00001a16: PUSH1 0x00
00001a18: SWAP2
00001a19: SWAP1
00001a1a: LT
00001a1b: ISZERO
00001a1c: PUSH2 0x1a23
00001a1f: PUSH2 0x2022
00001a22: JUMP
00001a23: JUMPDEST
00001a24: DUP1
00001a25: PUSH2 0x1a2b
00001a28: JUMPI
00001a29: POP
00001a2a: DUP1
00001a2b: JUMPDEST
00001a2c: SWAP2
00001a2d: POP
00001a2e: POP
00001a2f: SWAP1
00001a30: JUMP
00001a31: JUMPDEST
00001a32: PUSH1 0x00
00001a34: SLOAD
00001a35: CALLER
00001a36: PUSH1 0x01
00001a38: PUSH1 0xa0
00001a3a: PUSH1 0x02
00001a3c: EXP
00001a3d: SUB
00001a3e: SWAP1
00001a3f: DUP2
00001a40: AND
00001a41: SWAP2
00001a42: AND
00001a43: EQ
00001a44: PUSH2 0x1a4c
00001a47: JUMPI
00001a48: PUSH1 0x00
00001a4a: DUP1
00001a4b: REVERT
00001a4c: JUMPDEST
00001a4d: PUSH1 0x01
00001a4f: PUSH1 0xa0
00001a51: PUSH1 0x02
00001a53: EXP
00001a54: SUB
00001a55: DUP2
00001a56: AND
00001a57: ISZERO
00001a58: ISZERO
00001a59: PUSH2 0x1a61
00001a5c: JUMPI
00001a5d: PUSH1 0x00
00001a5f: DUP1
00001a60: REVERT
00001a61: JUMPDEST
00001a62: PUSH1 0x00
00001a64: SLOAD
00001a65: PUSH1 0x01
00001a67: PUSH1 0xa0
00001a69: PUSH1 0x02
00001a6b: EXP
00001a6c: SUB
00001a6d: DUP1
00001a6e: DUP4
00001a6f: AND
00001a70: SWAP2
00001a71: AND
00001a72: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00001a93: PUSH1 0x40
00001a95: MLOAD
00001a96: PUSH1 0x40
00001a98: MLOAD
00001a99: DUP1
00001a9a: SWAP2
00001a9b: SUB
00001a9c: SWAP1
00001a9d: LOG3
00001a9e: PUSH1 0x00
00001aa0: DUP1
00001aa1: SLOAD
00001aa2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
00001ab7: NOT
00001ab8: AND
00001ab9: PUSH1 0x01
00001abb: PUSH1 0xa0
00001abd: PUSH1 0x02
00001abf: EXP
00001ac0: SUB
00001ac1: SWAP3
00001ac2: SWAP1
00001ac3: SWAP3
00001ac4: AND
00001ac5: SWAP2
00001ac6: SWAP1
00001ac7: SWAP2
00001ac8: OR
00001ac9: SWAP1
00001aca: SSTORE
00001acb: JUMP
00001acc: JUMPDEST
00001acd: PUSH1 0x08
00001acf: SLOAD
00001ad0: DUP2
00001ad1: JUMP
00001ad2: JUMPDEST
00001ad3: PUSH1 0x1c
00001ad5: PUSH1 0x20
00001ad7: MSTORE
00001ad8: PUSH1 0x00
00001ada: SWAP1
00001adb: DUP2
00001adc: MSTORE
00001add: PUSH1 0x40
00001adf: SWAP1
00001ae0: KECCAK256
00001ae1: SLOAD
00001ae2: PUSH1 0xff
00001ae4: AND
00001ae5: DUP2
00001ae6: JUMP
00001ae7: JUMPDEST
00001ae8: PUSH1 0xff
00001aea: AND
00001aeb: PUSH1 0x00
00001aed: SWAP1
00001aee: DUP2
00001aef: MSTORE
00001af0: PUSH1 0x12
00001af2: PUSH1 0x20
00001af4: MSTORE
00001af5: PUSH1 0x40
00001af7: SWAP1
00001af8: KECCAK256
00001af9: PUSH1 0x01
00001afb: ADD
00001afc: SLOAD
00001afd: SWAP1
00001afe: JUMP
00001aff: JUMPDEST
00001b00: PUSH1 0x0f
00001b02: SLOAD
00001b03: DUP2
00001b04: JUMP
00001b05: JUMPDEST
00001b06: PUSH1 0x01
00001b08: SLOAD
00001b09: PUSH1 0x01
00001b0b: PUSH1 0xa0
00001b0d: PUSH1 0x02
00001b0f: EXP
00001b10: SUB
00001b11: AND
00001b12: DUP2
00001b13: JUMP
00001b14: JUMPDEST
00001b15: PUSH1 0x00
00001b17: PUSH20 0xb555eb5b08cd524bd8f5fe82ed514f752a885e29
00001b2c: PUSH4 0x922d38be
00001b31: PUSH1 0x12
00001b33: PUSH1 0x40
00001b35: MLOAD
00001b36: PUSH1 0xe0
00001b38: PUSH1 0x02
00001b3a: EXP
00001b3b: PUSH4 0xffffffff
00001b40: DUP5
00001b41: AND
00001b42: MUL
00001b43: DUP2
00001b44: MSTORE
00001b45: PUSH1 0x04
00001b47: DUP2
00001b48: ADD
00001b49: SWAP2
00001b4a: SWAP1
00001b4b: SWAP2
00001b4c: MSTORE
00001b4d: PUSH1 0x24
00001b4f: ADD
00001b50: PUSH1 0x20
00001b52: PUSH1 0x40
00001b54: MLOAD
00001b55: DUP1
00001b56: DUP4
00001b57: SUB
00001b58: DUP2
00001b59: DUP7
00001b5a: DUP1
00001b5b: EXTCODESIZE
00001b5c: ISZERO
00001b5d: ISZERO
00001b5e: PUSH2 0x1b66
00001b61: JUMPI
00001b62: PUSH1 0x00
00001b64: DUP1
00001b65: REVERT
00001b66: JUMPDEST
00001b67: GAS
00001b68: DELEGATECALL
00001b69: ISZERO
00001b6a: ISZERO
00001b6b: PUSH2 0x1b73
00001b6e: JUMPI
00001b6f: PUSH1 0x00
00001b71: DUP1
00001b72: REVERT
00001b73: JUMPDEST
00001b74: POP
00001b75: POP
00001b76: POP
00001b77: PUSH1 0x40
00001b79: MLOAD
00001b7a: DUP1
00001b7b: MLOAD
00001b7c: SWAP2
00001b7d: POP
00001b7e: POP
00001b7f: SWAP1
00001b80: JUMP
00001b81: JUMPDEST
00001b82: PUSH1 0x00
00001b84: DUP3
00001b85: DUP3
00001b86: GT
00001b87: ISZERO
00001b88: PUSH2 0x1b8d
00001b8b: JUMPI
00001b8c: INVALID
00001b8d: JUMPDEST
00001b8e: POP
00001b8f: SWAP1
00001b90: SUB
00001b91: SWAP1
00001b92: JUMP
00001b93: JUMPDEST
00001b94: PUSH1 0x01
00001b96: PUSH1 0x00
00001b98: SWAP1
00001b99: DUP2
00001b9a: MSTORE
00001b9b: PUSH1 0x20
00001b9d: DUP7
00001b9e: SWAP1
00001b9f: MSTORE
00001ba0: PUSH1 0x40
00001ba2: SWAP1
00001ba3: KECCAK256
00001ba4: PUSH1 0x02
00001ba6: ADD
00001ba7: SLOAD
00001ba8: PUSH2 0x1bb7
00001bab: SWAP1
00001bac: DUP6
00001bad: PUSH4 0xffffffff
00001bb2: PUSH2 0x1b81
00001bb5: AND
00001bb6: JUMP
00001bb7: JUMPDEST
00001bb8: PUSH1 0x01
00001bba: PUSH1 0x00
00001bbc: SWAP1
00001bbd: DUP2
00001bbe: MSTORE
00001bbf: PUSH1 0x20
00001bc1: DUP8
00001bc2: SWAP1
00001bc3: MSTORE
00001bc4: PUSH1 0x40
00001bc6: DUP1
00001bc7: DUP3
00001bc8: KECCAK256
00001bc9: PUSH1 0x02
00001bcb: SWAP1
00001bcc: DUP2
00001bcd: ADD
00001bce: SWAP4
00001bcf: SWAP1
00001bd0: SWAP4
00001bd1: SSTORE
00001bd2: DUP3
00001bd3: DUP3
00001bd4: MSTORE
00001bd5: SWAP1
00001bd6: KECCAK256
00001bd7: ADD
00001bd8: SLOAD
00001bd9: PUSH2 0x1be8
00001bdc: SWAP1
00001bdd: DUP5
00001bde: PUSH4 0xffffffff
00001be3: PUSH2 0x1b81
00001be6: AND
00001be7: JUMP
00001be8: JUMPDEST
00001be9: PUSH1 0x02
00001beb: PUSH1 0x00
00001bed: DUP2
00001bee: DUP2
00001bef: MSTORE
00001bf0: PUSH1 0x20
00001bf2: DUP9
00001bf3: SWAP1
00001bf4: MSTORE
00001bf5: PUSH1 0x40
00001bf7: DUP1
00001bf8: DUP3
00001bf9: KECCAK256
00001bfa: DUP4
00001bfb: ADD
00001bfc: SWAP4
00001bfd: SWAP1
00001bfe: SWAP4
00001bff: SSTORE
00001c00: PUSH1 0x03
00001c02: DUP2
00001c03: MSTORE
00001c04: SWAP2
00001c05: SWAP1
00001c06: SWAP2
00001c07: KECCAK256
00001c08: ADD
00001c09: SLOAD
00001c0a: PUSH2 0x1c19
00001c0d: SWAP1
00001c0e: DUP4
00001c0f: PUSH4 0xffffffff
00001c14: PUSH2 0x1b81
00001c17: AND
00001c18: JUMP
00001c19: JUMPDEST
00001c1a: PUSH1 0x03
00001c1c: PUSH1 0x00
00001c1e: SWAP1
00001c1f: DUP2
00001c20: MSTORE
00001c21: PUSH1 0x20
00001c23: DUP8
00001c24: SWAP1
00001c25: MSTORE
00001c26: PUSH1 0x40
00001c28: DUP1
00001c29: DUP3
00001c2a: KECCAK256
00001c2b: PUSH1 0x02
00001c2d: SWAP1
00001c2e: DUP2
00001c2f: ADD
00001c30: SWAP4
00001c31: SWAP1
00001c32: SWAP4
00001c33: SSTORE
00001c34: PUSH1 0x04
00001c36: DUP3
00001c37: MSTORE
00001c38: SWAP1
00001c39: KECCAK256
00001c3a: ADD
00001c3b: SLOAD
00001c3c: PUSH2 0x1c4b
00001c3f: SWAP1
00001c40: DUP3
00001c41: PUSH4 0xffffffff
00001c46: PUSH2 0x1b81
00001c49: AND
00001c4a: JUMP
00001c4b: JUMPDEST
00001c4c: PUSH1 0x04
00001c4e: PUSH1 0x00
00001c50: SWAP1
00001c51: DUP2
00001c52: MSTORE
00001c53: PUSH1 0x20
00001c55: SWAP7
00001c56: SWAP1
00001c57: SWAP7
00001c58: MSTORE
00001c59: PUSH1 0x40
00001c5b: SWAP1
00001c5c: SWAP6
00001c5d: KECCAK256
00001c5e: PUSH1 0x02
00001c60: ADD
00001c61: SWAP5
00001c62: SWAP1
00001c63: SWAP5
00001c64: SSTORE
00001c65: POP
00001c66: POP
00001c67: POP
00001c68: POP
00001c69: JUMP
00001c6a: JUMPDEST
00001c6b: PUSH5 0x2964606ca0
00001c71: DUP2
00001c72: LT
00001c73: PUSH2 0x1c7b
00001c76: JUMPI
00001c77: PUSH1 0x00
00001c79: DUP1
00001c7a: REVERT
00001c7b: JUMPDEST
00001c7c: PUSH5 0x0a59194020
00001c82: DUP3
00001c83: LT
00001c84: PUSH2 0x1c8c
00001c87: JUMPI
00001c88: PUSH1 0x00
00001c8a: DUP1
00001c8b: REVERT
00001c8c: JUMPDEST
00001c8d: PUSH1 0x18
00001c8f: DUP2
00001c90: SWAP1
00001c91: SSTORE
00001c92: PUSH1 0x17
00001c94: DUP3
00001c95: SWAP1
00001c96: SSTORE
00001c97: PUSH1 0x01
00001c99: SLOAD
00001c9a: PUSH1 0x14
00001c9c: SLOAD
00001c9d: PUSH1 0x01
00001c9f: PUSH1 0xa0
00001ca1: PUSH1 0x02
00001ca3: EXP
00001ca4: SUB
00001ca5: SWAP2
00001ca6: DUP3
00001ca7: AND
00001ca8: SWAP2
00001ca9: PUSH4 0xfb920ad1
00001cae: SWAP2
00001caf: PUSH3 0x010000
00001cb3: SWAP1
00001cb4: DIV
00001cb5: AND
00001cb6: DUP4
00001cb7: PUSH1 0x40
00001cb9: MLOAD
00001cba: PUSH1 0xe0
00001cbc: PUSH1 0x02
00001cbe: EXP
00001cbf: PUSH4 0xffffffff
00001cc4: DUP6
00001cc5: AND
00001cc6: MUL
00001cc7: DUP2
00001cc8: MSTORE
00001cc9: PUSH1 0x01
00001ccb: PUSH1 0xa0
00001ccd: PUSH1 0x02
00001ccf: EXP
00001cd0: SUB
00001cd1: SWAP1
00001cd2: SWAP3
00001cd3: AND
00001cd4: PUSH1 0x04
00001cd6: DUP4
00001cd7: ADD
00001cd8: MSTORE
00001cd9: PUSH1 0x24
00001cdb: DUP3
00001cdc: ADD
00001cdd: MSTORE
00001cde: PUSH1 0x44
00001ce0: ADD
00001ce1: PUSH1 0x00
00001ce3: PUSH1 0x40
00001ce5: MLOAD
00001ce6: DUP1
00001ce7: DUP4
00001ce8: SUB
00001ce9: DUP2
00001cea: PUSH1 0x00
00001cec: DUP8
00001ced: DUP1
00001cee: EXTCODESIZE
00001cef: ISZERO
00001cf0: ISZERO
00001cf1: PUSH2 0x1cf9
00001cf4: JUMPI
00001cf5: PUSH1 0x00
00001cf7: DUP1
00001cf8: REVERT
00001cf9: JUMPDEST
00001cfa: GAS
00001cfb: CALL
00001cfc: ISZERO
00001cfd: ISZERO
00001cfe: PUSH2 0x1d06
00001d01: JUMPI
00001d02: PUSH1 0x00
00001d04: DUP1
00001d05: REVERT
00001d06: JUMPDEST
00001d07: POP
00001d08: POP
00001d09: PUSH1 0x01
00001d0b: SLOAD
00001d0c: PUSH1 0x15
00001d0e: SLOAD
00001d0f: PUSH1 0x17
00001d11: SLOAD
00001d12: PUSH1 0x01
00001d14: PUSH1 0xa0
00001d16: PUSH1 0x02
00001d18: EXP
00001d19: SUB
00001d1a: SWAP3
00001d1b: DUP4
00001d1c: AND
00001d1d: SWAP4
00001d1e: POP
00001d1f: PUSH4 0xfb920ad1
00001d24: SWAP3
00001d25: SWAP1
00001d26: SWAP2
00001d27: AND
00001d28: SWAP1
00001d29: PUSH1 0x40
00001d2b: MLOAD
00001d2c: PUSH1 0xe0
00001d2e: PUSH1 0x02
00001d30: EXP
00001d31: PUSH4 0xffffffff
00001d36: DUP6
00001d37: AND
00001d38: MUL
00001d39: DUP2
00001d3a: MSTORE
00001d3b: PUSH1 0x01
00001d3d: PUSH1 0xa0
00001d3f: PUSH1 0x02
00001d41: EXP
00001d42: SUB
00001d43: SWAP1
00001d44: SWAP3
00001d45: AND
00001d46: PUSH1 0x04
00001d48: DUP4
00001d49: ADD
00001d4a: MSTORE
00001d4b: PUSH1 0x24
00001d4d: DUP3
00001d4e: ADD
00001d4f: MSTORE
00001d50: PUSH1 0x44
00001d52: ADD
00001d53: PUSH1 0x00
00001d55: PUSH1 0x40
00001d57: MLOAD
00001d58: DUP1
00001d59: DUP4
00001d5a: SUB
00001d5b: DUP2
00001d5c: PUSH1 0x00
00001d5e: DUP8
00001d5f: DUP1
00001d60: EXTCODESIZE
00001d61: ISZERO
00001d62: ISZERO
00001d63: PUSH2 0x1d6b
00001d66: JUMPI
00001d67: PUSH1 0x00
00001d69: DUP1
00001d6a: REVERT
00001d6b: JUMPDEST
00001d6c: GAS
00001d6d: CALL
00001d6e: ISZERO
00001d6f: ISZERO
00001d70: PUSH2 0x1d78
00001d73: JUMPI
00001d74: PUSH1 0x00
00001d76: DUP1
00001d77: REVERT
00001d78: JUMPDEST
00001d79: POP
00001d7a: POP
00001d7b: POP
00001d7c: POP
00001d7d: POP
00001d7e: JUMP
00001d7f: JUMPDEST
00001d80: PUSH1 0x01
00001d82: SLOAD
00001d83: PUSH1 0x00
00001d85: SWAP1
00001d86: DUP2
00001d87: SWAP1
00001d88: DUP2
00001d89: SWAP1
00001d8a: PUSH1 0x01
00001d8c: PUSH1 0xa0
00001d8e: PUSH1 0x02
00001d90: EXP
00001d91: SUB
00001d92: AND
00001d93: PUSH4 0x313ce567
00001d98: PUSH1 0x40
00001d9a: MLOAD
00001d9b: DUP2
00001d9c: PUSH4 0xffffffff
00001da1: AND
00001da2: PUSH1 0xe0
00001da4: PUSH1 0x02
00001da6: EXP
00001da7: MUL
00001da8: DUP2
00001da9: MSTORE
00001daa: PUSH1 0x04
00001dac: ADD
00001dad: PUSH1 0x20
00001daf: PUSH1 0x40
00001db1: MLOAD
00001db2: DUP1
00001db3: DUP4
00001db4: SUB
00001db5: DUP2
00001db6: PUSH1 0x00
00001db8: DUP8
00001db9: DUP1
00001dba: EXTCODESIZE
00001dbb: ISZERO
00001dbc: ISZERO
00001dbd: PUSH2 0x1dc5
00001dc0: JUMPI
00001dc1: PUSH1 0x00
00001dc3: DUP1
00001dc4: REVERT
00001dc5: JUMPDEST
00001dc6: GAS
00001dc7: CALL
00001dc8: ISZERO
00001dc9: ISZERO
00001dca: PUSH2 0x1dd2
00001dcd: JUMPI
00001dce: PUSH1 0x00
00001dd0: DUP1
00001dd1: REVERT
00001dd2: JUMPDEST
00001dd3: POP
00001dd4: POP
00001dd5: POP
00001dd6: PUSH1 0x40
00001dd8: MLOAD
00001dd9: DUP1
00001dda: MLOAD
00001ddb: SWAP1
00001ddc: POP
00001ddd: PUSH1 0xff
00001ddf: AND
00001de0: SWAP3
00001de1: POP
00001de2: DUP3
00001de3: PUSH1 0x0a
00001de5: EXP
00001de6: DUP6
00001de7: MUL
00001de8: SWAP2
00001de9: POP
00001dea: DUP5
00001deb: DUP5
00001dec: MUL
00001ded: SWAP1
00001dee: POP
00001def: PUSH2 0x1e03
00001df2: DUP2
00001df3: PUSH1 0x08
00001df5: SLOAD
00001df6: PUSH2 0x1f27
00001df9: SWAP1
00001dfa: SWAP2
00001dfb: SWAP1
00001dfc: PUSH4 0xffffffff
00001e01: AND
00001e02: JUMP
00001e03: JUMPDEST
00001e04: PUSH1 0x08
00001e06: SSTORE
00001e07: PUSH1 0x09
00001e09: SLOAD
00001e0a: PUSH2 0x1e19
00001e0d: SWAP1
00001e0e: DUP4
00001e0f: PUSH4 0xffffffff
00001e14: PUSH2 0x1f27
00001e17: AND
00001e18: JUMP
00001e19: JUMPDEST
00001e1a: PUSH1 0x09
00001e1c: SSTORE
00001e1d: PUSH1 0x01
00001e1f: PUSH1 0xa0
00001e21: PUSH1 0x02
00001e23: EXP
00001e24: SUB
00001e25: DUP7
00001e26: AND
00001e27: PUSH1 0x00
00001e29: SWAP1
00001e2a: DUP2
00001e2b: MSTORE
00001e2c: PUSH1 0x0d
00001e2e: PUSH1 0x20
00001e30: MSTORE
00001e31: PUSH1 0x40
00001e33: SWAP1
00001e34: KECCAK256
00001e35: SLOAD
00001e36: PUSH2 0x1e45
00001e39: SWAP1
00001e3a: DUP4
00001e3b: PUSH4 0xffffffff
00001e40: PUSH2 0x1f27
00001e43: AND
00001e44: JUMP
00001e45: JUMPDEST
00001e46: PUSH1 0x01
00001e48: PUSH1 0xa0
00001e4a: PUSH1 0x02
00001e4c: EXP
00001e4d: SUB
00001e4e: DUP8
00001e4f: AND
00001e50: PUSH1 0x00
00001e52: SWAP1
00001e53: DUP2
00001e54: MSTORE
00001e55: PUSH1 0x0d
00001e57: PUSH1 0x20
00001e59: SWAP1
00001e5a: DUP2
00001e5b: MSTORE
00001e5c: PUSH1 0x40
00001e5e: DUP1
00001e5f: DUP4
00001e60: KECCAK256
00001e61: SWAP4
00001e62: SWAP1
00001e63: SWAP4
00001e64: SSTORE
00001e65: PUSH1 0x0c
00001e67: SWAP1
00001e68: MSTORE
00001e69: KECCAK256
00001e6a: SLOAD
00001e6b: PUSH2 0x1e7a
00001e6e: SWAP1
00001e6f: DUP3
00001e70: PUSH4 0xffffffff
00001e75: PUSH2 0x1f27
00001e78: AND
00001e79: JUMP
00001e7a: JUMPDEST
00001e7b: PUSH1 0x01
00001e7d: PUSH1 0xa0
00001e7f: PUSH1 0x02
00001e81: EXP
00001e82: SUB
00001e83: DUP8
00001e84: AND
00001e85: PUSH1 0x00
00001e87: SWAP1
00001e88: DUP2
00001e89: MSTORE
00001e8a: PUSH1 0x0c
00001e8c: PUSH1 0x20
00001e8e: MSTORE
00001e8f: PUSH1 0x40
00001e91: SWAP1
00001e92: KECCAK256
00001e93: SSTORE
00001e94: PUSH2 0x1e9e
00001e97: DUP7
00001e98: DUP3
00001e99: DUP5
00001e9a: PUSH2 0x202a
00001e9d: JUMP
00001e9e: JUMPDEST
00001e9f: POP
00001ea0: POP
00001ea1: POP
00001ea2: POP
00001ea3: POP
00001ea4: POP
00001ea5: JUMP
00001ea6: JUMPDEST
00001ea7: PUSH1 0x00
00001ea9: SLOAD
00001eaa: PUSH1 0xa0
00001eac: PUSH1 0x02
00001eae: EXP
00001eaf: SWAP1
00001eb0: DIV
00001eb1: PUSH1 0xff
00001eb3: AND
00001eb4: SWAP1
00001eb5: JUMP
00001eb6: JUMPDEST
00001eb7: PUSH1 0xff
00001eb9: DUP3
00001eba: AND
00001ebb: PUSH1 0x00
00001ebd: SWAP1
00001ebe: DUP2
00001ebf: MSTORE
00001ec0: PUSH1 0x20
00001ec2: DUP5
00001ec3: SWAP1
00001ec4: MSTORE
00001ec5: PUSH1 0x40
00001ec7: SWAP1
00001ec8: KECCAK256
00001ec9: SLOAD
00001eca: TIMESTAMP
00001ecb: SWAP1
00001ecc: GT
00001ecd: PUSH2 0x1ed5
00001ed0: JUMPI
00001ed1: PUSH1 0x00
00001ed3: DUP1
00001ed4: REVERT
00001ed5: JUMPDEST
00001ed6: PUSH1 0xff
00001ed8: SWAP1
00001ed9: SWAP2
00001eda: AND
00001edb: PUSH1 0x00
00001edd: SWAP1
00001ede: DUP2
00001edf: MSTORE
00001ee0: PUSH1 0x20
00001ee2: SWAP3
00001ee3: SWAP1
00001ee4: SWAP3
00001ee5: MSTORE
00001ee6: PUSH1 0x40
00001ee8: SWAP1
00001ee9: SWAP2
00001eea: KECCAK256
00001eeb: SSTORE
00001eec: JUMP
00001eed: JUMPDEST
00001eee: PUSH1 0xff
00001ef0: DUP3
00001ef1: AND
00001ef2: PUSH1 0x00
00001ef4: SWAP1
00001ef5: DUP2
00001ef6: MSTORE
00001ef7: PUSH1 0x20
00001ef9: DUP5
00001efa: SWAP1
00001efb: MSTORE
00001efc: PUSH1 0x40
00001efe: SWAP1
00001eff: KECCAK256
00001f00: SLOAD
00001f01: TIMESTAMP
00001f02: SWAP1
00001f03: GT
00001f04: PUSH2 0x1f0c
00001f07: JUMPI
00001f08: PUSH1 0x00
00001f0a: DUP1
00001f0b: REVERT
00001f0c: JUMPDEST
00001f0d: PUSH1 0xff
00001f0f: SWAP1
00001f10: SWAP2
00001f11: AND
00001f12: PUSH1 0x00
00001f14: SWAP1
00001f15: DUP2
00001f16: MSTORE
00001f17: PUSH1 0x20
00001f19: SWAP3
00001f1a: SWAP1
00001f1b: SWAP3
00001f1c: MSTORE
00001f1d: PUSH1 0x40
00001f1f: SWAP1
00001f20: SWAP2
00001f21: KECCAK256
00001f22: PUSH1 0x01
00001f24: ADD
00001f25: SSTORE
00001f26: JUMP
00001f27: JUMPDEST
00001f28: PUSH1 0x00
00001f2a: DUP3
00001f2b: DUP3
00001f2c: ADD
00001f2d: DUP4
00001f2e: DUP2
00001f2f: LT
00001f30: ISZERO
00001f31: PUSH2 0x1f36
00001f34: JUMPI
00001f35: INVALID
00001f36: JUMPDEST
00001f37: SWAP4
00001f38: SWAP3
00001f39: POP
00001f3a: POP
00001f3b: POP
00001f3c: JUMP
00001f3d: JUMPDEST
00001f3e: PUSH1 0x00
00001f40: DUP1
00001f41: SLOAD
00001f42: DUP2
00001f43: SWAP1
00001f44: PUSH1 0xa0
00001f46: PUSH1 0x02
00001f48: EXP
00001f49: SWAP1
00001f4a: DIV
00001f4b: PUSH1 0xff
00001f4d: AND
00001f4e: ISZERO
00001f4f: PUSH2 0x1f57
00001f52: JUMPI
00001f53: PUSH1 0x00
00001f55: DUP1
00001f56: REVERT
00001f57: JUMPDEST
00001f58: PUSH16 0xffffffffffffffffffffffffffffffff
00001f69: DUP4
00001f6a: AND
00001f6b: ISZERO
00001f6c: ISZERO
00001f6d: PUSH2 0x1f75
00001f70: JUMPI
00001f71: PUSH1 0x00
00001f73: DUP1
00001f74: REVERT
00001f75: JUMPDEST
00001f76: CALLVALUE
00001f77: SWAP2
00001f78: POP
00001f79: PUSH2 0x1f81
00001f7c: DUP3
00001f7d: PUSH2 0x20f7
00001f80: JUMP
00001f81: JUMPDEST
00001f82: SWAP1
00001f83: POP
00001f84: PUSH2 0x1f8c
00001f87: DUP2
00001f88: PUSH2 0x2129
00001f8b: JUMP
00001f8c: JUMPDEST
00001f8d: ISZERO
00001f8e: ISZERO
00001f8f: PUSH2 0x1f97
00001f92: JUMPI
00001f93: PUSH1 0x00
00001f95: DUP1
00001f96: REVERT
00001f97: JUMPDEST
00001f98: PUSH2 0x1fa2
00001f9b: DUP3
00001f9c: DUP3
00001f9d: DUP6
00001f9e: PUSH2 0x2174
00001fa1: JUMP
00001fa2: JUMPDEST
00001fa3: PUSH2 0x153f
00001fa6: CALLER
00001fa7: DUP4
00001fa8: DUP4
00001fa9: PUSH2 0x202a
00001fac: JUMP
00001fad: JUMPDEST
00001fae: PUSH1 0x00
00001fb0: NOT
00001fb1: DUP6
00001fb2: ADD
00001fb3: PUSH1 0xff
00001fb5: DUP2
00001fb6: AND
00001fb7: PUSH1 0x00
00001fb9: SWAP1
00001fba: DUP2
00001fbb: MSTORE
00001fbc: PUSH1 0x20
00001fbe: DUP9
00001fbf: SWAP1
00001fc0: MSTORE
00001fc1: PUSH1 0x40
00001fc3: SWAP1
00001fc4: KECCAK256
00001fc5: SLOAD
00001fc6: DUP6
00001fc7: SWAP1
00001fc8: LT
00001fc9: PUSH2 0x1fd1
00001fcc: JUMPI
00001fcd: PUSH1 0x00
00001fcf: DUP1
00001fd0: REVERT
00001fd1: JUMPDEST
00001fd2: POP
00001fd3: PUSH1 0xff
00001fd5: SWAP5
00001fd6: DUP6
00001fd7: AND
00001fd8: PUSH1 0x00
00001fda: SWAP1
00001fdb: DUP2
00001fdc: MSTORE
00001fdd: PUSH1 0x20
00001fdf: DUP8
00001fe0: SWAP1
00001fe1: MSTORE
00001fe2: PUSH1 0x40
00001fe4: DUP2
00001fe5: KECCAK256
00001fe6: SWAP5
00001fe7: DUP6
00001fe8: SSTORE
00001fe9: PUSH1 0x01
00001feb: DUP1
00001fec: DUP7
00001fed: ADD
00001fee: SWAP5
00001fef: SWAP1
00001ff0: SWAP5
00001ff1: SSTORE
00001ff2: PUSH1 0x02
00001ff4: DUP6
00001ff5: ADD
00001ff6: SSTORE
00001ff7: PUSH1 0x03
00001ff9: DUP5
00001ffa: ADD
00001ffb: SWAP2
00001ffc: SWAP1
00001ffd: SWAP2
00001ffe: SSTORE
00001fff: PUSH1 0x04
00002001: SWAP1
00002002: SWAP3
00002003: ADD
00002004: SWAP2
00002005: SWAP1
00002006: SWAP2
00002007: SSTORE
00002008: SWAP2
00002009: DUP3
0000200a: ADD
0000200b: DUP1
0000200c: SLOAD
0000200d: PUSH1 0xff
0000200f: NOT
00002010: DUP2
00002011: AND
00002012: SWAP1
00002013: DUP4
00002014: AND
00002015: SWAP1
00002016: SWAP4
00002017: ADD
00002018: SWAP1
00002019: SWAP2
0000201a: AND
0000201b: SWAP2
0000201c: SWAP1
0000201d: SWAP2
0000201e: OR
0000201f: SWAP1
00002020: SSTORE
00002021: JUMP
00002022: JUMPDEST
00002023: PUSH1 0x03
00002025: SLOAD
00002026: TIMESTAMP
00002027: GT
00002028: SWAP1
00002029: JUMP
0000202a: JUMPDEST
0000202b: PUSH1 0x01
0000202d: SLOAD
0000202e: PUSH1 0x01
00002030: PUSH1 0xa0
00002032: PUSH1 0x02
00002034: EXP
00002035: SUB
00002036: AND
00002037: PUSH4 0x40c10f19
0000203c: DUP5
0000203d: DUP4
0000203e: PUSH1 0x40
00002040: MLOAD
00002041: PUSH1 0xe0
00002043: PUSH1 0x02
00002045: EXP
00002046: PUSH4 0xffffffff
0000204b: DUP6
0000204c: AND
0000204d: MUL
0000204e: DUP2
0000204f: MSTORE
00002050: PUSH1 0x01
00002052: PUSH1 0xa0
00002054: PUSH1 0x02
00002056: EXP
00002057: SUB
00002058: SWAP1
00002059: SWAP3
0000205a: AND
0000205b: PUSH1 0x04
0000205d: DUP4
0000205e: ADD
0000205f: MSTORE
00002060: PUSH1 0x24
00002062: DUP3
00002063: ADD
00002064: MSTORE
00002065: PUSH1 0x44
00002067: ADD
00002068: PUSH1 0x20
0000206a: PUSH1 0x40
0000206c: MLOAD
0000206d: DUP1
0000206e: DUP4
0000206f: SUB
00002070: DUP2
00002071: PUSH1 0x00
00002073: DUP8
00002074: DUP1
00002075: EXTCODESIZE
00002076: ISZERO
00002077: ISZERO
00002078: PUSH2 0x2080
0000207b: JUMPI
0000207c: PUSH1 0x00
0000207e: DUP1
0000207f: REVERT
00002080: JUMPDEST
00002081: GAS
00002082: CALL
00002083: ISZERO
00002084: ISZERO
00002085: PUSH2 0x208d
00002088: JUMPI
00002089: PUSH1 0x00
0000208b: DUP1
0000208c: REVERT
0000208d: JUMPDEST
0000208e: POP
0000208f: POP
00002090: POP
00002091: PUSH1 0x40
00002093: MLOAD
00002094: DUP1
00002095: MLOAD
00002096: SWAP1
00002097: POP
00002098: POP
00002099: DUP3
0000209a: PUSH1 0x01
0000209c: PUSH1 0xa0
0000209e: PUSH1 0x02
000020a0: EXP
000020a1: SUB
000020a2: AND
000020a3: CALLER
000020a4: PUSH1 0x01
000020a6: PUSH1 0xa0
000020a8: PUSH1 0x02
000020aa: EXP
000020ab: SUB
000020ac: AND
000020ad: PUSH31 0xfe0e12b43090c1fc19a34aefa5cc138a4eeafc60ab800f855c730b3fb9480e
000020cd: DUP5
000020ce: DUP5
000020cf: TIMESTAMP
000020d0: PUSH1 0x40
000020d2: MLOAD
000020d3: DUP1
000020d4: DUP5
000020d5: DUP2
000020d6: MSTORE
000020d7: PUSH1 0x20
000020d9: ADD
000020da: DUP4
000020db: DUP2
000020dc: MSTORE
000020dd: PUSH1 0x20
000020df: ADD
000020e0: DUP3
000020e1: DUP2
000020e2: MSTORE
000020e3: PUSH1 0x20
000020e5: ADD
000020e6: SWAP4
000020e7: POP
000020e8: POP
000020e9: POP
000020ea: POP
000020eb: PUSH1 0x40
000020ed: MLOAD
000020ee: DUP1
000020ef: SWAP2
000020f0: SUB
000020f1: SWAP1
000020f2: LOG3
000020f3: POP
000020f4: POP
000020f5: POP
000020f6: JUMP
000020f7: JUMPDEST
000020f8: PUSH1 0x00
000020fa: DUP1
000020fb: PUSH1 0x00
000020fd: PUSH2 0x2104
00002100: PUSH2 0x1b14
00002103: JUMP
00002104: JUMPDEST
00002105: SWAP2
00002106: POP
00002107: PUSH2 0x210f
0000210a: DUP3
0000210b: PUSH2 0x1ae7
0000210e: JUMP
0000210f: JUMPDEST
00002110: SWAP1
00002111: POP
00002112: PUSH2 0x2121
00002115: DUP5
00002116: DUP3
00002117: PUSH4 0xffffffff
0000211c: PUSH2 0x22b7
0000211f: AND
00002120: JUMP
00002121: JUMPDEST
00002122: SWAP5
00002123: SWAP4
00002124: POP
00002125: POP
00002126: POP
00002127: POP
00002128: JUMP
00002129: JUMPDEST
0000212a: PUSH1 0x01
0000212c: PUSH1 0xa0
0000212e: PUSH1 0x02
00002130: EXP
00002131: SUB
00002132: CALLER
00002133: AND
00002134: PUSH1 0x00
00002136: SWAP1
00002137: DUP2
00002138: MSTORE
00002139: PUSH1 0x1c
0000213b: PUSH1 0x20
0000213d: MSTORE
0000213e: PUSH1 0x40
00002140: DUP2
00002141: KECCAK256
00002142: SLOAD
00002143: DUP2
00002144: SWAP1
00002145: PUSH1 0xff
00002147: AND
00002148: ISZERO
00002149: ISZERO
0000214a: PUSH1 0x01
0000214c: EQ
0000214d: ISZERO
0000214e: PUSH2 0x2159
00002151: JUMPI
00002152: POP
00002153: PUSH1 0x01
00002155: PUSH2 0x215d
00002158: JUMP
00002159: JUMPDEST
0000215a: POP
0000215b: PUSH1 0x00
0000215d: JUMPDEST
0000215e: PUSH2 0x2166
00002161: DUP4
00002162: PUSH2 0x22ce
00002165: JUMP
00002166: JUMPDEST
00002167: DUP1
00002168: ISZERO
00002169: PUSH2 0x1f36
0000216c: JUMPI
0000216d: POP
0000216e: ISZERO
0000216f: SWAP3
00002170: SWAP2
00002171: POP
00002172: POP
00002173: JUMP
00002174: JUMPDEST
00002175: PUSH1 0x01
00002177: PUSH1 0xa0
00002179: PUSH1 0x02
0000217b: EXP
0000217c: SUB
0000217d: CALLER
0000217e: AND
0000217f: PUSH1 0x00
00002181: SWAP1
00002182: DUP2
00002183: MSTORE
00002184: PUSH1 0x0b
00002186: PUSH1 0x20
00002188: MSTORE
00002189: PUSH1 0x40
0000218b: DUP2
0000218c: KECCAK256
0000218d: SLOAD
0000218e: PUSH2 0x219d
00002191: SWAP1
00002192: DUP6
00002193: PUSH4 0xffffffff
00002198: PUSH2 0x1f27
0000219b: AND
0000219c: JUMP
0000219d: JUMPDEST
0000219e: PUSH1 0x01
000021a0: PUSH1 0xa0
000021a2: PUSH1 0x02
000021a4: EXP
000021a5: SUB
000021a6: CALLER
000021a7: AND
000021a8: PUSH1 0x00
000021aa: SWAP1
000021ab: DUP2
000021ac: MSTORE
000021ad: PUSH1 0x0b
000021af: PUSH1 0x20
000021b1: SWAP1
000021b2: DUP2
000021b3: MSTORE
000021b4: PUSH1 0x40
000021b6: DUP1
000021b7: DUP4
000021b8: KECCAK256
000021b9: SWAP4
000021ba: SWAP1
000021bb: SWAP4
000021bc: SSTORE
000021bd: PUSH1 0x0d
000021bf: SWAP1
000021c0: MSTORE
000021c1: KECCAK256
000021c2: SLOAD
000021c3: PUSH2 0x21d2
000021c6: SWAP1
000021c7: DUP5
000021c8: PUSH4 0xffffffff
000021cd: PUSH2 0x1f27
000021d0: AND
000021d1: JUMP
000021d2: JUMPDEST
000021d3: PUSH1 0x01
000021d5: PUSH1 0xa0
000021d7: PUSH1 0x02
000021d9: EXP
000021da: SUB
000021db: CALLER
000021dc: AND
000021dd: PUSH1 0x00
000021df: SWAP1
000021e0: DUP2
000021e1: MSTORE
000021e2: PUSH1 0x0d
000021e4: PUSH1 0x20
000021e6: SWAP1
000021e7: DUP2
000021e8: MSTORE
000021e9: PUSH1 0x40
000021eb: DUP1
000021ec: DUP4
000021ed: KECCAK256
000021ee: SWAP4
000021ef: SWAP1
000021f0: SWAP4
000021f1: SSTORE
000021f2: PUSH16 0xffffffffffffffffffffffffffffffff
00002203: DUP6
00002204: AND
00002205: DUP3
00002206: MSTORE
00002207: PUSH1 0x0a
00002209: SWAP1
0000220a: MSTORE
0000220b: KECCAK256
0000220c: SLOAD
0000220d: PUSH2 0x221c
00002210: SWAP1
00002211: DUP6
00002212: PUSH4 0xffffffff
00002217: PUSH2 0x1f27
0000221a: AND
0000221b: JUMP
0000221c: JUMPDEST
0000221d: PUSH16 0xffffffffffffffffffffffffffffffff
0000222e: DUP4
0000222f: AND
00002230: PUSH1 0x00
00002232: SWAP1
00002233: DUP2
00002234: MSTORE
00002235: PUSH1 0x0a
00002237: PUSH1 0x20
00002239: MSTORE
0000223a: PUSH1 0x40
0000223c: SWAP1
0000223d: KECCAK256
0000223e: SSTORE
0000223f: PUSH1 0x07
00002241: SLOAD
00002242: PUSH2 0x2251
00002245: SWAP1
00002246: DUP6
00002247: PUSH4 0xffffffff
0000224c: PUSH2 0x1f27
0000224f: AND
00002250: JUMP
00002251: JUMPDEST
00002252: PUSH1 0x07
00002254: SSTORE
00002255: PUSH1 0x09
00002257: SLOAD
00002258: PUSH2 0x2267
0000225b: SWAP1
0000225c: DUP5
0000225d: PUSH4 0xffffffff
00002262: PUSH2 0x1f27
00002265: AND
00002266: JUMP
00002267: JUMPDEST
00002268: PUSH1 0x09
0000226a: SSTORE
0000226b: PUSH2 0x2272
0000226e: PUSH2 0x1b14
00002271: JUMP
00002272: JUMPDEST
00002273: PUSH1 0xff
00002275: DUP2
00002276: AND
00002277: PUSH1 0x00
00002279: SWAP1
0000227a: DUP2
0000227b: MSTORE
0000227c: PUSH1 0x12
0000227e: PUSH1 0x20
00002280: MSTORE
00002281: PUSH1 0x40
00002283: SWAP1
00002284: KECCAK256
00002285: PUSH1 0x02
00002287: ADD
00002288: SLOAD
00002289: SWAP1
0000228a: SWAP2
0000228b: POP
0000228c: PUSH2 0x229b
0000228f: SWAP1
00002290: DUP5
00002291: PUSH4 0xffffffff
00002296: PUSH2 0x1f27
00002299: AND
0000229a: JUMP
0000229b: JUMPDEST
0000229c: PUSH1 0xff
0000229e: SWAP1
0000229f: SWAP2
000022a0: AND
000022a1: PUSH1 0x00
000022a3: SWAP1
000022a4: DUP2
000022a5: MSTORE
000022a6: PUSH1 0x12
000022a8: PUSH1 0x20
000022aa: MSTORE
000022ab: PUSH1 0x40
000022ad: SWAP1
000022ae: KECCAK256
000022af: PUSH1 0x02
000022b1: ADD
000022b2: SSTORE
000022b3: POP
000022b4: POP
000022b5: POP
000022b6: JUMP
000022b7: JUMPDEST
000022b8: PUSH1 0x00
000022ba: DUP1
000022bb: DUP3
000022bc: DUP5
000022bd: DUP2
000022be: ISZERO
000022bf: ISZERO
000022c0: PUSH2 0x22c5
000022c3: JUMPI
000022c4: INVALID
000022c5: JUMPDEST
000022c6: DIV
000022c7: SWAP5
000022c8: SWAP4
000022c9: POP
000022ca: POP
000022cb: POP
000022cc: POP
000022cd: JUMP
000022ce: JUMPDEST
000022cf: PUSH1 0x00
000022d1: DUP1
000022d2: DUP1
000022d3: PUSH2 0x22da
000022d6: PUSH2 0x1b14
000022d9: JUMP
000022da: JUMPDEST
000022db: SWAP1
000022dc: POP
000022dd: PUSH2 0x22ee
000022e0: PUSH1 0x12
000022e2: DUP3
000022e3: DUP7
000022e4: PUSH4 0xffffffff
000022e9: PUSH2 0x2329
000022ec: AND
000022ed: JUMP
000022ee: JUMPDEST
000022ef: DUP1
000022f0: ISZERO
000022f1: PUSH2 0x2307
000022f4: JUMPI
000022f5: POP
000022f6: PUSH2 0x2307
000022f9: PUSH1 0x12
000022fb: DUP3
000022fc: DUP7
000022fd: PUSH4 0xffffffff
00002302: PUSH2 0x2358
00002305: AND
00002306: JUMP
00002307: JUMPDEST
00002308: ISZERO
00002309: PUSH2 0x2311
0000230c: JUMPI
0000230d: PUSH1 0x01
0000230f: SWAP2
00002310: POP
00002311: JUMPDEST
00002312: PUSH2 0x231a
00002315: DUP5
00002316: PUSH2 0x23b6
00002319: JUMP
0000231a: JUMPDEST
0000231b: DUP1
0000231c: ISZERO
0000231d: PUSH2 0x2121
00002320: JUMPI
00002321: POP
00002322: SWAP1
00002323: SWAP4
00002324: SWAP3
00002325: POP
00002326: POP
00002327: POP
00002328: JUMP
00002329: JUMPDEST
0000232a: PUSH1 0xff
0000232c: DUP3
0000232d: AND
0000232e: PUSH1 0x00
00002330: SWAP1
00002331: DUP2
00002332: MSTORE
00002333: PUSH1 0x20
00002335: DUP5
00002336: SWAP1
00002337: MSTORE
00002338: PUSH1 0x40
0000233a: DUP2
0000233b: KECCAK256
0000233c: PUSH1 0x03
0000233e: ADD
0000233f: SLOAD
00002340: DUP3
00002341: LT
00002342: ISZERO
00002343: PUSH2 0x234e
00002346: JUMPI
00002347: POP
00002348: PUSH1 0x00
0000234a: PUSH2 0x1f36
0000234d: JUMP
0000234e: JUMPDEST
0000234f: POP
00002350: PUSH1 0x01
00002352: SWAP4
00002353: SWAP3
00002354: POP
00002355: POP
00002356: POP
00002357: JUMP
00002358: JUMPDEST
00002359: PUSH1 0xff
0000235b: DUP3
0000235c: AND
0000235d: PUSH1 0x00
0000235f: SWAP1
00002360: DUP2
00002361: MSTORE
00002362: PUSH1 0x20
00002364: DUP5
00002365: SWAP1
00002366: MSTORE
00002367: PUSH1 0x40
00002369: DUP2
0000236a: KECCAK256
0000236b: PUSH1 0x02
0000236d: ADD
0000236e: SLOAD
0000236f: DUP2
00002370: SWAP1
00002371: PUSH2 0x2380
00002374: SWAP1
00002375: DUP5
00002376: PUSH4 0xffffffff
0000237b: PUSH2 0x1f27
0000237e: AND
0000237f: JUMP
00002380: JUMPDEST
00002381: PUSH1 0xff
00002383: DUP6
00002384: AND
00002385: PUSH1 0x00
00002387: SWAP1
00002388: DUP2
00002389: MSTORE
0000238a: PUSH1 0x20
0000238c: DUP8
0000238d: SWAP1
0000238e: MSTORE
0000238f: PUSH1 0x40
00002391: SWAP1
00002392: KECCAK256
00002393: PUSH1 0x04
00002395: ADD
00002396: SLOAD
00002397: SWAP1
00002398: SWAP2
00002399: POP
0000239a: DUP2
0000239b: GT
0000239c: ISZERO
0000239d: PUSH2 0x23a9
000023a0: JUMPI
000023a1: PUSH1 0x00
000023a3: SWAP2
000023a4: POP
000023a5: PUSH2 0x23ae
000023a8: JUMP
000023a9: JUMPDEST
000023aa: PUSH1 0x01
000023ac: SWAP2
000023ad: POP
000023ae: JUMPDEST
000023af: POP
000023b0: SWAP4
000023b1: SWAP3
000023b2: POP
000023b3: POP
000023b4: POP
000023b5: JUMP
000023b6: JUMPDEST
000023b7: PUSH1 0x00
000023b9: DUP1
000023ba: PUSH1 0x0f
000023bc: SLOAD
000023bd: PUSH2 0x23d1
000023c0: DUP5
000023c1: PUSH1 0x09
000023c3: SLOAD
000023c4: PUSH2 0x1f27
000023c7: SWAP1
000023c8: SWAP2
000023c9: SWAP1
000023ca: PUSH4 0xffffffff
000023cf: AND
000023d0: JUMP
000023d1: JUMPDEST
000023d2: GT
000023d3: ISZERO
000023d4: SWAP1
000023d5: POP
000023d6: PUSH2 0x23de
000023d9: DUP4
000023da: PUSH2 0x23eb
000023dd: JUMP
000023de: JUMPDEST
000023df: DUP1
000023e0: ISZERO
000023e1: PUSH2 0x1f36
000023e4: JUMPI
000023e5: POP
000023e6: SWAP3
000023e7: SWAP2
000023e8: POP
000023e9: POP
000023ea: JUMP
000023eb: JUMPDEST
000023ec: PUSH1 0x00
000023ee: DUP1
000023ef: PUSH1 0x00
000023f1: PUSH1 0x02
000023f3: SLOAD
000023f4: TIMESTAMP
000023f5: LT
000023f6: ISZERO
000023f7: DUP1
000023f8: ISZERO
000023f9: PUSH2 0x2404
000023fc: JUMPI
000023fd: POP
000023fe: PUSH1 0x03
00002400: SLOAD
00002401: TIMESTAMP
00002402: GT
00002403: ISZERO
00002404: JUMPDEST
00002405: SWAP2
00002406: POP
00002407: POP
00002408: CALLVALUE
00002409: ISZERO
0000240a: ISZERO
0000240b: DUP2
0000240c: DUP1
0000240d: ISZERO
0000240e: PUSH2 0x2121
00002411: JUMPI
00002412: POP
00002413: SWAP4
00002414: SWAP3
00002415: POP
00002416: POP
00002417: POP
00002418: JUMP
00002419: STOP
0000241a: LOG1
0000241b: PUSH6 0x627a7a723058
00002422: KECCAK256
00002423: UNKNOWN(0xC7)
00002424: SWAP14
00002425: DUP7
00002426: UNKNOWN(0xA5)
00002427: UNKNOWN(0xBB)
00002428: DIV
00002429: SWAP8
0000242a: PUSH32

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x84121d3cd38d99f8f8df63a714dd19e1151285b278c3d0fb67d26385b2a197f6
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x84121d3cd38d99f8f8df63a714dd19e1151285b278c3d0fb67d26385b2a197f6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x046dc166",
            "selector": "0x046dc166",
            "calldata_variants": [
                "0x046dc166",
                "0x046dc1660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x15a5d9d8",
            "selector": "0x15a5d9d8",
            "calldata_variants": [
                "0x15a5d9d8",
                "0x15a5d9d80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1f130761",
            "selector": "0x1f130761",
            "calldata_variants": [
                "0x1f130761",
                "0x1f1307610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26654d57",
            "selector": "0x26654d57",
            "calldata_variants": [
                "0x26654d57",
                "0x26654d570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ce3da0",
            "selector": "0x26ce3da0",
            "calldata_variants": [
                "0x26ce3da0",
                "0x26ce3da00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2c4e722e",
            "selector": "0x2c4e722e",
            "calldata_variants": [
                "0x2c4e722e",
                "0x2c4e722e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3197cbb6",
            "selector": "0x3197cbb6",
            "calldata_variants": [
                "0x3197cbb6",
                "0x3197cbb60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38af3eed",
            "selector": "0x38af3eed",
            "calldata_variants": [
                "0x38af3eed",
                "0x38af3eed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 4163,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4376,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4609,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 5,
    "untrusted_delegatecall_count": 5
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xba5a75596e481952b04b48f982db5c1c5675f15d1eb6f5f24bc541512a320341
call_targets: 0x5de9f32b2665bb2cdc23bfb51b03e2a2985ecc87
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xba5a75596e481952b04b48f982db5c1c5675f15d1eb6f5f24bc541512a320341",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5de9f32b2665bb2cdc23bfb51b03e2a2985ecc87"
    ],
    "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": "0x046dc166",
            "selector": "0x046dc166",
            "calldata_variants": [
                "0x046dc166",
                "0x046dc1660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x15a5d9d8",
            "selector": "0x15a5d9d8",
            "calldata_variants": [
                "0x15a5d9d8",
                "0x15a5d9d80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1f130761",
            "selector": "0x1f130761",
            "calldata_variants": [
                "0x1f130761",
                "0x1f1307610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26654d57",
            "selector": "0x26654d57",
            "calldata_variants": [
                "0x26654d57",
                "0x26654d570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ce3da0",
            "selector": "0x26ce3da0",
            "calldata_variants": [
                "0x26ce3da0",
                "0x26ce3da00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2c4e722e",
            "selector": "0x2c4e722e",
            "calldata_variants": [
                "0x2c4e722e",
                "0x2c4e722e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3197cbb6",
            "selector": "0x3197cbb6",
            "calldata_variants": [
                "0x3197cbb6",
                "0x3197cbb60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38af3eed",
            "selector": "0x38af3eed",
            "calldata_variants": [
                "0x38af3eed",
                "0x38af3eed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2462,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2839,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3142,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 12,
    "guards_detected": [],
    "untrusted_call_count": 12
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xba5a75596e481952b04b48f982db5c1c5675f15d1eb6f5f24bc541512a320341
call_targets: 0x5de9f32b2665bb2cdc23bfb51b03e2a2985ecc87
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xba5a75596e481952b04b48f982db5c1c5675f15d1eb6f5f24bc541512a320341",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x5de9f32b2665bb2cdc23bfb51b03e2a2985ecc87"
    ],
    "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": "0x046dc166",
            "selector": "0x046dc166",
            "calldata_variants": [
                "0x046dc166",
                "0x046dc1660000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x15a5d9d8",
            "selector": "0x15a5d9d8",
            "calldata_variants": [
                "0x15a5d9d8",
                "0x15a5d9d80000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1f130761",
            "selector": "0x1f130761",
            "calldata_variants": [
                "0x1f130761",
                "0x1f1307610000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26654d57",
            "selector": "0x26654d57",
            "calldata_variants": [
                "0x26654d57",
                "0x26654d570000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x26ce3da0",
            "selector": "0x26ce3da0",
            "calldata_variants": [
                "0x26ce3da0",
                "0x26ce3da00000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x2c4e722e",
            "selector": "0x2c4e722e",
            "calldata_variants": [
                "0x2c4e722e",
                "0x2c4e722e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3197cbb6",
            "selector": "0x3197cbb6",
            "calldata_variants": [
                "0x3197cbb6",
                "0x3197cbb60000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x38af3eed",
            "selector": "0x38af3eed",
            "calldata_variants": [
                "0x38af3eed",
                "0x38af3eed0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2462,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2839,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3142,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 12,
    "guards_detected": []
}
medium auth codex KYC signature replay allows bypassing intended per-user limits 75 no
view
evidence_json
{
    "evidence": "`buyWithKYCData` only validates a static payload (address, customerId, min/max) and enforces min/max only per call, with no nonce or cumulative tracking.",
    "locations": [
        "contracts/Contract.sol:1242",
        "contracts/Contract.sol:1251",
        "contracts/Contract.sol:1264"
    ],
    "recommendation": "Bind signatures to unique nonces and/or the exact purchase amount and track used nonces or cumulative purchases per user; include contract address and chain ID in the signed data to prevent cross-contract replays.",
    "exploit_scenario": "A whitelisted user can reuse the same signed KYC payload multiple times, each time staying under the per-transaction max, to exceed the intended cumulative purchase limit because there is no nonce/usage tracking or cumulative cap enforcement."
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 5
}
low auth codex KYC signature check can be bypassed if signerAddress is unset 65 no
view
evidence_json
{
    "evidence": "`buyWithKYCData` only checks `ecrecover(...) == signerAddress` and does not guard against `signerAddress` being zero; `signerAddress` is only set via an external owner call.",
    "locations": [
        "contracts/Contract.sol:1242",
        "contracts/Contract.sol:1253",
        "contracts/Contract.sol:1272"
    ],
    "recommendation": "Require `signerAddress != address(0)` inside `buyWithKYCData` and consider setting it in the constructor to avoid misconfiguration.",
    "exploit_scenario": "If the owner forgets to set `signerAddress`, an attacker can pass an invalid signature that makes `ecrecover` return the zero address, which will satisfy the equality check and allow unauthorized purchases."
}
low other codex Refunded flag never set due to equality operator 65 no
view
evidence_json
{
    "evidence": "`collectRefund` attempts to set the refund flag but uses `==`, leaving it permanently false.",
    "locations": [
        "contracts/Contract.sol:1220",
        "contracts/Contract.sol:1227"
    ],
    "recommendation": "Change `refunded[msg.sender] == true;` to `refunded[msg.sender] = true;` and consider setting it during `refundParticipant` as well.",
    "exploit_scenario": "Because `refunded[msg.sender] == true;` is a comparison, not an assignment, the refund flag never changes. If `refundable` is re-credited (e.g., via another admin refund), the same address can collect multiple refunds without the intended one-time guard."
}
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": 12
}
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
}