f1cbd233-45c0-4ebf-9340-b7ed9fe4bae0
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| 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 |
No slither job recorded yet.
[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"]}]}
{
"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
}
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
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_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 |
viewtrace_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 |
viewtrace_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 | — |
viewevidence_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 | — |
viewevidence_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."
}
|