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

Analysis Run

f1cbd233-45c0-4ebf-9340-b7ed9fe4bae0

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

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Authorization based on tx.origin
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
30768 report.consolidate complete 1 / 1 3 months ago
75604 artifact.fetch complete 1 / 3 1 week ago
75605 tool.cast_disasm complete 1 / 3 1 week ago
75606 analysis.bundle complete 1 / 3 1 week ago
75607 capability.graph complete 1 / 3 1 week ago
75608 detector.run complete 1 / 3 1 week ago
75609 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
2
No findings?
no
Summary
Found two low-severity accounting issues: staking credits ignore transfer-fee token behavior, and reward funding checks can overcommit rewards using staked/owed balances.
View stderr
[codex:503381] OpenAI Codex v0.77.0 (research preview)
[codex:503381] --------
[codex:503381] workdir: /tmp/codex-multi-7f0cxco5
[codex:503381] model: gpt-5.2-codex
[codex:503381] provider: openai
[codex:503381] approval: never
[codex:503381] sandbox: read-only
[codex:503381] reasoning effort: xhigh
[codex:503381] reasoning summaries: auto
[codex:503381] session id: 019b7113-e0ea-7a91-a49b-219161668654
[codex:503381] --------
[codex:503381] user
[codex:503381] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:503381] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:503381] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:503381] 
[codex:503381] Scope rules:
[codex:503381] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:503381] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:503381] 
[codex:503381] Output MUST be valid JSON matching the provided schema.
[codex:503381] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:503381] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:503381] 
[codex:503381] Output constraints (IMPORTANT):
[codex:503381] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:503381] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:503381] mcp startup: no servers
[codex:503381] 
[codex:503381] thinking
[codex:503381] **Preparing to review audit instructions**
[codex:503381] exec
[codex:503381] /bin/bash -lc ls in /tmp/codex-multi-7f0cxco5 succeeded in 5ms:
[codex:503381] AUDIT_BUNDLE.txt
[codex:503381] codex-output-schema.json
[codex:503381] contracts
[codex:503381] 
[codex:503381] thinking
[codex:503381] **Reading AUDIT_BUNDLE file**
[codex:503381] exec
[codex:503381] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-7f0cxco5 succeeded in 5ms:
[codex:503381] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:503381] 
[codex:503381] ================================================================================
[codex:503381] FILE: contracts/src/lib/context.sol
[codex:503381] ================================================================================
[codex:503381] // SPDX-License-Identifier: MIT
[codex:503381] 
[codex:503381] pragma solidity ^0.6.0;
[codex:503381] 
[codex:503381] /*
[codex:503381]  * @dev Provides information about the current execution context, including the
[codex:503381]  * sender of the transaction and its data. While these are generally available
[codex:503381]  * via msg.sender and msg.data, they should not be accessed in such a direct
[codex:503381]  * manner, since when dealing with GSN meta-transactions the account sending and
[codex:503381]  * paying for execution may not be the actual sender (as far as an application
[codex:503381]  * is concerned).
[codex:503381]  *
[codex:503381]  * This contract is only required for intermediate, library-like contracts.
[codex:503381]  */
[codex:503381] abstract contract Context {
[codex:503381] 
[codex:503381] 
[codex:503381] 
[codex:503381] 
[codex:503381] thinking
[codex:503381] **Analyzing StakingRewards contract vulnerabilities**
[codex:503381] thinking
[codex:503381] **Identifying token and accounting configuration risks**
[codex:503381] 
[codex:503381] I'll review subtle risks around using the same token for staking and rewards, especially how reward calculations may improperly count staked tokens as available rewards, leading to potential insolvency or misconfigurations impacting withdrawals and payouts.
[codex:503381] thinking
[codex:503381] **Evaluating reward duration and accounting edge cases**
[codex:503381] 
[codex:503381] I'm examining how allowing zero rewardsDuration and not accounting for already accrued but unpaid rewards in balance checks can cause misconfigurations or distribution issues, plus the complications around fee-on-transfer tokens affecting internal accounting and reward payouts.
[codex:503381] thinking
[codex:503381] **Reviewing exploitability and access control risks**
[codex:503381] exec
[codex:503381] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-7f0cxco5 succeeded in 5ms:
[codex:503381] {"type": "object", "additionalProperties": false, "required": ["no_findings", "summary", "findings"], "properties": {"no_findings": {"type": "boolean"}, "summary": {"type": "string"}, "findings": {"type": "array", "items": {"type": "object", "additionalProperties": false, "required": ["severity", "category", "title", "evidence", "locations", "exploit_scenario", "recommendation"], "properties": {"severity": {"type": "string", "enum": ["info", "low", "medium", "high", "critical"]}, "category": {"type": "string", "enum": ["access_control", "reentrancy", "math", "oracle", "upgradeability", "auth", "other"]}, "title": {"type": "string"}, "exploit_scenario": {"type": "string"}, "recommendation": {"type": "string"}, "evidence": {"type": "string"}, "locations": {"type": "array", "items": {"type": "string"}}}}}}}
[codex:503381] 
[codex:503381] thinking
[codex:503381] **Planning vulnerability summary approach**
[codex:503381] exec
[codex:503381] /bin/bash -lc 'nl -ba contracts/src/staking-rewards.sol' in /tmp/codex-multi-7f0cxco5 succeeded in 5ms:
[codex:503381]      1	// SPDX-License-Identifier: MIT
[codex:503381]      2	
[codex:503381]      3	pragma solidity ^0.6.7;
[codex:503381]      4	
[codex:503381]      5	import "./lib/reentrancy-guard.sol";
[codex:503381]      6	import "./lib/pausable.sol";
[codex:503381]      7	import "./lib/erc20.sol";
[codex:503381]      8	import "./lib/safe-math.sol";
[codex:503381]      9	
[codex:503381]     10	contract StakingRewards is ReentrancyGuard, Pausable {
[codex:503381]     11	    using SafeMath for uint256;
[codex:503381]     12	    using SafeERC20 for IERC20;
[codex:503381]     13	
[codex:503381]     14	    /* ========== STATE VARIABLES ========== */
[codex:503381]     15	
[codex:503381]     16	    IERC20 public rewardsToken;
[codex:503381]     17	    IERC20 public stakingToken;
[codex:503381]     18	    uint256 public periodFinish = 0;
[codex:503381]     19	    uint256 public rewardRate = 0;
[codex:503381]     20	    uint256 public rewardsDuration = 7 days;
[codex:503381] 
[codex:503381] 
[codex:503381] thinking
[codex:503381] **Summarizing staking token and reward checks**
[codex:503381] 
[codex:503381] I'm reviewing two potential low-severity issues: one where staking accounting fails for fee-on-transfer tokens causing insolvency risks due to mismatched internal balances, and another where reward funding checks ignore already accrued rewards or staked tokens, risking overcommitment especially if rewardToken equals stakingToken. I’m weighing evidence locations and crafting clear findings with recommendations to highlight these accounting edge cases without overstating admin misconfiguration as vulnerabilities.
[codex:503381] thinking
[codex:503381] ```json
[codex:503381] {
[codex:503381]   "no_findings": false,
[codex:503381]   "summary": "Found two low-severity accounting issues: staking credits ignore transfer-fee tokens leading to insolvency risk, and reward funding checks can overcommit rewards using staked principal or accrued rewards.",
[codex:503381]   "findings": [
[codex:503381]     {
[codex:503381]       "severity": "low",
[codex:503381]       "category": "other",
[codex:503381]       "title": "Staking credits ignore actual received amount (fee-on-transfer token risk)",
[codex:503381]       "exploit_scenario": "If stakingToken charges a transfer fee or burns on transfer, stake() credits the full amount while the contract receives less. An attacker can stake, wait for others to deposit, then withdraw their full credited amount, leaving later stakers unable to withdraw due to insufficient balance.",
[codex:503381]       "recommendation": "Use balance-before/after to credit the actual received amount, or enforce non-deflationary tokens by requiring balance increase == amount and revert otherwise.",
[codex:503381]       "evidence": "stake() increments _totalSupply/_balances before calling stakingToken.safeTransferFrom(msg.sender, address(this), amount), and withdraw() transfers the full stored amount without reconciling actual balances.",
[codex:503381]       "locations": [
[codex:503381]         "contracts/src/staking-rewards.sol:87",
[codex:503381]         "contracts/src/staking-rewards.sol:94",
[codex:503381]         "contracts/src/staking-rewards.sol:96",
[codex:503381]         "contracts/src/staking-rewards.sol:106",
[codex:503381]         "contracts/src/staking-rewards.sol:108"
[codex:503381]       ]
[codex:503381]     },
[codex:503381]     {
[codex:503381]       "severity": "low",
[codex:503381]       "category": "other",
[codex:503381]       "title": "Reward schedule can be set using staked principal or accrued rewards as backing",
[codex:503381]       "exploit_scenario": "Owner calls notifyRewardAmount without depositing new reward tokens (or with rewardsToken == stakingToken). The check uses the full token balance, which includes staked principal and already-accrued rewards, so rewardRate can be set higher than actual reward reserves. As rewards are claimed, the contract becomes insolvent and later withdrawals can revert.",
[codex:503381]       "recommendation": "Track and reserve reward funding separately; if rewardsToken can equal stakingToken, subtract _totalSupply from the balance when validating rewardRate, or require a balance increase equal to the new reward before updating the schedule.",
[codex:503381]       "evidence": "notifyRewardAmount() bounds rewardRate using rewardsToken.balanceOf(address(this)) with no reserve for staked principal or already accrued rewards.",
[codex:503381]       "locations": [
[codex:503381]         "contracts/src/staking-rewards.sol:128",
[codex:503381]         "contracts/src/staking-rewards.sol:145",
[codex:503381]         "contracts/src/staking-rewards.sol:147"
[codex:503381]       ]
[codex:503381]     }
[codex:503381]   ]
[codex:503381] }
[codex:503381] ```
[codex:503381] codex
[codex:503381] {"no_findings":false,"summary":"Found two low-severity accounting issues: staking credits ignore transfer-fee token behavior, and reward funding checks can overcommit rewards using staked/owed balances.","findings":[{"severity":"low","category":"other","title":"Staking credits ignore actual received amount (fee-on-transfer token risk)","exploit_scenario":"If `stakingToken` charges a transfer fee or burns on transfer, `stake()` credits the full `amount` while the contract receives less. An attacker can stake, wait for others to deposit, then withdraw their full credited amount, leaving later stakers unable to withdraw due to insufficient balance.","recommendation":"Credit the actual received amount using balance-before/after accounting, or enforce non-deflationary staking tokens by requiring the balance increase to equal `amount` and reverting otherwise.","evidence":"`stake()` increments `_totalSupply`/`_balances` by `amount` before calling `stakingToken.safeTransferFrom`, and `withdraw()` transfers the full stored amount without reconciling actual balances.","locations":["contracts/src/staking-rewards.sol:87","contracts/src/staking-rewards.sol:94","contracts/src/staking-rewards.sol:96","contracts/src/staking-rewards.sol:106","contracts/src/staking-rewards.sol:108"]},{"severity":"low","category":"other","title":"Reward schedule can be set using staked principal or accrued rewards as backing","exploit_scenario":"If the owner calls `notifyRewardAmount()` without depositing new reward tokens (or if `rewardsToken` equals `stakingToken`), the check uses the full token balance, which includes staked principal and already-accrued rewards. The contract can become insolvent as rewards are claimed, and later withdrawals can revert due to insufficient balance.","recommendation":"Track a dedicated reward reserve; if `rewardsToken` can equal `stakingToken`, validate `rewardRate` against balance minus `_totalSupply` (and ideally accrued rewards), or require a balance increase equal to the new reward before updating the schedule.","evidence":"`notifyRewardAmount()` bounds `rewardRate` using `rewardsToken.balanceOf(address(this))` with no reserve for staked principal or already accrued rewards.","locations":["contracts/src/staking-rewards.sol:128","contracts/src/staking-rewards.sol:145","contracts/src/staking-rewards.sol:147"]}]}
[codex:503381] tokens used
[codex:503381] 33,474
[codex:503381] {"no_findings":false,"summary":"Found two low-severity accounting issues: staking credits ignore transfer-fee token behavior, and reward funding checks can overcommit rewards using staked/owed balances.","findings":[{"severity":"low","category":"other","title":"Staking credits ignore actual received amount (fee-on-transfer token risk)","exploit_scenario":"If `stakingToken` charges a transfer fee or burns on transfer, `stake()` credits the full `amount` while the contract receives less. An attacker can stake, wait for others to deposit, then withdraw their full credited amount, leaving later stakers unable to withdraw due to insufficient balance.","recommendation":"Credit the actual received amount using balance-before/after accounting, or enforce non-deflationary staking tokens by requiring the balance increase to equal `amount` and reverting otherwise.","evidence":"`stake()` increments `_totalSupply`/`_balances` by `amount` before calling `stakingToken.safeTransferFrom`, and `withdraw()` transfers the full stored amount without reconciling actual balances.","locations":["contracts/src/staking-rewards.sol:87","contracts/src/staking-rewards.sol:94","contracts/src/staking-rewards.sol:96","contracts/src/staking-rewards.sol:106","contracts/src/staking-rewards.sol:108"]},{"severity":"low","category":"other","title":"Reward schedule can be set using staked principal or accrued rewards as backing","exploit_scenario":"If the owner calls `notifyRewardAmount()` without depositing new reward tokens (or if `rewardsToken` equals `stakingToken`), the check uses the full token balance, which includes staked principal and already-accrued rewards. The contract can become insolvent as rewards are claimed, and later withdrawals can revert due to insufficient balance.","recommendation":"Track a dedicated reward reserve; if `rewardsToken` can equal `stakingToken`, validate `rewardRate` against balance minus `_totalSupply` (and ideally accrued rewards), or require a balance increase equal to the new reward before updating the schedule.","evidence":"`notifyRewardAmount()` bounds `rewardRate` using `rewardsToken.balanceOf(address(this))` with no reserve for staked principal or already accrued rewards.","locations":["contracts/src/staking-rewards.sol:128","contracts/src/staking-rewards.sol:145","contracts/src/staking-rewards.sol:147"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-30T21:10:26.771237+00:00",
        "returncode": 0
    },
    "summary": "Found two low-severity accounting issues: staking credits ignore transfer-fee token behavior, and reward funding checks can overcommit rewards using staked/owed balances.",
    "raw_final": {
        "summary": "Found two low-severity accounting issues: staking credits ignore transfer-fee token behavior, and reward funding checks can overcommit rewards using staked/owed balances.",
        "findings": [
            {
                "title": "Staking credits ignore actual received amount (fee-on-transfer token risk)",
                "category": "other",
                "evidence": "`stake()` increments `_totalSupply`/`_balances` by `amount` before calling `stakingToken.safeTransferFrom`, and `withdraw()` transfers the full stored amount without reconciling actual balances.",
                "severity": "low",
                "locations": [
                    "contracts/src/staking-rewards.sol:87",
                    "contracts/src/staking-rewards.sol:94",
                    "contracts/src/staking-rewards.sol:96",
                    "contracts/src/staking-rewards.sol:106",
                    "contracts/src/staking-rewards.sol:108"
                ],
                "recommendation": "Credit the actual received amount using balance-before/after accounting, or enforce non-deflationary staking tokens by requiring the balance increase to equal `amount` and reverting otherwise.",
                "exploit_scenario": "If `stakingToken` charges a transfer fee or burns on transfer, `stake()` credits the full `amount` while the contract receives less. An attacker can stake, wait for others to deposit, then withdraw their full credited amount, leaving later stakers unable to withdraw due to insufficient balance."
            },
            {
                "title": "Reward schedule can be set using staked principal or accrued rewards as backing",
                "category": "other",
                "evidence": "`notifyRewardAmount()` bounds `rewardRate` using `rewardsToken.balanceOf(address(this))` with no reserve for staked principal or already accrued rewards.",
                "severity": "low",
                "locations": [
                    "contracts/src/staking-rewards.sol:128",
                    "contracts/src/staking-rewards.sol:145",
                    "contracts/src/staking-rewards.sol:147"
                ],
                "recommendation": "Track a dedicated reward reserve; if `rewardsToken` can equal `stakingToken`, validate `rewardRate` against balance minus `_totalSupply` (and ideally accrued rewards), or require a balance increase equal to the new reward before updating the schedule.",
                "exploit_scenario": "If the owner calls `notifyRewardAmount()` without depositing new reward tokens (or if `rewardsToken` equals `stakingToken`), the check uses the full token balance, which includes staked principal and already-accrued rewards. The contract can become insolvent as rewards are claimed, and later withdrawals can revert due to insufficient balance."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
2
EXT*/BALANCE
2
Total opcodes
3490
Flags
No heuristic flags raised.
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: CALLVALUE
00000006: DUP1
00000007: ISZERO
00000008: PUSH2 0x0010
0000000b: JUMPI
0000000c: PUSH1 0x00
0000000e: DUP1
0000000f: REVERT
00000010: JUMPDEST
00000011: POP
00000012: PUSH1 0x04
00000014: CALLDATASIZE
00000015: LT
00000016: PUSH2 0x01d9
00000019: JUMPI
0000001a: PUSH1 0x00
0000001c: CALLDATALOAD
0000001d: PUSH1 0xe0
0000001f: SHR
00000020: DUP1
00000021: PUSH4 0x7ae2b5c7
00000026: GT
00000027: PUSH2 0x0104
0000002a: JUMPI
0000002b: DUP1
0000002c: PUSH4 0xa694fc3a
00000031: GT
00000032: PUSH2 0x00a2
00000035: JUMPI
00000036: DUP1
00000037: PUSH4 0xd1af0c7d
0000003c: GT
0000003d: PUSH2 0x0071
00000040: JUMPI
00000041: DUP1
00000042: PUSH4 0xd1af0c7d
00000047: EQ
00000048: PUSH2 0x0432
0000004b: JUMPI
0000004c: DUP1
0000004d: PUSH4 0xdf136d65
00000052: EQ
00000053: PUSH2 0x043a
00000056: JUMPI
00000057: DUP1
00000058: PUSH4 0xe9fad8ee
0000005d: EQ
0000005e: PUSH2 0x0442
00000061: JUMPI
00000062: DUP1
00000063: PUSH4 0xebe2b12b
00000068: EQ
00000069: PUSH2 0x044a
0000006c: JUMPI
0000006d: PUSH2 0x01d9
00000070: JUMP
00000071: JUMPDEST
00000072: DUP1
00000073: PUSH4 0xa694fc3a
00000078: EQ
00000079: PUSH2 0x03e8
0000007c: JUMPI
0000007d: DUP1
0000007e: PUSH4 0xc8f33c91
00000083: EQ
00000084: PUSH2 0x0405
00000087: JUMPI
00000088: DUP1
00000089: PUSH4 0xcc1a378f
0000008e: EQ
0000008f: PUSH2 0x040d
00000092: JUMPI
00000093: DUP1
00000094: PUSH4 0xcd3daf9d
00000099: EQ
0000009a: PUSH2 0x042a
0000009d: JUMPI
0000009e: PUSH2 0x01d9
000000a1: JUMP
000000a2: JUMPDEST
000000a3: DUP1
000000a4: PUSH4 0x8980f11f
000000a9: GT
000000aa: PUSH2 0x00de
000000ad: JUMPI
000000ae: DUP1
000000af: PUSH4 0x8980f11f
000000b4: EQ
000000b5: PUSH2 0x0386
000000b8: JUMPI
000000b9: DUP1
000000ba: PUSH4 0x8b876347
000000bf: EQ
000000c0: PUSH2 0x03b2
000000c3: JUMPI
000000c4: DUP1
000000c5: PUSH4 0x8da5cb5b
000000ca: EQ
000000cb: PUSH2 0x03d8
000000ce: JUMPI
000000cf: DUP1
000000d0: PUSH4 0x91b4ded9
000000d5: EQ
000000d6: PUSH2 0x03e0
000000d9: JUMPI
000000da: PUSH2 0x01d9
000000dd: JUMP
000000de: JUMPDEST
000000df: DUP1
000000e0: PUSH4 0x7ae2b5c7
000000e5: EQ
000000e6: PUSH2 0x0353
000000e9: JUMPI
000000ea: DUP1
000000eb: PUSH4 0x7b0a47ee
000000f0: EQ
000000f1: PUSH2 0x0376
000000f4: JUMPI
000000f5: DUP1
000000f6: PUSH4 0x80faa57d
000000fb: EQ
000000fc: PUSH2 0x037e
000000ff: JUMPI
00000100: PUSH2 0x01d9
00000103: JUMP
00000104: JUMPDEST
00000105: DUP1
00000106: PUSH4 0x386a9525
0000010b: GT
0000010c: PUSH2 0x017c
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0x5c975abb
00000116: GT
00000117: PUSH2 0x014b
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0x5c975abb
00000121: EQ
00000122: PUSH2 0x0301
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0x70a08231
0000012c: EQ
0000012d: PUSH2 0x031d
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0x72f702f3
00000137: EQ
00000138: PUSH2 0x0343
0000013b: JUMPI
0000013c: DUP1
0000013d: PUSH4 0x79ba5097
00000142: EQ
00000143: PUSH2 0x034b
00000146: JUMPI
00000147: PUSH2 0x01d9
0000014a: JUMP
0000014b: JUMPDEST
0000014c: DUP1
0000014d: PUSH4 0x386a9525
00000152: EQ
00000153: PUSH2 0x02b0
00000156: JUMPI
00000157: DUP1
00000158: PUSH4 0x3c6b16ab
0000015d: EQ
0000015e: PUSH2 0x02b8
00000161: JUMPI
00000162: DUP1
00000163: PUSH4 0x3d18b912
00000168: EQ
00000169: PUSH2 0x02d5
0000016c: JUMPI
0000016d: DUP1
0000016e: PUSH4 0x53a47bb7
00000173: EQ
00000174: PUSH2 0x02dd
00000177: JUMPI
00000178: PUSH2 0x01d9
0000017b: JUMP
0000017c: JUMPDEST
0000017d: DUP1
0000017e: PUSH4 0x16c38b3c
00000183: GT
00000184: PUSH2 0x01b8
00000187: JUMPI
00000188: DUP1
00000189: PUSH4 0x16c38b3c
0000018e: EQ
0000018f: PUSH2 0x0264
00000192: JUMPI
00000193: DUP1
00000194: PUSH4 0x18160ddd
00000199: EQ
0000019a: PUSH2 0x0283
0000019d: JUMPI
0000019e: DUP1
0000019f: PUSH4 0x1c1f78eb
000001a4: EQ
000001a5: PUSH2 0x028b
000001a8: JUMPI
000001a9: DUP1
000001aa: PUSH4 0x2e1a7d4d
000001af: EQ
000001b0: PUSH2 0x0293
000001b3: JUMPI
000001b4: PUSH2 0x01d9
000001b7: JUMP
000001b8: JUMPDEST
000001b9: DUP1
000001ba: PUSH3 0x8cc262
000001be: EQ
000001bf: PUSH2 0x01de
000001c2: JUMPI
000001c3: DUP1
000001c4: PUSH4 0x0700037d
000001c9: EQ
000001ca: PUSH2 0x0216
000001cd: JUMPI
000001ce: DUP1
000001cf: PUSH4 0x1627540c
000001d4: EQ
000001d5: PUSH2 0x023c
000001d8: JUMPI
000001d9: JUMPDEST
000001da: PUSH1 0x00
000001dc: DUP1
000001dd: REVERT
000001de: JUMPDEST
000001df: PUSH2 0x0204
000001e2: PUSH1 0x04
000001e4: DUP1
000001e5: CALLDATASIZE
000001e6: SUB
000001e7: PUSH1 0x20
000001e9: DUP2
000001ea: LT
000001eb: ISZERO
000001ec: PUSH2 0x01f4
000001ef: JUMPI
000001f0: PUSH1 0x00
000001f2: DUP1
000001f3: REVERT
000001f4: JUMPDEST
000001f5: POP
000001f6: CALLDATALOAD
000001f7: PUSH1 0x01
000001f9: PUSH1 0x01
000001fb: PUSH1 0xa0
000001fd: SHL
000001fe: SUB
000001ff: AND
00000200: PUSH2 0x0452
00000203: JUMP
00000204: JUMPDEST
00000205: PUSH1 0x40
00000207: DUP1
00000208: MLOAD
00000209: SWAP2
0000020a: DUP3
0000020b: MSTORE
0000020c: MLOAD
0000020d: SWAP1
0000020e: DUP2
0000020f: SWAP1
00000210: SUB
00000211: PUSH1 0x20
00000213: ADD
00000214: SWAP1
00000215: RETURN
00000216: JUMPDEST
00000217: PUSH2 0x0204
0000021a: PUSH1 0x04
0000021c: DUP1
0000021d: CALLDATASIZE
0000021e: SUB
0000021f: PUSH1 0x20
00000221: DUP2
00000222: LT
00000223: ISZERO
00000224: PUSH2 0x022c
00000227: JUMPI
00000228: PUSH1 0x00
0000022a: DUP1
0000022b: REVERT
0000022c: JUMPDEST
0000022d: POP
0000022e: CALLDATALOAD
0000022f: PUSH1 0x01
00000231: PUSH1 0x01
00000233: PUSH1 0xa0
00000235: SHL
00000236: SUB
00000237: AND
00000238: PUSH2 0x04e8
0000023b: JUMP
0000023c: JUMPDEST
0000023d: PUSH2 0x0262
00000240: PUSH1 0x04
00000242: DUP1
00000243: CALLDATASIZE
00000244: SUB
00000245: PUSH1 0x20
00000247: DUP2
00000248: LT
00000249: ISZERO
0000024a: PUSH2 0x0252
0000024d: JUMPI
0000024e: PUSH1 0x00
00000250: DUP1
00000251: REVERT
00000252: JUMPDEST
00000253: POP
00000254: CALLDATALOAD
00000255: PUSH1 0x01
00000257: PUSH1 0x01
00000259: PUSH1 0xa0
0000025b: SHL
0000025c: SUB
0000025d: AND
0000025e: PUSH2 0x04fa
00000261: JUMP
00000262: JUMPDEST
00000263: STOP
00000264: JUMPDEST
00000265: PUSH2 0x0262
00000268: PUSH1 0x04
0000026a: DUP1
0000026b: CALLDATASIZE
0000026c: SUB
0000026d: PUSH1 0x20
0000026f: DUP2
00000270: LT
00000271: ISZERO
00000272: PUSH2 0x027a
00000275: JUMPI
00000276: PUSH1 0x00
00000278: DUP1
00000279: REVERT
0000027a: JUMPDEST
0000027b: POP
0000027c: CALLDATALOAD
0000027d: ISZERO
0000027e: ISZERO
0000027f: PUSH2 0x0556
00000282: JUMP
00000283: JUMPDEST
00000284: PUSH2 0x0204
00000287: PUSH2 0x05d0
0000028a: JUMP
0000028b: JUMPDEST
0000028c: PUSH2 0x0204
0000028f: PUSH2 0x05d7
00000292: JUMP
00000293: JUMPDEST
00000294: PUSH2 0x0262
00000297: PUSH1 0x04
00000299: DUP1
0000029a: CALLDATASIZE
0000029b: SUB
0000029c: PUSH1 0x20
0000029e: DUP2
0000029f: LT
000002a0: ISZERO
000002a1: PUSH2 0x02a9
000002a4: JUMPI
000002a5: PUSH1 0x00
000002a7: DUP1
000002a8: REVERT
000002a9: JUMPDEST
000002aa: POP
000002ab: CALLDATALOAD
000002ac: PUSH2 0x05f5
000002af: JUMP
000002b0: JUMPDEST
000002b1: PUSH2 0x0204
000002b4: PUSH2 0x0797
000002b7: JUMP
000002b8: JUMPDEST
000002b9: PUSH2 0x0262
000002bc: PUSH1 0x04
000002be: DUP1
000002bf: CALLDATASIZE
000002c0: SUB
000002c1: PUSH1 0x20
000002c3: DUP2
000002c4: LT
000002c5: ISZERO
000002c6: PUSH2 0x02ce
000002c9: JUMPI
000002ca: PUSH1 0x00
000002cc: DUP1
000002cd: REVERT
000002ce: JUMPDEST
000002cf: POP
000002d0: CALLDATALOAD
000002d1: PUSH2 0x079d
000002d4: JUMP
000002d5: JUMPDEST
000002d6: PUSH2 0x0262
000002d9: PUSH2 0x09b5
000002dc: JUMP
000002dd: JUMPDEST
000002de: PUSH2 0x02e5
000002e1: PUSH2 0x0af6
000002e4: JUMP
000002e5: JUMPDEST
000002e6: PUSH1 0x40
000002e8: DUP1
000002e9: MLOAD
000002ea: PUSH1 0x01
000002ec: PUSH1 0x01
000002ee: PUSH1 0xa0
000002f0: SHL
000002f1: SUB
000002f2: SWAP1
000002f3: SWAP3
000002f4: AND
000002f5: DUP3
000002f6: MSTORE
000002f7: MLOAD
000002f8: SWAP1
000002f9: DUP2
000002fa: SWAP1
000002fb: SUB
000002fc: PUSH1 0x20
000002fe: ADD
000002ff: SWAP1
00000300: RETURN
00000301: JUMPDEST
00000302: PUSH2 0x0309
00000305: PUSH2 0x0b05
00000308: JUMP
00000309: JUMPDEST
0000030a: PUSH1 0x40
0000030c: DUP1
0000030d: MLOAD
0000030e: SWAP2
0000030f: ISZERO
00000310: ISZERO
00000311: DUP3
00000312: MSTORE
00000313: MLOAD
00000314: SWAP1
00000315: DUP2
00000316: SWAP1
00000317: SUB
00000318: PUSH1 0x20
0000031a: ADD
0000031b: SWAP1
0000031c: RETURN
0000031d: JUMPDEST
0000031e: PUSH2 0x0204
00000321: PUSH1 0x04
00000323: DUP1
00000324: CALLDATASIZE
00000325: SUB
00000326: PUSH1 0x20
00000328: DUP2
00000329: LT
0000032a: ISZERO
0000032b: PUSH2 0x0333
0000032e: JUMPI
0000032f: PUSH1 0x00
00000331: DUP1
00000332: REVERT
00000333: JUMPDEST
00000334: POP
00000335: CALLDATALOAD
00000336: PUSH1 0x01
00000338: PUSH1 0x01
0000033a: PUSH1 0xa0
0000033c: SHL
0000033d: SUB
0000033e: AND
0000033f: PUSH2 0x0b0e
00000342: JUMP
00000343: JUMPDEST
00000344: PUSH2 0x02e5
00000347: PUSH2 0x0b29
0000034a: JUMP
0000034b: JUMPDEST
0000034c: PUSH2 0x0262
0000034f: PUSH2 0x0b38
00000352: JUMP
00000353: JUMPDEST
00000354: PUSH2 0x0204
00000357: PUSH1 0x04
00000359: DUP1
0000035a: CALLDATASIZE
0000035b: SUB
0000035c: PUSH1 0x40
0000035e: DUP2
0000035f: LT
00000360: ISZERO
00000361: PUSH2 0x0369
00000364: JUMPI
00000365: PUSH1 0x00
00000367: DUP1
00000368: REVERT
00000369: JUMPDEST
0000036a: POP
0000036b: DUP1
0000036c: CALLDATALOAD
0000036d: SWAP1
0000036e: PUSH1 0x20
00000370: ADD
00000371: CALLDATALOAD
00000372: PUSH2 0x0bf4
00000375: JUMP
00000376: JUMPDEST
00000377: PUSH2 0x0204
0000037a: PUSH2 0x0c0c
0000037d: JUMP
0000037e: JUMPDEST
0000037f: PUSH2 0x0204
00000382: PUSH2 0x0c12
00000385: JUMP
00000386: JUMPDEST
00000387: PUSH2 0x0262
0000038a: PUSH1 0x04
0000038c: DUP1
0000038d: CALLDATASIZE
0000038e: SUB
0000038f: PUSH1 0x40
00000391: DUP2
00000392: LT
00000393: ISZERO
00000394: PUSH2 0x039c
00000397: JUMPI
00000398: PUSH1 0x00
0000039a: DUP1
0000039b: REVERT
0000039c: JUMPDEST
0000039d: POP
0000039e: PUSH1 0x01
000003a0: PUSH1 0x01
000003a2: PUSH1 0xa0
000003a4: SHL
000003a5: SUB
000003a6: DUP2
000003a7: CALLDATALOAD
000003a8: AND
000003a9: SWAP1
000003aa: PUSH1 0x20
000003ac: ADD
000003ad: CALLDATALOAD
000003ae: PUSH2 0x0c20
000003b1: JUMP
000003b2: JUMPDEST
000003b3: PUSH2 0x0204
000003b6: PUSH1 0x04
000003b8: DUP1
000003b9: CALLDATASIZE
000003ba: SUB
000003bb: PUSH1 0x20
000003bd: DUP2
000003be: LT
000003bf: ISZERO
000003c0: PUSH2 0x03c8
000003c3: JUMPI
000003c4: PUSH1 0x00
000003c6: DUP1
000003c7: REVERT
000003c8: JUMPDEST
000003c9: POP
000003ca: CALLDATALOAD
000003cb: PUSH1 0x01
000003cd: PUSH1 0x01
000003cf: PUSH1 0xa0
000003d1: SHL
000003d2: SUB
000003d3: AND
000003d4: PUSH2 0x0cfc
000003d7: JUMP
000003d8: JUMPDEST
000003d9: PUSH2 0x02e5
000003dc: PUSH2 0x0d0e
000003df: JUMP
000003e0: JUMPDEST
000003e1: PUSH2 0x0204
000003e4: PUSH2 0x0d1d
000003e7: JUMP
000003e8: JUMPDEST
000003e9: PUSH2 0x0262
000003ec: PUSH1 0x04
000003ee: DUP1
000003ef: CALLDATASIZE
000003f0: SUB
000003f1: PUSH1 0x20
000003f3: DUP2
000003f4: LT
000003f5: ISZERO
000003f6: PUSH2 0x03fe
000003f9: JUMPI
000003fa: PUSH1 0x00
000003fc: DUP1
000003fd: REVERT
000003fe: JUMPDEST
000003ff: POP
00000400: CALLDATALOAD
00000401: PUSH2 0x0d23
00000404: JUMP
00000405: JUMPDEST
00000406: PUSH2 0x0204
00000409: PUSH2 0x0f05
0000040c: JUMP
0000040d: JUMPDEST
0000040e: PUSH2 0x0262
00000411: PUSH1 0x04
00000413: DUP1
00000414: CALLDATASIZE
00000415: SUB
00000416: PUSH1 0x20
00000418: DUP2
00000419: LT
0000041a: ISZERO
0000041b: PUSH2 0x0423
0000041e: JUMPI
0000041f: PUSH1 0x00
00000421: DUP1
00000422: REVERT
00000423: JUMPDEST
00000424: POP
00000425: CALLDATALOAD
00000426: PUSH2 0x0f0b
00000429: JUMP
0000042a: JUMPDEST
0000042b: PUSH2 0x0204
0000042e: PUSH2 0x0f8e
00000431: JUMP
00000432: JUMPDEST
00000433: PUSH2 0x02e5
00000436: PUSH2 0x0fe8
00000439: JUMP
0000043a: JUMPDEST
0000043b: PUSH2 0x0204
0000043e: PUSH2 0x0ffc
00000441: JUMP
00000442: JUMPDEST
00000443: PUSH2 0x0262
00000446: PUSH2 0x1002
00000449: JUMP
0000044a: JUMPDEST
0000044b: PUSH2 0x0204
0000044e: PUSH2 0x1025
00000451: JUMP
00000452: JUMPDEST
00000453: PUSH1 0x01
00000455: PUSH1 0x01
00000457: PUSH1 0xa0
00000459: SHL
0000045a: SUB
0000045b: DUP2
0000045c: AND
0000045d: PUSH1 0x00
0000045f: SWAP1
00000460: DUP2
00000461: MSTORE
00000462: PUSH1 0x0c
00000464: PUSH1 0x20
00000466: SWAP1
00000467: DUP2
00000468: MSTORE
00000469: PUSH1 0x40
0000046b: DUP1
0000046c: DUP4
0000046d: KECCAK256
0000046e: SLOAD
0000046f: PUSH1 0x0b
00000471: SWAP1
00000472: SWAP3
00000473: MSTORE
00000474: DUP3
00000475: KECCAK256
00000476: SLOAD
00000477: PUSH2 0x04e2
0000047a: SWAP2
0000047b: SWAP1
0000047c: PUSH2 0x04d6
0000047f: SWAP1
00000480: PUSH8 0x0de0b6b3a7640000
00000489: SWAP1
0000048a: PUSH2 0x04ca
0000048d: SWAP1
0000048e: PUSH2 0x04a5
00000491: SWAP1
00000492: PUSH2 0x0499
00000495: PUSH2 0x0f8e
00000498: JUMP
00000499: JUMPDEST
0000049a: SWAP1
0000049b: PUSH4 0xffffffff
000004a0: PUSH2 0x102b
000004a3: AND
000004a4: JUMP
000004a5: JUMPDEST
000004a6: PUSH1 0x01
000004a8: PUSH1 0x01
000004aa: PUSH1 0xa0
000004ac: SHL
000004ad: SUB
000004ae: DUP9
000004af: AND
000004b0: PUSH1 0x00
000004b2: SWAP1
000004b3: DUP2
000004b4: MSTORE
000004b5: PUSH1 0x0e
000004b7: PUSH1 0x20
000004b9: MSTORE
000004ba: PUSH1 0x40
000004bc: SWAP1
000004bd: KECCAK256
000004be: SLOAD
000004bf: SWAP1
000004c0: PUSH4 0xffffffff
000004c5: PUSH2 0x106d
000004c8: AND
000004c9: JUMP
000004ca: JUMPDEST
000004cb: SWAP1
000004cc: PUSH4 0xffffffff
000004d1: PUSH2 0x10c6
000004d4: AND
000004d5: JUMP
000004d6: JUMPDEST
000004d7: SWAP1
000004d8: PUSH4 0xffffffff
000004dd: PUSH2 0x1108
000004e0: AND
000004e1: JUMP
000004e2: JUMPDEST
000004e3: SWAP3
000004e4: SWAP2
000004e5: POP
000004e6: POP
000004e7: JUMP
000004e8: JUMPDEST
000004e9: PUSH1 0x0c
000004eb: PUSH1 0x20
000004ed: MSTORE
000004ee: PUSH1 0x00
000004f0: SWAP1
000004f1: DUP2
000004f2: MSTORE
000004f3: PUSH1 0x40
000004f5: SWAP1
000004f6: KECCAK256
000004f7: SLOAD
000004f8: DUP2
000004f9: JUMP
000004fa: JUMPDEST
000004fb: PUSH2 0x0502
000004fe: PUSH2 0x1162
00000501: JUMP
00000502: JUMPDEST
00000503: PUSH1 0x02
00000505: DUP1
00000506: SLOAD
00000507: PUSH1 0x01
00000509: PUSH1 0x01
0000050b: PUSH1 0xa0
0000050d: SHL
0000050e: SUB
0000050f: DUP4
00000510: AND
00000511: PUSH1 0x01
00000513: PUSH1 0x01
00000515: PUSH1 0xa0
00000517: SHL
00000518: SUB
00000519: NOT
0000051a: SWAP1
0000051b: SWAP2
0000051c: AND
0000051d: DUP2
0000051e: OR
0000051f: SWAP1
00000520: SWAP2
00000521: SSTORE
00000522: PUSH1 0x40
00000524: DUP1
00000525: MLOAD
00000526: SWAP2
00000527: DUP3
00000528: MSTORE
00000529: MLOAD
0000052a: PUSH32 0x906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce22
0000054b: SWAP2
0000054c: DUP2
0000054d: SWAP1
0000054e: SUB
0000054f: PUSH1 0x20
00000551: ADD
00000552: SWAP1
00000553: LOG1
00000554: POP
00000555: JUMP
00000556: JUMPDEST
00000557: PUSH2 0x055e
0000055a: PUSH2 0x1162
0000055d: JUMP
0000055e: JUMPDEST
0000055f: PUSH1 0x04
00000561: SLOAD
00000562: PUSH1 0xff
00000564: AND
00000565: ISZERO
00000566: ISZERO
00000567: DUP2
00000568: ISZERO
00000569: ISZERO
0000056a: EQ
0000056b: ISZERO
0000056c: PUSH2 0x0574
0000056f: JUMPI
00000570: PUSH2 0x05cd
00000573: JUMP
00000574: JUMPDEST
00000575: PUSH1 0x04
00000577: DUP1
00000578: SLOAD
00000579: PUSH1 0xff
0000057b: NOT
0000057c: AND
0000057d: DUP3
0000057e: ISZERO
0000057f: ISZERO
00000580: OR
00000581: SWAP1
00000582: DUP2
00000583: SWAP1
00000584: SSTORE
00000585: PUSH1 0xff
00000587: AND
00000588: ISZERO
00000589: PUSH2 0x0591
0000058c: JUMPI
0000058d: TIMESTAMP
0000058e: PUSH1 0x03
00000590: SSTORE
00000591: JUMPDEST
00000592: PUSH1 0x04
00000594: SLOAD
00000595: PUSH1 0x40
00000597: DUP1
00000598: MLOAD
00000599: PUSH1 0xff
0000059b: SWAP1
0000059c: SWAP3
0000059d: AND
0000059e: ISZERO
0000059f: ISZERO
000005a0: DUP3
000005a1: MSTORE
000005a2: MLOAD
000005a3: PUSH32 0x8fb6c181ee25a520cf3dd6565006ef91229fcfe5a989566c2a3b8c115570cec5
000005c4: SWAP2
000005c5: DUP2
000005c6: SWAP1
000005c7: SUB
000005c8: PUSH1 0x20
000005ca: ADD
000005cb: SWAP1
000005cc: LOG1
000005cd: JUMPDEST
000005ce: POP
000005cf: JUMP
000005d0: JUMPDEST
000005d1: PUSH1 0x0d
000005d3: SLOAD
000005d4: JUMPDEST
000005d5: SWAP1
000005d6: JUMP
000005d7: JUMPDEST
000005d8: PUSH1 0x00
000005da: PUSH2 0x05f0
000005dd: PUSH1 0x08
000005df: SLOAD
000005e0: PUSH1 0x07
000005e2: SLOAD
000005e3: PUSH2 0x106d
000005e6: SWAP1
000005e7: SWAP2
000005e8: SWAP1
000005e9: PUSH4 0xffffffff
000005ee: AND
000005ef: JUMP
000005f0: JUMPDEST
000005f1: SWAP1
000005f2: POP
000005f3: SWAP1
000005f4: JUMP
000005f5: JUMPDEST
000005f6: PUSH1 0x02
000005f8: PUSH1 0x00
000005fa: SLOAD
000005fb: EQ
000005fc: ISZERO
000005fd: PUSH2 0x064d
00000600: JUMPI
00000601: PUSH1 0x40
00000603: DUP1
00000604: MLOAD
00000605: PUSH3 0x461bcd
00000609: PUSH1 0xe5
0000060b: SHL
0000060c: DUP2
0000060d: MSTORE
0000060e: PUSH1 0x20
00000610: PUSH1 0x04
00000612: DUP3
00000613: ADD
00000614: MSTORE
00000615: PUSH1 0x1f
00000617: PUSH1 0x24
00000619: DUP3
0000061a: ADD
0000061b: MSTORE
0000061c: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
0000063d: PUSH1 0x44
0000063f: DUP3
00000640: ADD
00000641: MSTORE
00000642: SWAP1
00000643: MLOAD
00000644: SWAP1
00000645: DUP2
00000646: SWAP1
00000647: SUB
00000648: PUSH1 0x64
0000064a: ADD
0000064b: SWAP1
0000064c: REVERT
0000064d: JUMPDEST
0000064e: PUSH1 0x02
00000650: PUSH1 0x00
00000652: SSTORE
00000653: CALLER
00000654: PUSH2 0x065b
00000657: PUSH2 0x0f8e
0000065a: JUMP
0000065b: JUMPDEST
0000065c: PUSH1 0x0a
0000065e: SSTORE
0000065f: PUSH2 0x0666
00000662: PUSH2 0x0c12
00000665: JUMP
00000666: JUMPDEST
00000667: PUSH1 0x09
00000669: SSTORE
0000066a: PUSH1 0x01
0000066c: PUSH1 0x01
0000066e: PUSH1 0xa0
00000670: SHL
00000671: SUB
00000672: DUP2
00000673: AND
00000674: ISZERO
00000675: PUSH2 0x06ad
00000678: JUMPI
00000679: PUSH2 0x0681
0000067c: DUP2
0000067d: PUSH2 0x0452
00000680: JUMP
00000681: JUMPDEST
00000682: PUSH1 0x01
00000684: PUSH1 0x01
00000686: PUSH1 0xa0
00000688: SHL
00000689: SUB
0000068a: DUP3
0000068b: AND
0000068c: PUSH1 0x00
0000068e: SWAP1
0000068f: DUP2
00000690: MSTORE
00000691: PUSH1 0x0c
00000693: PUSH1 0x20
00000695: SWAP1
00000696: DUP2
00000697: MSTORE
00000698: PUSH1 0x40
0000069a: DUP1
0000069b: DUP4
0000069c: KECCAK256
0000069d: SWAP4
0000069e: SWAP1
0000069f: SWAP4
000006a0: SSTORE
000006a1: PUSH1 0x0a
000006a3: SLOAD
000006a4: PUSH1 0x0b
000006a6: SWAP1
000006a7: SWAP2
000006a8: MSTORE
000006a9: SWAP2
000006aa: SWAP1
000006ab: KECCAK256
000006ac: SSTORE
000006ad: JUMPDEST
000006ae: PUSH1 0x00
000006b0: DUP3
000006b1: GT
000006b2: PUSH2 0x06f6
000006b5: JUMPI
000006b6: PUSH1 0x40
000006b8: DUP1
000006b9: MLOAD
000006ba: PUSH3 0x461bcd
000006be: PUSH1 0xe5
000006c0: SHL
000006c1: DUP2
000006c2: MSTORE
000006c3: PUSH1 0x20
000006c5: PUSH1 0x04
000006c7: DUP3
000006c8: ADD
000006c9: MSTORE
000006ca: PUSH1 0x11
000006cc: PUSH1 0x24
000006ce: DUP3
000006cf: ADD
000006d0: MSTORE
000006d1: PUSH17 0x043616e6e6f74207769746864726177203
000006e3: PUSH1 0x7c
000006e5: SHL
000006e6: PUSH1 0x44
000006e8: DUP3
000006e9: ADD
000006ea: MSTORE
000006eb: SWAP1
000006ec: MLOAD
000006ed: SWAP1
000006ee: DUP2
000006ef: SWAP1
000006f0: SUB
000006f1: PUSH1 0x64
000006f3: ADD
000006f4: SWAP1
000006f5: REVERT
000006f6: JUMPDEST
000006f7: PUSH1 0x0d
000006f9: SLOAD
000006fa: PUSH2 0x0709
000006fd: SWAP1
000006fe: DUP4
000006ff: PUSH4 0xffffffff
00000704: PUSH2 0x102b
00000707: AND
00000708: JUMP
00000709: JUMPDEST
0000070a: PUSH1 0x0d
0000070c: SSTORE
0000070d: CALLER
0000070e: PUSH1 0x00
00000710: SWAP1
00000711: DUP2
00000712: MSTORE
00000713: PUSH1 0x0e
00000715: PUSH1 0x20
00000717: MSTORE
00000718: PUSH1 0x40
0000071a: SWAP1
0000071b: KECCAK256
0000071c: SLOAD
0000071d: PUSH2 0x072c
00000720: SWAP1
00000721: DUP4
00000722: PUSH4 0xffffffff
00000727: PUSH2 0x102b
0000072a: AND
0000072b: JUMP
0000072c: JUMPDEST
0000072d: CALLER
0000072e: PUSH1 0x00
00000730: DUP2
00000731: DUP2
00000732: MSTORE
00000733: PUSH1 0x0e
00000735: PUSH1 0x20
00000737: MSTORE
00000738: PUSH1 0x40
0000073a: SWAP1
0000073b: KECCAK256
0000073c: SWAP2
0000073d: SWAP1
0000073e: SWAP2
0000073f: SSTORE
00000740: PUSH1 0x05
00000742: SLOAD
00000743: PUSH2 0x0758
00000746: SWAP2
00000747: PUSH1 0x01
00000749: PUSH1 0x01
0000074b: PUSH1 0xa0
0000074d: SHL
0000074e: SUB
0000074f: SWAP1
00000750: SWAP2
00000751: AND
00000752: SWAP1
00000753: DUP5
00000754: PUSH2 0x11ab
00000757: JUMP
00000758: JUMPDEST
00000759: PUSH1 0x40
0000075b: DUP1
0000075c: MLOAD
0000075d: DUP4
0000075e: DUP2
0000075f: MSTORE
00000760: SWAP1
00000761: MLOAD
00000762: CALLER
00000763: SWAP2
00000764: PUSH32 0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5
00000785: SWAP2
00000786: SWAP1
00000787: DUP2
00000788: SWAP1
00000789: SUB
0000078a: PUSH1 0x20
0000078c: ADD
0000078d: SWAP1
0000078e: LOG2
0000078f: POP
00000790: POP
00000791: PUSH1 0x01
00000793: PUSH1 0x00
00000795: SSTORE
00000796: JUMP
00000797: JUMPDEST
00000798: PUSH1 0x08
0000079a: SLOAD
0000079b: DUP2
0000079c: JUMP
0000079d: JUMPDEST
0000079e: PUSH2 0x07a5
000007a1: PUSH2 0x1162
000007a4: JUMP
000007a5: JUMPDEST
000007a6: PUSH1 0x00
000007a8: PUSH2 0x07af
000007ab: PUSH2 0x0f8e
000007ae: JUMP
000007af: JUMPDEST
000007b0: PUSH1 0x0a
000007b2: SSTORE
000007b3: PUSH2 0x07ba
000007b6: PUSH2 0x0c12
000007b9: JUMP
000007ba: JUMPDEST
000007bb: PUSH1 0x09
000007bd: SSTORE
000007be: PUSH1 0x01
000007c0: PUSH1 0x01
000007c2: PUSH1 0xa0
000007c4: SHL
000007c5: SUB
000007c6: DUP2
000007c7: AND
000007c8: ISZERO
000007c9: PUSH2 0x0801
000007cc: JUMPI
000007cd: PUSH2 0x07d5
000007d0: DUP2
000007d1: PUSH2 0x0452
000007d4: JUMP
000007d5: JUMPDEST
000007d6: PUSH1 0x01
000007d8: PUSH1 0x01
000007da: PUSH1 0xa0
000007dc: SHL
000007dd: SUB
000007de: DUP3
000007df: AND
000007e0: PUSH1 0x00
000007e2: SWAP1
000007e3: DUP2
000007e4: MSTORE
000007e5: PUSH1 0x0c
000007e7: PUSH1 0x20
000007e9: SWAP1
000007ea: DUP2
000007eb: MSTORE
000007ec: PUSH1 0x40
000007ee: DUP1
000007ef: DUP4
000007f0: KECCAK256
000007f1: SWAP4
000007f2: SWAP1
000007f3: SWAP4
000007f4: SSTORE
000007f5: PUSH1 0x0a
000007f7: SLOAD
000007f8: PUSH1 0x0b
000007fa: SWAP1
000007fb: SWAP2
000007fc: MSTORE
000007fd: SWAP2
000007fe: SWAP1
000007ff: KECCAK256
00000800: SSTORE
00000801: JUMPDEST
00000802: PUSH1 0x06
00000804: SLOAD
00000805: TIMESTAMP
00000806: LT
00000807: PUSH2 0x0826
0000080a: JUMPI
0000080b: PUSH1 0x08
0000080d: SLOAD
0000080e: PUSH2 0x081e
00000811: SWAP1
00000812: DUP4
00000813: SWAP1
00000814: PUSH4 0xffffffff
00000819: PUSH2 0x10c6
0000081c: AND
0000081d: JUMP
0000081e: JUMPDEST
0000081f: PUSH1 0x07
00000821: SSTORE
00000822: PUSH2 0x0875
00000825: JUMP
00000826: JUMPDEST
00000827: PUSH1 0x06
00000829: SLOAD
0000082a: PUSH1 0x00
0000082c: SWAP1
0000082d: PUSH2 0x083c
00000830: SWAP1
00000831: TIMESTAMP
00000832: PUSH4 0xffffffff
00000837: PUSH2 0x102b
0000083a: AND
0000083b: JUMP
0000083c: JUMPDEST
0000083d: SWAP1
0000083e: POP
0000083f: PUSH1 0x00
00000841: PUSH2 0x0855
00000844: PUSH1 0x07
00000846: SLOAD
00000847: DUP4
00000848: PUSH2 0x106d
0000084b: SWAP1
0000084c: SWAP2
0000084d: SWAP1
0000084e: PUSH4 0xffffffff
00000853: AND
00000854: JUMP
00000855: JUMPDEST
00000856: PUSH1 0x08
00000858: SLOAD
00000859: SWAP1
0000085a: SWAP2
0000085b: POP
0000085c: PUSH2 0x086f
0000085f: SWAP1
00000860: PUSH2 0x04ca
00000863: DUP7
00000864: DUP5
00000865: PUSH4 0xffffffff
0000086a: PUSH2 0x1108
0000086d: AND
0000086e: JUMP
0000086f: JUMPDEST
00000870: PUSH1 0x07
00000872: SSTORE
00000873: POP
00000874: POP
00000875: JUMPDEST
00000876: PUSH1 0x04
00000878: DUP1
00000879: SLOAD
0000087a: PUSH1 0x40
0000087c: DUP1
0000087d: MLOAD
0000087e: PUSH4 0x70a08231
00000883: PUSH1 0xe0
00000885: SHL
00000886: DUP2
00000887: MSTORE
00000888: ADDRESS
00000889: SWAP4
0000088a: DUP2
0000088b: ADD
0000088c: SWAP4
0000088d: SWAP1
0000088e: SWAP4
0000088f: MSTORE
00000890: MLOAD
00000891: PUSH1 0x00
00000893: SWAP3
00000894: PUSH2 0x0100
00000897: SWAP1
00000898: SWAP3
00000899: DIV
0000089a: PUSH1 0x01
0000089c: PUSH1 0x01
0000089e: PUSH1 0xa0
000008a0: SHL
000008a1: SUB
000008a2: AND
000008a3: SWAP2
000008a4: PUSH4 0x70a08231
000008a9: SWAP2
000008aa: PUSH1 0x24
000008ac: DUP1
000008ad: DUP4
000008ae: ADD
000008af: SWAP3
000008b0: PUSH1 0x20
000008b2: SWAP3
000008b3: SWAP2
000008b4: SWAP1
000008b5: DUP3
000008b6: SWAP1
000008b7: SUB
000008b8: ADD
000008b9: DUP2
000008ba: DUP7
000008bb: DUP1
000008bc: EXTCODESIZE
000008bd: ISZERO
000008be: DUP1
000008bf: ISZERO
000008c0: PUSH2 0x08c8
000008c3: JUMPI
000008c4: PUSH1 0x00
000008c6: DUP1
000008c7: REVERT
000008c8: JUMPDEST
000008c9: POP
000008ca: GAS
000008cb: STATICCALL
000008cc: ISZERO
000008cd: DUP1
000008ce: ISZERO
000008cf: PUSH2 0x08dc
000008d2: JUMPI
000008d3: RETURNDATASIZE
000008d4: PUSH1 0x00
000008d6: DUP1
000008d7: RETURNDATACOPY
000008d8: RETURNDATASIZE
000008d9: PUSH1 0x00
000008db: REVERT
000008dc: JUMPDEST
000008dd: POP
000008de: POP
000008df: POP
000008e0: POP
000008e1: PUSH1 0x40
000008e3: MLOAD
000008e4: RETURNDATASIZE
000008e5: PUSH1 0x20
000008e7: DUP2
000008e8: LT
000008e9: ISZERO
000008ea: PUSH2 0x08f2
000008ed: JUMPI
000008ee: PUSH1 0x00
000008f0: DUP1
000008f1: REVERT
000008f2: JUMPDEST
000008f3: POP
000008f4: MLOAD
000008f5: PUSH1 0x08
000008f7: SLOAD
000008f8: SWAP1
000008f9: SWAP2
000008fa: POP
000008fb: PUSH2 0x090b
000008fe: SWAP1
000008ff: DUP3
00000900: SWAP1
00000901: PUSH4 0xffffffff
00000906: PUSH2 0x10c6
00000909: AND
0000090a: JUMP
0000090b: JUMPDEST
0000090c: PUSH1 0x07
0000090e: SLOAD
0000090f: GT
00000910: ISZERO
00000911: PUSH2 0x0961
00000914: JUMPI
00000915: PUSH1 0x40
00000917: DUP1
00000918: MLOAD
00000919: PUSH3 0x461bcd
0000091d: PUSH1 0xe5
0000091f: SHL
00000920: DUP2
00000921: MSTORE
00000922: PUSH1 0x20
00000924: PUSH1 0x04
00000926: DUP3
00000927: ADD
00000928: MSTORE
00000929: PUSH1 0x18
0000092b: PUSH1 0x24
0000092d: DUP3
0000092e: ADD
0000092f: MSTORE
00000930: PUSH32 0x50726f76696465642072657761726420746f6f20686967680000000000000000
00000951: PUSH1 0x44
00000953: DUP3
00000954: ADD
00000955: MSTORE
00000956: SWAP1
00000957: MLOAD
00000958: SWAP1
00000959: DUP2
0000095a: SWAP1
0000095b: SUB
0000095c: PUSH1 0x64
0000095e: ADD
0000095f: SWAP1
00000960: REVERT
00000961: JUMPDEST
00000962: TIMESTAMP
00000963: PUSH1 0x09
00000965: DUP2
00000966: SWAP1
00000967: SSTORE
00000968: PUSH1 0x08
0000096a: SLOAD
0000096b: PUSH2 0x097a
0000096e: SWAP2
0000096f: SWAP1
00000970: PUSH4 0xffffffff
00000975: PUSH2 0x1108
00000978: AND
00000979: JUMP
0000097a: JUMPDEST
0000097b: PUSH1 0x06
0000097d: SSTORE
0000097e: PUSH1 0x40
00000980: DUP1
00000981: MLOAD
00000982: DUP5
00000983: DUP2
00000984: MSTORE
00000985: SWAP1
00000986: MLOAD
00000987: PUSH32 0xde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d
000009a8: SWAP2
000009a9: DUP2
000009aa: SWAP1
000009ab: SUB
000009ac: PUSH1 0x20
000009ae: ADD
000009af: SWAP1
000009b0: LOG1
000009b1: POP
000009b2: POP
000009b3: POP
000009b4: JUMP
000009b5: JUMPDEST
000009b6: PUSH1 0x02
000009b8: PUSH1 0x00
000009ba: SLOAD
000009bb: EQ
000009bc: ISZERO
000009bd: PUSH2 0x0a0d
000009c0: JUMPI
000009c1: PUSH1 0x40
000009c3: DUP1
000009c4: MLOAD
000009c5: PUSH3 0x461bcd
000009c9: PUSH1 0xe5
000009cb: SHL
000009cc: DUP2
000009cd: MSTORE
000009ce: PUSH1 0x20
000009d0: PUSH1 0x04
000009d2: DUP3
000009d3: ADD
000009d4: MSTORE
000009d5: PUSH1 0x1f
000009d7: PUSH1 0x24
000009d9: DUP3
000009da: ADD
000009db: MSTORE
000009dc: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
000009fd: PUSH1 0x44
000009ff: DUP3
00000a00: ADD
00000a01: MSTORE
00000a02: SWAP1
00000a03: MLOAD
00000a04: SWAP1
00000a05: DUP2
00000a06: SWAP1
00000a07: SUB
00000a08: PUSH1 0x64
00000a0a: ADD
00000a0b: SWAP1
00000a0c: REVERT
00000a0d: JUMPDEST
00000a0e: PUSH1 0x02
00000a10: PUSH1 0x00
00000a12: SSTORE
00000a13: CALLER
00000a14: PUSH2 0x0a1b
00000a17: PUSH2 0x0f8e
00000a1a: JUMP
00000a1b: JUMPDEST
00000a1c: PUSH1 0x0a
00000a1e: SSTORE
00000a1f: PUSH2 0x0a26
00000a22: PUSH2 0x0c12
00000a25: JUMP
00000a26: JUMPDEST
00000a27: PUSH1 0x09
00000a29: SSTORE
00000a2a: PUSH1 0x01
00000a2c: PUSH1 0x01
00000a2e: PUSH1 0xa0
00000a30: SHL
00000a31: SUB
00000a32: DUP2
00000a33: AND
00000a34: ISZERO
00000a35: PUSH2 0x0a6d
00000a38: JUMPI
00000a39: PUSH2 0x0a41
00000a3c: DUP2
00000a3d: PUSH2 0x0452
00000a40: JUMP
00000a41: JUMPDEST
00000a42: PUSH1 0x01
00000a44: PUSH1 0x01
00000a46: PUSH1 0xa0
00000a48: SHL
00000a49: SUB
00000a4a: DUP3
00000a4b: AND
00000a4c: PUSH1 0x00
00000a4e: SWAP1
00000a4f: DUP2
00000a50: MSTORE
00000a51: PUSH1 0x0c
00000a53: PUSH1 0x20
00000a55: SWAP1
00000a56: DUP2
00000a57: MSTORE
00000a58: PUSH1 0x40
00000a5a: DUP1
00000a5b: DUP4
00000a5c: KECCAK256
00000a5d: SWAP4
00000a5e: SWAP1
00000a5f: SWAP4
00000a60: SSTORE
00000a61: PUSH1 0x0a
00000a63: SLOAD
00000a64: PUSH1 0x0b
00000a66: SWAP1
00000a67: SWAP2
00000a68: MSTORE
00000a69: SWAP2
00000a6a: SWAP1
00000a6b: KECCAK256
00000a6c: SSTORE
00000a6d: JUMPDEST
00000a6e: CALLER
00000a6f: PUSH1 0x00
00000a71: SWAP1
00000a72: DUP2
00000a73: MSTORE
00000a74: PUSH1 0x0c
00000a76: PUSH1 0x20
00000a78: MSTORE
00000a79: PUSH1 0x40
00000a7b: SWAP1
00000a7c: KECCAK256
00000a7d: SLOAD
00000a7e: DUP1
00000a7f: ISZERO
00000a80: PUSH2 0x0aed
00000a83: JUMPI
00000a84: CALLER
00000a85: PUSH1 0x00
00000a87: DUP2
00000a88: DUP2
00000a89: MSTORE
00000a8a: PUSH1 0x0c
00000a8c: PUSH1 0x20
00000a8e: MSTORE
00000a8f: PUSH1 0x40
00000a91: DUP2
00000a92: KECCAK256
00000a93: SSTORE
00000a94: PUSH1 0x04
00000a96: SLOAD
00000a97: PUSH2 0x0ab6
00000a9a: SWAP2
00000a9b: PUSH2 0x0100
00000a9e: SWAP1
00000a9f: SWAP2
00000aa0: DIV
00000aa1: PUSH1 0x01
00000aa3: PUSH1 0x01
00000aa5: PUSH1 0xa0
00000aa7: SHL
00000aa8: SUB
00000aa9: AND
00000aaa: SWAP1
00000aab: DUP4
00000aac: PUSH4 0xffffffff
00000ab1: PUSH2 0x11ab
00000ab4: AND
00000ab5: JUMP
00000ab6: JUMPDEST
00000ab7: PUSH1 0x40
00000ab9: DUP1
00000aba: MLOAD
00000abb: DUP3
00000abc: DUP2
00000abd: MSTORE
00000abe: SWAP1
00000abf: MLOAD
00000ac0: CALLER
00000ac1: SWAP2
00000ac2: PUSH32 0xe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486
00000ae3: SWAP2
00000ae4: SWAP1
00000ae5: DUP2
00000ae6: SWAP1
00000ae7: SUB
00000ae8: PUSH1 0x20
00000aea: ADD
00000aeb: SWAP1
00000aec: LOG2
00000aed: JUMPDEST
00000aee: POP
00000aef: POP
00000af0: PUSH1 0x01
00000af2: PUSH1 0x00
00000af4: SSTORE
00000af5: JUMP
00000af6: JUMPDEST
00000af7: PUSH1 0x02
00000af9: SLOAD
00000afa: PUSH1 0x01
00000afc: PUSH1 0x01
00000afe: PUSH1 0xa0
00000b00: SHL
00000b01: SUB
00000b02: AND
00000b03: DUP2
00000b04: JUMP
00000b05: JUMPDEST
00000b06: PUSH1 0x04
00000b08: SLOAD
00000b09: PUSH1 0xff
00000b0b: AND
00000b0c: DUP2
00000b0d: JUMP
00000b0e: JUMPDEST
00000b0f: PUSH1 0x01
00000b11: PUSH1 0x01
00000b13: PUSH1 0xa0
00000b15: SHL
00000b16: SUB
00000b17: AND
00000b18: PUSH1 0x00
00000b1a: SWAP1
00000b1b: DUP2
00000b1c: MSTORE
00000b1d: PUSH1 0x0e
00000b1f: PUSH1 0x20
00000b21: MSTORE
00000b22: PUSH1 0x40
00000b24: SWAP1
00000b25: KECCAK256
00000b26: SLOAD
00000b27: SWAP1
00000b28: JUMP
00000b29: JUMPDEST
00000b2a: PUSH1 0x05
00000b2c: SLOAD
00000b2d: PUSH1 0x01
00000b2f: PUSH1 0x01
00000b31: PUSH1 0xa0
00000b33: SHL
00000b34: SUB
00000b35: AND
00000b36: DUP2
00000b37: JUMP
00000b38: JUMPDEST
00000b39: PUSH1 0x02
00000b3b: SLOAD
00000b3c: PUSH1 0x01
00000b3e: PUSH1 0x01
00000b40: PUSH1 0xa0
00000b42: SHL
00000b43: SUB
00000b44: AND
00000b45: CALLER
00000b46: EQ
00000b47: PUSH2 0x0b81
00000b4a: JUMPI
00000b4b: PUSH1 0x40
00000b4d: MLOAD
00000b4e: PUSH3 0x461bcd
00000b52: PUSH1 0xe5
00000b54: SHL
00000b55: DUP2
00000b56: MSTORE
00000b57: PUSH1 0x04
00000b59: ADD
00000b5a: DUP1
00000b5b: DUP1
00000b5c: PUSH1 0x20
00000b5e: ADD
00000b5f: DUP3
00000b60: DUP2
00000b61: SUB
00000b62: DUP3
00000b63: MSTORE
00000b64: PUSH1 0x35
00000b66: DUP2
00000b67: MSTORE
00000b68: PUSH1 0x20
00000b6a: ADD
00000b6b: DUP1
00000b6c: PUSH2 0x15f2
00000b6f: PUSH1 0x35
00000b71: SWAP2
00000b72: CODECOPY
00000b73: PUSH1 0x40
00000b75: ADD
00000b76: SWAP2
00000b77: POP
00000b78: POP
00000b79: PUSH1 0x40
00000b7b: MLOAD
00000b7c: DUP1
00000b7d: SWAP2
00000b7e: SUB
00000b7f: SWAP1
00000b80: REVERT
00000b81: JUMPDEST
00000b82: PUSH1 0x01
00000b84: SLOAD
00000b85: PUSH1 0x02
00000b87: SLOAD
00000b88: PUSH1 0x40
00000b8a: DUP1
00000b8b: MLOAD
00000b8c: PUSH1 0x01
00000b8e: PUSH1 0x01
00000b90: PUSH1 0xa0
00000b92: SHL
00000b93: SUB
00000b94: SWAP4
00000b95: DUP5
00000b96: AND
00000b97: DUP2
00000b98: MSTORE
00000b99: SWAP3
00000b9a: SWAP1
00000b9b: SWAP2
00000b9c: AND
00000b9d: PUSH1 0x20
00000b9f: DUP4
00000ba0: ADD
00000ba1: MSTORE
00000ba2: DUP1
00000ba3: MLOAD
00000ba4: PUSH32 0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c
00000bc5: SWAP3
00000bc6: DUP2
00000bc7: SWAP1
00000bc8: SUB
00000bc9: SWAP1
00000bca: SWAP2
00000bcb: ADD
00000bcc: SWAP1
00000bcd: LOG1
00000bce: PUSH1 0x02
00000bd0: DUP1
00000bd1: SLOAD
00000bd2: PUSH1 0x01
00000bd4: DUP1
00000bd5: SLOAD
00000bd6: PUSH1 0x01
00000bd8: PUSH1 0x01
00000bda: PUSH1 0xa0
00000bdc: SHL
00000bdd: SUB
00000bde: NOT
00000bdf: SWAP1
00000be0: DUP2
00000be1: AND
00000be2: PUSH1 0x01
00000be4: PUSH1 0x01
00000be6: PUSH1 0xa0
00000be8: SHL
00000be9: SUB
00000bea: DUP5
00000beb: AND
00000bec: OR
00000bed: SWAP1
00000bee: SWAP2
00000bef: SSTORE
00000bf0: AND
00000bf1: SWAP1
00000bf2: SSTORE
00000bf3: JUMP
00000bf4: JUMPDEST
00000bf5: PUSH1 0x00
00000bf7: DUP2
00000bf8: DUP4
00000bf9: LT
00000bfa: PUSH2 0x0c03
00000bfd: JUMPI
00000bfe: DUP2
00000bff: PUSH2 0x0c05
00000c02: JUMP
00000c03: JUMPDEST
00000c04: DUP3
00000c05: JUMPDEST
00000c06: SWAP4
00000c07: SWAP3
00000c08: POP
00000c09: POP
00000c0a: POP
00000c0b: JUMP
00000c0c: JUMPDEST
00000c0d: PUSH1 0x07
00000c0f: SLOAD
00000c10: DUP2
00000c11: JUMP
00000c12: JUMPDEST
00000c13: PUSH1 0x00
00000c15: PUSH2 0x05f0
00000c18: TIMESTAMP
00000c19: PUSH1 0x06
00000c1b: SLOAD
00000c1c: PUSH2 0x0bf4
00000c1f: JUMP
00000c20: JUMPDEST
00000c21: PUSH2 0x0c28
00000c24: PUSH2 0x1162
00000c27: JUMP
00000c28: JUMPDEST
00000c29: PUSH1 0x05
00000c2b: SLOAD
00000c2c: PUSH1 0x01
00000c2e: PUSH1 0x01
00000c30: PUSH1 0xa0
00000c32: SHL
00000c33: SUB
00000c34: DUP4
00000c35: DUP2
00000c36: AND
00000c37: SWAP2
00000c38: AND
00000c39: EQ
00000c3a: DUP1
00000c3b: ISZERO
00000c3c: SWAP1
00000c3d: PUSH2 0x0c59
00000c40: JUMPI
00000c41: POP
00000c42: PUSH1 0x04
00000c44: SLOAD
00000c45: PUSH1 0x01
00000c47: PUSH1 0x01
00000c49: PUSH1 0xa0
00000c4b: SHL
00000c4c: SUB
00000c4d: DUP4
00000c4e: DUP2
00000c4f: AND
00000c50: PUSH2 0x0100
00000c53: SWAP1
00000c54: SWAP3
00000c55: DIV
00000c56: AND
00000c57: EQ
00000c58: ISZERO
00000c59: JUMPDEST
00000c5a: PUSH2 0x0c94
00000c5d: JUMPI
00000c5e: PUSH1 0x40
00000c60: MLOAD
00000c61: PUSH3 0x461bcd
00000c65: PUSH1 0xe5
00000c67: SHL
00000c68: DUP2
00000c69: MSTORE
00000c6a: PUSH1 0x04
00000c6c: ADD
00000c6d: DUP1
00000c6e: DUP1
00000c6f: PUSH1 0x20
00000c71: ADD
00000c72: DUP3
00000c73: DUP2
00000c74: SUB
00000c75: DUP3
00000c76: MSTORE
00000c77: PUSH1 0x2d
00000c79: DUP2
00000c7a: MSTORE
00000c7b: PUSH1 0x20
00000c7d: ADD
00000c7e: DUP1
00000c7f: PUSH2 0x16b3
00000c82: PUSH1 0x2d
00000c84: SWAP2
00000c85: CODECOPY
00000c86: PUSH1 0x40
00000c88: ADD
00000c89: SWAP2
00000c8a: POP
00000c8b: POP
00000c8c: PUSH1 0x40
00000c8e: MLOAD
00000c8f: DUP1
00000c90: SWAP2
00000c91: SUB
00000c92: SWAP1
00000c93: REVERT
00000c94: JUMPDEST
00000c95: PUSH1 0x01
00000c97: SLOAD
00000c98: PUSH2 0x0cb4
00000c9b: SWAP1
00000c9c: PUSH1 0x01
00000c9e: PUSH1 0x01
00000ca0: PUSH1 0xa0
00000ca2: SHL
00000ca3: SUB
00000ca4: DUP5
00000ca5: DUP2
00000ca6: AND
00000ca7: SWAP2
00000ca8: AND
00000ca9: DUP4
00000caa: PUSH4 0xffffffff
00000caf: PUSH2 0x11ab
00000cb2: AND
00000cb3: JUMP
00000cb4: JUMPDEST
00000cb5: PUSH1 0x40
00000cb7: DUP1
00000cb8: MLOAD
00000cb9: PUSH1 0x01
00000cbb: PUSH1 0x01
00000cbd: PUSH1 0xa0
00000cbf: SHL
00000cc0: SUB
00000cc1: DUP5
00000cc2: AND
00000cc3: DUP2
00000cc4: MSTORE
00000cc5: PUSH1 0x20
00000cc7: DUP2
00000cc8: ADD
00000cc9: DUP4
00000cca: SWAP1
00000ccb: MSTORE
00000ccc: DUP2
00000ccd: MLOAD
00000cce: PUSH32 0x8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28
00000cef: SWAP3
00000cf0: SWAP2
00000cf1: DUP2
00000cf2: SWAP1
00000cf3: SUB
00000cf4: SWAP1
00000cf5: SWAP2
00000cf6: ADD
00000cf7: SWAP1
00000cf8: LOG1
00000cf9: POP
00000cfa: POP
00000cfb: JUMP
00000cfc: JUMPDEST
00000cfd: PUSH1 0x0b
00000cff: PUSH1 0x20
00000d01: MSTORE
00000d02: PUSH1 0x00
00000d04: SWAP1
00000d05: DUP2
00000d06: MSTORE
00000d07: PUSH1 0x40
00000d09: SWAP1
00000d0a: KECCAK256
00000d0b: SLOAD
00000d0c: DUP2
00000d0d: JUMP
00000d0e: JUMPDEST
00000d0f: PUSH1 0x01
00000d11: SLOAD
00000d12: PUSH1 0x01
00000d14: PUSH1 0x01
00000d16: PUSH1 0xa0
00000d18: SHL
00000d19: SUB
00000d1a: AND
00000d1b: DUP2
00000d1c: JUMP
00000d1d: JUMPDEST
00000d1e: PUSH1 0x03
00000d20: SLOAD
00000d21: DUP2
00000d22: JUMP
00000d23: JUMPDEST
00000d24: PUSH1 0x02
00000d26: PUSH1 0x00
00000d28: SLOAD
00000d29: EQ
00000d2a: ISZERO
00000d2b: PUSH2 0x0d7b
00000d2e: JUMPI
00000d2f: PUSH1 0x40
00000d31: DUP1
00000d32: MLOAD
00000d33: PUSH3 0x461bcd
00000d37: PUSH1 0xe5
00000d39: SHL
00000d3a: DUP2
00000d3b: MSTORE
00000d3c: PUSH1 0x20
00000d3e: PUSH1 0x04
00000d40: DUP3
00000d41: ADD
00000d42: MSTORE
00000d43: PUSH1 0x1f
00000d45: PUSH1 0x24
00000d47: DUP3
00000d48: ADD
00000d49: MSTORE
00000d4a: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00
00000d6b: PUSH1 0x44
00000d6d: DUP3
00000d6e: ADD
00000d6f: MSTORE
00000d70: SWAP1
00000d71: MLOAD
00000d72: SWAP1
00000d73: DUP2
00000d74: SWAP1
00000d75: SUB
00000d76: PUSH1 0x64
00000d78: ADD
00000d79: SWAP1
00000d7a: REVERT
00000d7b: JUMPDEST
00000d7c: PUSH1 0x02
00000d7e: PUSH1 0x00
00000d80: SSTORE
00000d81: PUSH1 0x04
00000d83: SLOAD
00000d84: PUSH1 0xff
00000d86: AND
00000d87: ISZERO
00000d88: PUSH2 0x0dc2
00000d8b: JUMPI
00000d8c: PUSH1 0x40
00000d8e: MLOAD
00000d8f: PUSH3 0x461bcd
00000d93: PUSH1 0xe5
00000d95: SHL
00000d96: DUP2
00000d97: MSTORE
00000d98: PUSH1 0x04
00000d9a: ADD
00000d9b: DUP1
00000d9c: DUP1
00000d9d: PUSH1 0x20
00000d9f: ADD
00000da0: DUP3
00000da1: DUP2
00000da2: SUB
00000da3: DUP3
00000da4: MSTORE
00000da5: PUSH1 0x3c
00000da7: DUP2
00000da8: MSTORE
00000da9: PUSH1 0x20
00000dab: ADD
00000dac: DUP1
00000dad: PUSH2 0x1677
00000db0: PUSH1 0x3c
00000db2: SWAP2
00000db3: CODECOPY
00000db4: PUSH1 0x40
00000db6: ADD
00000db7: SWAP2
00000db8: POP
00000db9: POP
00000dba: PUSH1 0x40
00000dbc: MLOAD
00000dbd: DUP1
00000dbe: SWAP2
00000dbf: SUB
00000dc0: SWAP1
00000dc1: REVERT
00000dc2: JUMPDEST
00000dc3: CALLER
00000dc4: PUSH2 0x0dcb
00000dc7: PUSH2 0x0f8e
00000dca: JUMP
00000dcb: JUMPDEST
00000dcc: PUSH1 0x0a
00000dce: SSTORE
00000dcf: PUSH2 0x0dd6
00000dd2: PUSH2 0x0c12
00000dd5: JUMP
00000dd6: JUMPDEST
00000dd7: PUSH1 0x09
00000dd9: SSTORE
00000dda: PUSH1 0x01
00000ddc: PUSH1 0x01
00000dde: PUSH1 0xa0
00000de0: SHL
00000de1: SUB
00000de2: DUP2
00000de3: AND
00000de4: ISZERO
00000de5: PUSH2 0x0e1d
00000de8: JUMPI
00000de9: PUSH2 0x0df1
00000dec: DUP2
00000ded: PUSH2 0x0452
00000df0: JUMP
00000df1: JUMPDEST
00000df2: PUSH1 0x01
00000df4: PUSH1 0x01
00000df6: PUSH1 0xa0
00000df8: SHL
00000df9: SUB
00000dfa: DUP3
00000dfb: AND
00000dfc: PUSH1 0x00
00000dfe: SWAP1
00000dff: DUP2
00000e00: MSTORE
00000e01: PUSH1 0x0c
00000e03: PUSH1 0x20
00000e05: SWAP1
00000e06: DUP2
00000e07: MSTORE
00000e08: PUSH1 0x40
00000e0a: DUP1
00000e0b: DUP4
00000e0c: KECCAK256
00000e0d: SWAP4
00000e0e: SWAP1
00000e0f: SWAP4
00000e10: SSTORE
00000e11: PUSH1 0x0a
00000e13: SLOAD
00000e14: PUSH1 0x0b
00000e16: SWAP1
00000e17: SWAP2
00000e18: MSTORE
00000e19: SWAP2
00000e1a: SWAP1
00000e1b: KECCAK256
00000e1c: SSTORE
00000e1d: JUMPDEST
00000e1e: PUSH1 0x00
00000e20: DUP3
00000e21: GT
00000e22: PUSH2 0x0e63
00000e25: JUMPI
00000e26: PUSH1 0x40
00000e28: DUP1
00000e29: MLOAD
00000e2a: PUSH3 0x461bcd
00000e2e: PUSH1 0xe5
00000e30: SHL
00000e31: DUP2
00000e32: MSTORE
00000e33: PUSH1 0x20
00000e35: PUSH1 0x04
00000e37: DUP3
00000e38: ADD
00000e39: MSTORE
00000e3a: PUSH1 0x0e
00000e3c: PUSH1 0x24
00000e3e: DUP3
00000e3f: ADD
00000e40: MSTORE
00000e41: PUSH14 0x043616e6e6f74207374616b65203
00000e50: PUSH1 0x94
00000e52: SHL
00000e53: PUSH1 0x44
00000e55: DUP3
00000e56: ADD
00000e57: MSTORE
00000e58: SWAP1
00000e59: MLOAD
00000e5a: SWAP1
00000e5b: DUP2
00000e5c: SWAP1
00000e5d: SUB
00000e5e: PUSH1 0x64
00000e60: ADD
00000e61: SWAP1
00000e62: REVERT
00000e63: JUMPDEST
00000e64: PUSH1 0x0d
00000e66: SLOAD
00000e67: PUSH2 0x0e76
00000e6a: SWAP1
00000e6b: DUP4
00000e6c: PUSH4 0xffffffff
00000e71: PUSH2 0x1108
00000e74: AND
00000e75: JUMP
00000e76: JUMPDEST
00000e77: PUSH1 0x0d
00000e79: SSTORE
00000e7a: CALLER
00000e7b: PUSH1 0x00
00000e7d: SWAP1
00000e7e: DUP2
00000e7f: MSTORE
00000e80: PUSH1 0x0e
00000e82: PUSH1 0x20
00000e84: MSTORE
00000e85: PUSH1 0x40
00000e87: SWAP1
00000e88: KECCAK256
00000e89: SLOAD
00000e8a: PUSH2 0x0e99
00000e8d: SWAP1
00000e8e: DUP4
00000e8f: PUSH4 0xffffffff
00000e94: PUSH2 0x1108
00000e97: AND
00000e98: JUMP
00000e99: JUMPDEST
00000e9a: CALLER
00000e9b: PUSH1 0x00
00000e9d: DUP2
00000e9e: DUP2
00000e9f: MSTORE
00000ea0: PUSH1 0x0e
00000ea2: PUSH1 0x20
00000ea4: MSTORE
00000ea5: PUSH1 0x40
00000ea7: SWAP1
00000ea8: KECCAK256
00000ea9: SWAP2
00000eaa: SWAP1
00000eab: SWAP2
00000eac: SSTORE
00000ead: PUSH1 0x05
00000eaf: SLOAD
00000eb0: PUSH2 0x0ec6
00000eb3: SWAP2
00000eb4: PUSH1 0x01
00000eb6: PUSH1 0x01
00000eb8: PUSH1 0xa0
00000eba: SHL
00000ebb: SUB
00000ebc: SWAP1
00000ebd: SWAP2
00000ebe: AND
00000ebf: SWAP1
00000ec0: ADDRESS
00000ec1: DUP6
00000ec2: PUSH2 0x1202
00000ec5: JUMP
00000ec6: JUMPDEST
00000ec7: PUSH1 0x40
00000ec9: DUP1
00000eca: MLOAD
00000ecb: DUP4
00000ecc: DUP2
00000ecd: MSTORE
00000ece: SWAP1
00000ecf: MLOAD
00000ed0: CALLER
00000ed1: SWAP2
00000ed2: PUSH32 0x9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d
00000ef3: SWAP2
00000ef4: SWAP1
00000ef5: DUP2
00000ef6: SWAP1
00000ef7: SUB
00000ef8: PUSH1 0x20
00000efa: ADD
00000efb: SWAP1
00000efc: LOG2
00000efd: POP
00000efe: POP
00000eff: PUSH1 0x01
00000f01: PUSH1 0x00
00000f03: SSTORE
00000f04: JUMP
00000f05: JUMPDEST
00000f06: PUSH1 0x09
00000f08: SLOAD
00000f09: DUP2
00000f0a: JUMP
00000f0b: JUMPDEST
00000f0c: PUSH2 0x0f13
00000f0f: PUSH2 0x1162
00000f12: JUMP
00000f13: JUMPDEST
00000f14: PUSH1 0x06
00000f16: SLOAD
00000f17: TIMESTAMP
00000f18: GT
00000f19: PUSH2 0x0f53
00000f1c: JUMPI
00000f1d: PUSH1 0x40
00000f1f: MLOAD
00000f20: PUSH3 0x461bcd
00000f24: PUSH1 0xe5
00000f26: SHL
00000f27: DUP2
00000f28: MSTORE
00000f29: PUSH1 0x04
00000f2b: ADD
00000f2c: DUP1
00000f2d: DUP1
00000f2e: PUSH1 0x20
00000f30: ADD
00000f31: DUP3
00000f32: DUP2
00000f33: SUB
00000f34: DUP3
00000f35: MSTORE
00000f36: PUSH1 0x58
00000f38: DUP2
00000f39: MSTORE
00000f3a: PUSH1 0x20
00000f3c: ADD
00000f3d: DUP1
00000f3e: PUSH2 0x159a
00000f41: PUSH1 0x58
00000f43: SWAP2
00000f44: CODECOPY
00000f45: PUSH1 0x60
00000f47: ADD
00000f48: SWAP2
00000f49: POP
00000f4a: POP
00000f4b: PUSH1 0x40
00000f4d: MLOAD
00000f4e: DUP1
00000f4f: SWAP2
00000f50: SUB
00000f51: SWAP1
00000f52: REVERT
00000f53: JUMPDEST
00000f54: PUSH1 0x08
00000f56: DUP2
00000f57: SWAP1
00000f58: SSTORE
00000f59: PUSH1 0x40
00000f5b: DUP1
00000f5c: MLOAD
00000f5d: DUP3
00000f5e: DUP2
00000f5f: MSTORE
00000f60: SWAP1
00000f61: MLOAD
00000f62: PUSH32 0xfb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d3
00000f83: SWAP2
00000f84: DUP2
00000f85: SWAP1
00000f86: SUB
00000f87: PUSH1 0x20
00000f89: ADD
00000f8a: SWAP1
00000f8b: LOG1
00000f8c: POP
00000f8d: JUMP
00000f8e: JUMPDEST
00000f8f: PUSH1 0x00
00000f91: PUSH1 0x0d
00000f93: SLOAD
00000f94: PUSH1 0x00
00000f96: EQ
00000f97: ISZERO
00000f98: PUSH2 0x0fa4
00000f9b: JUMPI
00000f9c: POP
00000f9d: PUSH1 0x0a
00000f9f: SLOAD
00000fa0: PUSH2 0x05d4
00000fa3: JUMP
00000fa4: JUMPDEST
00000fa5: PUSH2 0x05f0
00000fa8: PUSH2 0x0fd9
00000fab: PUSH1 0x0d
00000fad: SLOAD
00000fae: PUSH2 0x04ca
00000fb1: PUSH8 0x0de0b6b3a7640000
00000fba: PUSH2 0x0fcd
00000fbd: PUSH1 0x07
00000fbf: SLOAD
00000fc0: PUSH2 0x0fcd
00000fc3: PUSH1 0x09
00000fc5: SLOAD
00000fc6: PUSH2 0x0499
00000fc9: PUSH2 0x0c12
00000fcc: JUMP
00000fcd: JUMPDEST
00000fce: SWAP1
00000fcf: PUSH4 0xffffffff
00000fd4: PUSH2 0x106d
00000fd7: AND
00000fd8: JUMP
00000fd9: JUMPDEST
00000fda: PUSH1 0x0a
00000fdc: SLOAD
00000fdd: SWAP1
00000fde: PUSH4 0xffffffff
00000fe3: PUSH2 0x1108
00000fe6: AND
00000fe7: JUMP
00000fe8: JUMPDEST
00000fe9: PUSH1 0x04
00000feb: SLOAD
00000fec: PUSH2 0x0100
00000fef: SWAP1
00000ff0: DIV
00000ff1: PUSH1 0x01
00000ff3: PUSH1 0x01
00000ff5: PUSH1 0xa0
00000ff7: SHL
00000ff8: SUB
00000ff9: AND
00000ffa: DUP2
00000ffb: JUMP
00000ffc: JUMPDEST
00000ffd: PUSH1 0x0a
00000fff: SLOAD
00001000: DUP2
00001001: JUMP
00001002: JUMPDEST
00001003: CALLER
00001004: PUSH1 0x00
00001006: SWAP1
00001007: DUP2
00001008: MSTORE
00001009: PUSH1 0x0e
0000100b: PUSH1 0x20
0000100d: MSTORE
0000100e: PUSH1 0x40
00001010: SWAP1
00001011: KECCAK256
00001012: SLOAD
00001013: PUSH2 0x101b
00001016: SWAP1
00001017: PUSH2 0x05f5
0000101a: JUMP
0000101b: JUMPDEST
0000101c: PUSH2 0x1023
0000101f: PUSH2 0x09b5
00001022: JUMP
00001023: JUMPDEST
00001024: JUMP
00001025: JUMPDEST
00001026: PUSH1 0x06
00001028: SLOAD
00001029: DUP2
0000102a: JUMP
0000102b: JUMPDEST
0000102c: PUSH1 0x00
0000102e: PUSH2 0x0c05
00001031: DUP4
00001032: DUP4
00001033: PUSH1 0x40
00001035: MLOAD
00001036: DUP1
00001037: PUSH1 0x40
00001039: ADD
0000103a: PUSH1 0x40
0000103c: MSTORE
0000103d: DUP1
0000103e: PUSH1 0x1e
00001040: DUP2
00001041: MSTORE
00001042: PUSH1 0x20
00001044: ADD
00001045: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
00001066: DUP2
00001067: MSTORE
00001068: POP
00001069: PUSH2 0x1262
0000106c: JUMP
0000106d: JUMPDEST
0000106e: PUSH1 0x00
00001070: DUP3
00001071: PUSH2 0x107c
00001074: JUMPI
00001075: POP
00001076: PUSH1 0x00
00001078: PUSH2 0x04e2
0000107b: JUMP
0000107c: JUMPDEST
0000107d: DUP3
0000107e: DUP3
0000107f: MUL
00001080: DUP3
00001081: DUP5
00001082: DUP3
00001083: DUP2
00001084: PUSH2 0x1089
00001087: JUMPI
00001088: INVALID
00001089: JUMPDEST
0000108a: DIV
0000108b: EQ
0000108c: PUSH2 0x0c05
0000108f: JUMPI
00001090: PUSH1 0x40
00001092: MLOAD
00001093: PUSH3 0x461bcd
00001097: PUSH1 0xe5
00001099: SHL
0000109a: DUP2
0000109b: MSTORE
0000109c: PUSH1 0x04
0000109e: ADD
0000109f: DUP1
000010a0: DUP1
000010a1: PUSH1 0x20
000010a3: ADD
000010a4: DUP3
000010a5: DUP2
000010a6: SUB
000010a7: DUP3
000010a8: MSTORE
000010a9: PUSH1 0x21
000010ab: DUP2
000010ac: MSTORE
000010ad: PUSH1 0x20
000010af: ADD
000010b0: DUP1
000010b1: PUSH2 0x1656
000010b4: PUSH1 0x21
000010b6: SWAP2
000010b7: CODECOPY
000010b8: PUSH1 0x40
000010ba: ADD
000010bb: SWAP2
000010bc: POP
000010bd: POP
000010be: PUSH1 0x40
000010c0: MLOAD
000010c1: DUP1
000010c2: SWAP2
000010c3: SUB
000010c4: SWAP1
000010c5: REVERT
000010c6: JUMPDEST
000010c7: PUSH1 0x00
000010c9: PUSH2 0x0c05
000010cc: DUP4
000010cd: DUP4
000010ce: PUSH1 0x40
000010d0: MLOAD
000010d1: DUP1
000010d2: PUSH1 0x40
000010d4: ADD
000010d5: PUSH1 0x40
000010d7: MSTORE
000010d8: DUP1
000010d9: PUSH1 0x1a
000010db: DUP2
000010dc: MSTORE
000010dd: PUSH1 0x20
000010df: ADD
000010e0: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00001101: DUP2
00001102: MSTORE
00001103: POP
00001104: PUSH2 0x12f9
00001107: JUMP
00001108: JUMPDEST
00001109: PUSH1 0x00
0000110b: DUP3
0000110c: DUP3
0000110d: ADD
0000110e: DUP4
0000110f: DUP2
00001110: LT
00001111: ISZERO
00001112: PUSH2 0x0c05
00001115: JUMPI
00001116: PUSH1 0x40
00001118: DUP1
00001119: MLOAD
0000111a: PUSH3 0x461bcd
0000111e: PUSH1 0xe5
00001120: SHL
00001121: DUP2
00001122: MSTORE
00001123: PUSH1 0x20
00001125: PUSH1 0x04
00001127: DUP3
00001128: ADD
00001129: MSTORE
0000112a: PUSH1 0x1b
0000112c: PUSH1 0x24
0000112e: DUP3
0000112f: ADD
00001130: MSTORE
00001131: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
00001152: PUSH1 0x44
00001154: DUP3
00001155: ADD
00001156: MSTORE
00001157: SWAP1
00001158: MLOAD
00001159: SWAP1
0000115a: DUP2
0000115b: SWAP1
0000115c: SUB
0000115d: PUSH1 0x64
0000115f: ADD
00001160: SWAP1
00001161: REVERT
00001162: JUMPDEST
00001163: PUSH1 0x01
00001165: SLOAD
00001166: PUSH1 0x01
00001168: PUSH1 0x01
0000116a: PUSH1 0xa0
0000116c: SHL
0000116d: SUB
0000116e: AND
0000116f: CALLER
00001170: EQ
00001171: PUSH2 0x1023
00001174: JUMPI
00001175: PUSH1 0x40
00001177: MLOAD
00001178: PUSH3 0x461bcd
0000117c: PUSH1 0xe5
0000117e: SHL
0000117f: DUP2
00001180: MSTORE
00001181: PUSH1 0x04
00001183: ADD
00001184: DUP1
00001185: DUP1
00001186: PUSH1 0x20
00001188: ADD
00001189: DUP3
0000118a: DUP2
0000118b: SUB
0000118c: DUP3
0000118d: MSTORE
0000118e: PUSH1 0x2f
00001190: DUP2
00001191: MSTORE
00001192: PUSH1 0x20
00001194: ADD
00001195: DUP1
00001196: PUSH2 0x1627
00001199: PUSH1 0x2f
0000119b: SWAP2
0000119c: CODECOPY
0000119d: PUSH1 0x40
0000119f: ADD
000011a0: SWAP2
000011a1: POP
000011a2: POP
000011a3: PUSH1 0x40
000011a5: MLOAD
000011a6: DUP1
000011a7: SWAP2
000011a8: SUB
000011a9: SWAP1
000011aa: REVERT
000011ab: JUMPDEST
000011ac: PUSH1 0x40
000011ae: DUP1
000011af: MLOAD
000011b0: PUSH1 0x01
000011b2: PUSH1 0x01
000011b4: PUSH1 0xa0
000011b6: SHL
000011b7: SUB
000011b8: DUP5
000011b9: AND
000011ba: PUSH1 0x24
000011bc: DUP3
000011bd: ADD
000011be: MSTORE
000011bf: PUSH1 0x44
000011c1: DUP1
000011c2: DUP3
000011c3: ADD
000011c4: DUP5
000011c5: SWAP1
000011c6: MSTORE
000011c7: DUP3
000011c8: MLOAD
000011c9: DUP1
000011ca: DUP4
000011cb: SUB
000011cc: SWAP1
000011cd: SWAP2
000011ce: ADD
000011cf: DUP2
000011d0: MSTORE
000011d1: PUSH1 0x64
000011d3: SWAP1
000011d4: SWAP2
000011d5: ADD
000011d6: SWAP1
000011d7: SWAP2
000011d8: MSTORE
000011d9: PUSH1 0x20
000011db: DUP2
000011dc: ADD
000011dd: DUP1
000011de: MLOAD
000011df: PUSH1 0x01
000011e1: PUSH1 0x01
000011e3: PUSH1 0xe0
000011e5: SHL
000011e6: SUB
000011e7: AND
000011e8: PUSH4 0xa9059cbb
000011ed: PUSH1 0xe0
000011ef: SHL
000011f0: OR
000011f1: SWAP1
000011f2: MSTORE
000011f3: PUSH2 0x11fd
000011f6: SWAP1
000011f7: DUP5
000011f8: SWAP1
000011f9: PUSH2 0x135e
000011fc: JUMP
000011fd: JUMPDEST
000011fe: POP
000011ff: POP
00001200: POP
00001201: JUMP
00001202: JUMPDEST
00001203: PUSH1 0x40
00001205: DUP1
00001206: MLOAD
00001207: PUSH1 0x01
00001209: PUSH1 0x01
0000120b: PUSH1 0xa0
0000120d: SHL
0000120e: SUB
0000120f: DUP1
00001210: DUP7
00001211: AND
00001212: PUSH1 0x24
00001214: DUP4
00001215: ADD
00001216: MSTORE
00001217: DUP5
00001218: AND
00001219: PUSH1 0x44
0000121b: DUP3
0000121c: ADD
0000121d: MSTORE
0000121e: PUSH1 0x64
00001220: DUP1
00001221: DUP3
00001222: ADD
00001223: DUP5
00001224: SWAP1
00001225: MSTORE
00001226: DUP3
00001227: MLOAD
00001228: DUP1
00001229: DUP4
0000122a: SUB
0000122b: SWAP1
0000122c: SWAP2
0000122d: ADD
0000122e: DUP2
0000122f: MSTORE
00001230: PUSH1 0x84
00001232: SWAP1
00001233: SWAP2
00001234: ADD
00001235: SWAP1
00001236: SWAP2
00001237: MSTORE
00001238: PUSH1 0x20
0000123a: DUP2
0000123b: ADD
0000123c: DUP1
0000123d: MLOAD
0000123e: PUSH1 0x01
00001240: PUSH1 0x01
00001242: PUSH1 0xe0
00001244: SHL
00001245: SUB
00001246: AND
00001247: PUSH4 0x23b872dd
0000124c: PUSH1 0xe0
0000124e: SHL
0000124f: OR
00001250: SWAP1
00001251: MSTORE
00001252: PUSH2 0x125c
00001255: SWAP1
00001256: DUP6
00001257: SWAP1
00001258: PUSH2 0x135e
0000125b: JUMP
0000125c: JUMPDEST
0000125d: POP
0000125e: POP
0000125f: POP
00001260: POP
00001261: JUMP
00001262: JUMPDEST
00001263: PUSH1 0x00
00001265: DUP2
00001266: DUP5
00001267: DUP5
00001268: GT
00001269: ISZERO
0000126a: PUSH2 0x12f1
0000126d: JUMPI
0000126e: PUSH1 0x40
00001270: MLOAD
00001271: PUSH3 0x461bcd
00001275: PUSH1 0xe5
00001277: SHL
00001278: DUP2
00001279: MSTORE
0000127a: PUSH1 0x04
0000127c: ADD
0000127d: DUP1
0000127e: DUP1
0000127f: PUSH1 0x20
00001281: ADD
00001282: DUP3
00001283: DUP2
00001284: SUB
00001285: DUP3
00001286: MSTORE
00001287: DUP4
00001288: DUP2
00001289: DUP2
0000128a: MLOAD
0000128b: DUP2
0000128c: MSTORE
0000128d: PUSH1 0x20
0000128f: ADD
00001290: SWAP2
00001291: POP
00001292: DUP1
00001293: MLOAD
00001294: SWAP1
00001295: PUSH1 0x20
00001297: ADD
00001298: SWAP1
00001299: DUP1
0000129a: DUP4
0000129b: DUP4
0000129c: PUSH1 0x00
0000129e: JUMPDEST
0000129f: DUP4
000012a0: DUP2
000012a1: LT
000012a2: ISZERO
000012a3: PUSH2 0x12b6
000012a6: JUMPI
000012a7: DUP2
000012a8: DUP2
000012a9: ADD
000012aa: MLOAD
000012ab: DUP4
000012ac: DUP3
000012ad: ADD
000012ae: MSTORE
000012af: PUSH1 0x20
000012b1: ADD
000012b2: PUSH2 0x129e
000012b5: JUMP
000012b6: JUMPDEST
000012b7: POP
000012b8: POP
000012b9: POP
000012ba: POP
000012bb: SWAP1
000012bc: POP
000012bd: SWAP1
000012be: DUP2
000012bf: ADD
000012c0: SWAP1
000012c1: PUSH1 0x1f
000012c3: AND
000012c4: DUP1
000012c5: ISZERO
000012c6: PUSH2 0x12e3
000012c9: JUMPI
000012ca: DUP1
000012cb: DUP3
000012cc: SUB
000012cd: DUP1
000012ce: MLOAD
000012cf: PUSH1 0x01
000012d1: DUP4
000012d2: PUSH1 0x20
000012d4: SUB
000012d5: PUSH2 0x0100
000012d8: EXP
000012d9: SUB
000012da: NOT
000012db: AND
000012dc: DUP2
000012dd: MSTORE
000012de: PUSH1 0x20
000012e0: ADD
000012e1: SWAP2
000012e2: POP
000012e3: JUMPDEST
000012e4: POP
000012e5: SWAP3
000012e6: POP
000012e7: POP
000012e8: POP
000012e9: PUSH1 0x40
000012eb: MLOAD
000012ec: DUP1
000012ed: SWAP2
000012ee: SUB
000012ef: SWAP1
000012f0: REVERT
000012f1: JUMPDEST
000012f2: POP
000012f3: POP
000012f4: POP
000012f5: SWAP1
000012f6: SUB
000012f7: SWAP1
000012f8: JUMP
000012f9: JUMPDEST
000012fa: PUSH1 0x00
000012fc: DUP2
000012fd: DUP4
000012fe: PUSH2 0x1348
00001301: JUMPI
00001302: PUSH1 0x40
00001304: MLOAD
00001305: PUSH3 0x461bcd
00001309: PUSH1 0xe5
0000130b: SHL
0000130c: DUP2
0000130d: MSTORE
0000130e: PUSH1 0x20
00001310: PUSH1 0x04
00001312: DUP3
00001313: ADD
00001314: DUP2
00001315: DUP2
00001316: MSTORE
00001317: DUP4
00001318: MLOAD
00001319: PUSH1 0x24
0000131b: DUP5
0000131c: ADD
0000131d: MSTORE
0000131e: DUP4
0000131f: MLOAD
00001320: SWAP1
00001321: SWAP3
00001322: DUP4
00001323: SWAP3
00001324: PUSH1 0x44
00001326: SWAP1
00001327: SWAP2
00001328: ADD
00001329: SWAP2
0000132a: SWAP1
0000132b: DUP6
0000132c: ADD
0000132d: SWAP1
0000132e: DUP1
0000132f: DUP4
00001330: DUP4
00001331: PUSH1 0x00
00001333: DUP4
00001334: ISZERO
00001335: PUSH2 0x12b6
00001338: JUMPI
00001339: DUP2
0000133a: DUP2
0000133b: ADD
0000133c: MLOAD
0000133d: DUP4
0000133e: DUP3
0000133f: ADD
00001340: MSTORE
00001341: PUSH1 0x20
00001343: ADD
00001344: PUSH2 0x129e
00001347: JUMP
00001348: JUMPDEST
00001349: POP
0000134a: PUSH1 0x00
0000134c: DUP4
0000134d: DUP6
0000134e: DUP2
0000134f: PUSH2 0x1354
00001352: JUMPI
00001353: INVALID
00001354: JUMPDEST
00001355: DIV
00001356: SWAP6
00001357: SWAP5
00001358: POP
00001359: POP
0000135a: POP
0000135b: POP
0000135c: POP
0000135d: JUMP
0000135e: JUMPDEST
0000135f: PUSH1 0x60
00001361: PUSH2 0x13b3
00001364: DUP3
00001365: PUSH1 0x40
00001367: MLOAD
00001368: DUP1
00001369: PUSH1 0x40
0000136b: ADD
0000136c: PUSH1 0x40
0000136e: MSTORE
0000136f: DUP1
00001370: PUSH1 0x20
00001372: DUP2
00001373: MSTORE
00001374: PUSH1 0x20
00001376: ADD
00001377: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
00001398: DUP2
00001399: MSTORE
0000139a: POP
0000139b: DUP6
0000139c: PUSH1 0x01
0000139e: PUSH1 0x01
000013a0: PUSH1 0xa0
000013a2: SHL
000013a3: SUB
000013a4: AND
000013a5: PUSH2 0x140f
000013a8: SWAP1
000013a9: SWAP3
000013aa: SWAP2
000013ab: SWAP1
000013ac: PUSH4 0xffffffff
000013b1: AND
000013b2: JUMP
000013b3: JUMPDEST
000013b4: DUP1
000013b5: MLOAD
000013b6: SWAP1
000013b7: SWAP2
000013b8: POP
000013b9: ISZERO
000013ba: PUSH2 0x11fd
000013bd: JUMPI
000013be: DUP1
000013bf: DUP1
000013c0: PUSH1 0x20
000013c2: ADD
000013c3: SWAP1
000013c4: MLOAD
000013c5: PUSH1 0x20
000013c7: DUP2
000013c8: LT
000013c9: ISZERO
000013ca: PUSH2 0x13d2
000013cd: JUMPI
000013ce: PUSH1 0x00
000013d0: DUP1
000013d1: REVERT
000013d2: JUMPDEST
000013d3: POP
000013d4: MLOAD
000013d5: PUSH2 0x11fd
000013d8: JUMPI
000013d9: PUSH1 0x40
000013db: MLOAD
000013dc: PUSH3 0x461bcd
000013e0: PUSH1 0xe5
000013e2: SHL
000013e3: DUP2
000013e4: MSTORE
000013e5: PUSH1 0x04
000013e7: ADD
000013e8: DUP1
000013e9: DUP1
000013ea: PUSH1 0x20
000013ec: ADD
000013ed: DUP3
000013ee: DUP2
000013ef: SUB
000013f0: DUP3
000013f1: MSTORE
000013f2: PUSH1 0x2a
000013f4: DUP2
000013f5: MSTORE
000013f6: PUSH1 0x20
000013f8: ADD
000013f9: DUP1
000013fa: PUSH2 0x16e0
000013fd: PUSH1 0x2a
000013ff: SWAP2
00001400: CODECOPY
00001401: PUSH1 0x40
00001403: ADD
00001404: SWAP2
00001405: POP
00001406: POP
00001407: PUSH1 0x40
00001409: MLOAD
0000140a: DUP1
0000140b: SWAP2
0000140c: SUB
0000140d: SWAP1
0000140e: REVERT
0000140f: JUMPDEST
00001410: PUSH1 0x60
00001412: PUSH2 0x141e
00001415: DUP5
00001416: DUP5
00001417: PUSH1 0x00
00001419: DUP6
0000141a: PUSH2 0x1426
0000141d: JUMP
0000141e: JUMPDEST
0000141f: SWAP5
00001420: SWAP4
00001421: POP
00001422: POP
00001423: POP
00001424: POP
00001425: JUMP
00001426: JUMPDEST
00001427: PUSH1 0x60
00001429: PUSH2 0x1431
0000142c: DUP6
0000142d: PUSH2 0x1593
00001430: JUMP
00001431: JUMPDEST
00001432: PUSH2 0x1482
00001435: JUMPI
00001436: PUSH1 0x40
00001438: DUP1
00001439: MLOAD
0000143a: PUSH3 0x461bcd
0000143e: PUSH1 0xe5
00001440: SHL
00001441: DUP2
00001442: MSTORE
00001443: PUSH1 0x20
00001445: PUSH1 0x04
00001447: DUP3
00001448: ADD
00001449: MSTORE
0000144a: PUSH1 0x1d
0000144c: PUSH1 0x24
0000144e: DUP3
0000144f: ADD
00001450: MSTORE
00001451: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000
00001472: PUSH1 0x44
00001474: DUP3
00001475: ADD
00001476: MSTORE
00001477: SWAP1
00001478: MLOAD
00001479: SWAP1
0000147a: DUP2
0000147b: SWAP1
0000147c: SUB
0000147d: PUSH1 0x64
0000147f: ADD
00001480: SWAP1
00001481: REVERT
00001482: JUMPDEST
00001483: PUSH1 0x00
00001485: PUSH1 0x60
00001487: DUP7
00001488: PUSH1 0x01
0000148a: PUSH1 0x01
0000148c: PUSH1 0xa0
0000148e: SHL
0000148f: SUB
00001490: AND
00001491: DUP6
00001492: DUP8
00001493: PUSH1 0x40
00001495: MLOAD
00001496: DUP1
00001497: DUP3
00001498: DUP1
00001499: MLOAD
0000149a: SWAP1
0000149b: PUSH1 0x20
0000149d: ADD
0000149e: SWAP1
0000149f: DUP1
000014a0: DUP4
000014a1: DUP4
000014a2: JUMPDEST
000014a3: PUSH1 0x20
000014a5: DUP4
000014a6: LT
000014a7: PUSH2 0x14c1
000014aa: JUMPI
000014ab: DUP1
000014ac: MLOAD
000014ad: DUP3
000014ae: MSTORE
000014af: PUSH1 0x1f
000014b1: NOT
000014b2: SWAP1
000014b3: SWAP3
000014b4: ADD
000014b5: SWAP2
000014b6: PUSH1 0x20
000014b8: SWAP2
000014b9: DUP3
000014ba: ADD
000014bb: SWAP2
000014bc: ADD
000014bd: PUSH2 0x14a2
000014c0: JUMP
000014c1: JUMPDEST
000014c2: PUSH1 0x01
000014c4: DUP4
000014c5: PUSH1 0x20
000014c7: SUB
000014c8: PUSH2 0x0100
000014cb: EXP
000014cc: SUB
000014cd: DUP1
000014ce: NOT
000014cf: DUP3
000014d0: MLOAD
000014d1: AND
000014d2: DUP2
000014d3: DUP5
000014d4: MLOAD
000014d5: AND
000014d6: DUP1
000014d7: DUP3
000014d8: OR
000014d9: DUP6
000014da: MSTORE
000014db: POP
000014dc: POP
000014dd: POP
000014de: POP
000014df: POP
000014e0: POP
000014e1: SWAP1
000014e2: POP
000014e3: ADD
000014e4: SWAP2
000014e5: POP
000014e6: POP
000014e7: PUSH1 0x00
000014e9: PUSH1 0x40
000014eb: MLOAD
000014ec: DUP1
000014ed: DUP4
000014ee: SUB
000014ef: DUP2
000014f0: DUP6
000014f1: DUP8
000014f2: GAS
000014f3: CALL
000014f4: SWAP3
000014f5: POP
000014f6: POP
000014f7: POP
000014f8: RETURNDATASIZE
000014f9: DUP1
000014fa: PUSH1 0x00
000014fc: DUP2
000014fd: EQ
000014fe: PUSH2 0x1523
00001501: JUMPI
00001502: PUSH1 0x40
00001504: MLOAD
00001505: SWAP2
00001506: POP
00001507: PUSH1 0x1f
00001509: NOT
0000150a: PUSH1 0x3f
0000150c: RETURNDATASIZE
0000150d: ADD
0000150e: AND
0000150f: DUP3
00001510: ADD
00001511: PUSH1 0x40
00001513: MSTORE
00001514: RETURNDATASIZE
00001515: DUP3
00001516: MSTORE
00001517: RETURNDATASIZE
00001518: PUSH1 0x00
0000151a: PUSH1 0x20
0000151c: DUP5
0000151d: ADD
0000151e: RETURNDATACOPY
0000151f: PUSH2 0x1528
00001522: JUMP
00001523: JUMPDEST
00001524: PUSH1 0x60
00001526: SWAP2
00001527: POP
00001528: JUMPDEST
00001529: POP
0000152a: SWAP2
0000152b: POP
0000152c: SWAP2
0000152d: POP
0000152e: DUP2
0000152f: ISZERO
00001530: PUSH2 0x153c
00001533: JUMPI
00001534: SWAP2
00001535: POP
00001536: PUSH2 0x141e
00001539: SWAP1
0000153a: POP
0000153b: JUMP
0000153c: JUMPDEST
0000153d: DUP1
0000153e: MLOAD
0000153f: ISZERO
00001540: PUSH2 0x154c
00001543: JUMPI
00001544: DUP1
00001545: MLOAD
00001546: DUP1
00001547: DUP3
00001548: PUSH1 0x20
0000154a: ADD
0000154b: REVERT
0000154c: JUMPDEST
0000154d: PUSH1 0x40
0000154f: MLOAD
00001550: PUSH3 0x461bcd
00001554: PUSH1 0xe5
00001556: SHL
00001557: DUP2
00001558: MSTORE
00001559: PUSH1 0x20
0000155b: PUSH1 0x04
0000155d: DUP3
0000155e: ADD
0000155f: DUP2
00001560: DUP2
00001561: MSTORE
00001562: DUP7
00001563: MLOAD
00001564: PUSH1 0x24
00001566: DUP5
00001567: ADD
00001568: MSTORE
00001569: DUP7
0000156a: MLOAD
0000156b: DUP8
0000156c: SWAP4
0000156d: SWAP2
0000156e: SWAP3
0000156f: DUP4
00001570: SWAP3
00001571: PUSH1 0x44
00001573: ADD
00001574: SWAP2
00001575: SWAP1
00001576: DUP6
00001577: ADD
00001578: SWAP1
00001579: DUP1
0000157a: DUP4
0000157b: DUP4
0000157c: PUSH1 0x00
0000157e: DUP4
0000157f: ISZERO
00001580: PUSH2 0x12b6
00001583: JUMPI
00001584: DUP2
00001585: DUP2
00001586: ADD
00001587: MLOAD
00001588: DUP4
00001589: DUP3
0000158a: ADD
0000158b: MSTORE
0000158c: PUSH1 0x20
0000158e: ADD
0000158f: PUSH2 0x129e
00001592: JUMP
00001593: JUMPDEST
00001594: EXTCODESIZE
00001595: ISZERO
00001596: ISZERO
00001597: SWAP1
00001598: JUMP
00001599: INVALID
0000159a: POP
0000159b: PUSH19 0x6576696f757320726577617264732070657269
000015af: PUSH16 0x64206d75737420626520636f6d706c65
000015c0: PUSH21 0x65206265666f7265206368616e67696e6720746865
000015d6: KECCAK256
000015d7: PUSH5 0x7572617469
000015dd: PUSH16 0x6e20666f7220746865206e6577207065
000015ee: PUSH19 0x696f64596f75206d757374206265206e6f6d69
00001602: PUSH15 0x61746564206265666f726520796f75
00001612: KECCAK256
00001613: PUSH4 0x616e2061
00001618: PUSH4 0x63657074
0000161d: KECCAK256
0000161e: PUSH16 0x776e6572736869704f6e6c7920746865
0000162f: KECCAK256
00001630: PUSH4 0x6f6e7472
00001635: PUSH2 0x6374
00001638: KECCAK256
00001639: PUSH16 0x776e6572206d617920706572666f726d
0000164a: KECCAK256
0000164b: PUSH21 0x68697320616374696f6e536166654d6174683a206d
00001661: PUSH22 0x6c7469706c69636174696f6e206f766572666c6f7754
00001678: PUSH9 0x697320616374696f6e
00001682: KECCAK256
00001683: PUSH4 0x616e6e6f
00001688: PUSH21 0x20626520706572666f726d6564207768696c652074
0000169e: PUSH9 0x6520636f6e74726163
000016a8: PUSH21 0x2069732070617573656443616e6e6f742077697468
000016be: PUSH5 0x7261772074
000016c4: PUSH9 0x65207374616b696e67
000016ce: KECCAK256
000016cf: PUSH16 0x72207265776172647320746f6b656e73
000016e0: MSTORE8
000016e1: PUSH2 0x6665
000016e4: GASLIMIT
000016e5: MSTORE
000016e6: NUMBER
000016e7: ORIGIN
000016e8: ADDRESS
000016e9: GASPRICE
000016ea: KECCAK256
000016eb: GASLIMIT
000016ec: MSTORE
000016ed: NUMBER
000016ee: ORIGIN
000016ef: ADDRESS
000016f0: KECCAK256
000016f1: PUSH16 0x7065726174696f6e20646964206e6f74
00001702: KECCAK256
00001703: PUSH20 0x756363656564a2646970667358221220f1d2e6a5
00001718: UNKNOWN(0xDC)
00001719: CHAINID
0000171a: SWAP12
0000171b: UNKNOWN(0xDA)
0000171c: SHL
0000171d: LOG2
0000171e: PUSH26 0xe67be5449f33c48d6532b90780f006b5fd4081782164736f6c63
00001739: NUMBER
0000173a: STOP
0000173b: MOD
0000173c: SMOD
0000173d: STOP
0000173e: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf136d65",
            "selector": "0xdf136d65",
            "calldata_variants": [
                "0xdf136d65",
                "0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa694fc3a",
            "selector": "0xa694fc3a",
            "calldata_variants": [
                "0xa694fc3a",
                "0xa694fc3a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc1a378f",
            "selector": "0xcc1a378f",
            "calldata_variants": [
                "0xcc1a378f",
                "0xcc1a378f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 5863,
            "type": "tx_origin_used"
        },
        {
            "pc": 5870,
            "type": "tx_origin_used"
        }
    ]
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xe4a6a393c25ea51d96583238e6a64b3374f79a32d7c775bc3b0673042d1610f7
call_targets: 0xa17a8883da1abd57c690df9ebf58fc194edab66f
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe4a6a393c25ea51d96583238e6a64b3374f79a32d7c775bc3b0673042d1610f7",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xa17a8883da1abd57c690df9ebf58fc194edab66f"
    ],
    "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": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf136d65",
            "selector": "0xdf136d65",
            "calldata_variants": [
                "0xdf136d65",
                "0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa694fc3a",
            "selector": "0xa694fc3a",
            "calldata_variants": [
                "0xa694fc3a",
                "0xa694fc3a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc1a378f",
            "selector": "0xcc1a378f",
            "calldata_variants": [
                "0xcc1a378f",
                "0xcc1a378f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5363,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 1,
    "guards_detected": [
        {
            "pc": 5863,
            "type": "tx_origin_used"
        },
        {
            "pc": 5870,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 1
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xe4a6a393c25ea51d96583238e6a64b3374f79a32d7c775bc3b0673042d1610f7
call_targets: 0xa17a8883da1abd57c690df9ebf58fc194edab66f
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xe4a6a393c25ea51d96583238e6a64b3374f79a32d7c775bc3b0673042d1610f7",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xa17a8883da1abd57c690df9ebf58fc194edab66f"
    ],
    "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": "0xd1af0c7d",
            "selector": "0xd1af0c7d",
            "calldata_variants": [
                "0xd1af0c7d",
                "0xd1af0c7d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xdf136d65",
            "selector": "0xdf136d65",
            "calldata_variants": [
                "0xdf136d65",
                "0xdf136d650000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe9fad8ee",
            "selector": "0xe9fad8ee",
            "calldata_variants": [
                "0xe9fad8ee",
                "0xe9fad8ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xebe2b12b",
            "selector": "0xebe2b12b",
            "calldata_variants": [
                "0xebe2b12b",
                "0xebe2b12b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa694fc3a",
            "selector": "0xa694fc3a",
            "calldata_variants": [
                "0xa694fc3a",
                "0xa694fc3a0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xc8f33c91",
            "selector": "0xc8f33c91",
            "calldata_variants": [
                "0xc8f33c91",
                "0xc8f33c910000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcc1a378f",
            "selector": "0xcc1a378f",
            "calldata_variants": [
                "0xcc1a378f",
                "0xcc1a378f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xcd3daf9d",
            "selector": "0xcd3daf9d",
            "calldata_variants": [
                "0xcd3daf9d",
                "0xcd3daf9d0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 5363,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 1,
    "guards_detected": [
        {
            "pc": 5863,
            "type": "tx_origin_used"
        },
        {
            "pc": 5870,
            "type": "tx_origin_used"
        }
    ]
}
low other codex Staking credits ignore actual received amount (fee-on-transfer token risk) 65 no
view
evidence_json
{
    "evidence": "`stake()` increments `_totalSupply`/`_balances` by `amount` before calling `stakingToken.safeTransferFrom`, and `withdraw()` transfers the full stored amount without reconciling actual balances.",
    "locations": [
        "contracts/src/staking-rewards.sol:87",
        "contracts/src/staking-rewards.sol:94",
        "contracts/src/staking-rewards.sol:96",
        "contracts/src/staking-rewards.sol:106",
        "contracts/src/staking-rewards.sol:108"
    ],
    "recommendation": "Credit the actual received amount using balance-before/after accounting, or enforce non-deflationary staking tokens by requiring the balance increase to equal `amount` and reverting otherwise.",
    "exploit_scenario": "If `stakingToken` charges a transfer fee or burns on transfer, `stake()` credits the full `amount` while the contract receives less. An attacker can stake, wait for others to deposit, then withdraw their full credited amount, leaving later stakers unable to withdraw due to insufficient balance."
}
low other codex Reward schedule can be set using staked principal or accrued rewards as backing 65 no
view
evidence_json
{
    "evidence": "`notifyRewardAmount()` bounds `rewardRate` using `rewardsToken.balanceOf(address(this))` with no reserve for staked principal or already accrued rewards.",
    "locations": [
        "contracts/src/staking-rewards.sol:128",
        "contracts/src/staking-rewards.sol:145",
        "contracts/src/staking-rewards.sol:147"
    ],
    "recommendation": "Track a dedicated reward reserve; if `rewardsToken` can equal `stakingToken`, validate `rewardRate` against balance minus `_totalSupply` (and ideally accrued rewards), or require a balance increase equal to the new reward before updating the schedule.",
    "exploit_scenario": "If the owner calls `notifyRewardAmount()` without depositing new reward tokens (or if `rewardsToken` equals `stakingToken`), the check uses the full token balance, which includes staked principal and already-accrued rewards. The contract can become insolvent as rewards are claimed, and later withdrawals can revert due to insufficient balance."
}