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

Analysis Run

4d2430de-9b62-4280-b240-500b58b1688c

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 5:12 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
Untrusted CALL target/value reachable
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
30537 report.consolidate complete 1 / 1 3 months ago
104081 artifact.fetch complete 1 / 3 1 week ago
104082 tool.cast_disasm complete 1 / 3 1 week ago
104083 analysis.bundle complete 1 / 3 1 week ago
104084 capability.graph complete 1 / 3 1 week ago
104085 detector.run complete 1 / 3 1 week ago
104086 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
1
No findings?
no
Summary
1 medium-severity accounting issue found in SimpleStakingERC20 related to fee-on-transfer/rebasing tokens causing balance desynchronization and potential withdrawal failures.
View stderr
[codex:1085787] OpenAI Codex v0.77.0 (research preview)
[codex:1085787] --------
[codex:1085787] workdir: /tmp/codex-multi-phhxgbws
[codex:1085787] model: gpt-5.2-codex
[codex:1085787] provider: openai
[codex:1085787] approval: never
[codex:1085787] sandbox: read-only
[codex:1085787] reasoning effort: xhigh
[codex:1085787] reasoning summaries: auto
[codex:1085787] session id: 019b6b16-22e8-7f81-ab19-785c386c6ea3
[codex:1085787] --------
[codex:1085787] user
[codex:1085787] You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
[codex:1085787] Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
[codex:1085787] accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.
[codex:1085787] 
[codex:1085787] Scope rules:
[codex:1085787] - You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party `contracts/**/*.sol` files.
[codex:1085787] - Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
[codex:1085787] 
[codex:1085787] Output MUST be valid JSON matching the provided schema.
[codex:1085787] - If you find nothing meaningful: set no_findings=true and findings=[].
[codex:1085787] - Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.
[codex:1085787] 
[codex:1085787] Output constraints (IMPORTANT):
[codex:1085787] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1085787] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1085787] mcp startup: no servers
[codex:1085787] 
[codex:1085787] thinking
[codex:1085787] **Reviewing instructions and audit bundle**
[codex:1085787] exec
[codex:1085787] /bin/bash -lc ls in /tmp/codex-multi-phhxgbws succeeded in 5ms:
[codex:1085787] AUDIT_BUNDLE.txt
[codex:1085787] codex-output-schema.json
[codex:1085787] contracts
[codex:1085787] exec
[codex:1085787] /bin/bash -lc "sed -n '1,200p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phhxgbws succeeded in 5ms:
[codex:1085787] This file concatenates the full contents of first-party Solidity sources for auditing.
[codex:1085787] 
[codex:1085787] ================================================================================
[codex:1085787] FILE: contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol
[codex:1085787] ================================================================================
[codex:1085787] // SPDX-License-Identifier: MIT
[codex:1085787] // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
[codex:1085787] 
[codex:1085787] pragma solidity ^0.8.20;
[codex:1085787] 
[codex:1085787] import {Context} from "../utils/Context.sol";
[codex:1085787] 
[codex:1085787] /**
[codex:1085787]  * @dev Contract module which provides a basic access control mechanism, where
[codex:1085787]  * there is an account (an owner) that can be granted exclusive access to
[codex:1085787]  * specific functions.
[codex:1085787]  *
[codex:1085787]  * The initial owner is set to the address provided by the deployer. This can
[codex:1085787]  * later be changed with {transferOwnership}.
[codex:1085787]  *
[codex:1085787] 
[codex:1085787] thinking
[codex:1085787] **Identifying first-party contract files**
[codex:1085787] exec
[codex:1085787] /bin/bash -lc 'rg "''^FILE:" -n AUDIT_BUNDLE.txt' in /tmp/codex-multi-phhxgbws succeeded in 8ms:
[codex:1085787] 4:FILE: contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol
[codex:1085787] 108:FILE: contracts/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol
[codex:1085787] 171:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol
[codex:1085787] 254:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol
[codex:1085787] 348:FILE: contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol
[codex:1085787] 470:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol
[codex:1085787] 633:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol
[codex:1085787] 665:FILE: contracts/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol
[codex:1085787] 753:FILE: contracts/src/SimpleStakingERC20.sol
[codex:1085787] 852:FILE: contracts/src/interfaces/ISimpleStakingERC20.sol
[codex:1085787] 
[codex:1085787] thinking
[codex:1085787] **Reviewing first-party contract files**
[codex:1085787] exec
[codex:1085787] /bin/bash -lc "sed -n '740,920p' AUDIT_BUNDLE.txt" in /tmp/codex-multi-phhxgbws succeeded in 5ms:
[codex:1085787]         _status = NOT_ENTERED;
[codex:1085787]     }
[codex:1085787] 
[codex:1085787]     /**
[codex:1085787]      * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
[codex:1085787]      * `nonReentrant` function in the call stack.
[codex:1085787]      */
[codex:1085787]     function _reentrancyGuardEntered() internal view returns (bool) {
[codex:1085787]         return _status == ENTERED;
[codex:1085787]     }
[codex:1085787] }
[codex:1085787] 
[codex:1085787] ================================================================================
[codex:1085787] FILE: contracts/src/SimpleStakingERC20.sol
[codex:1085787] ================================================================================
[codex:1085787] // SPDX-License-Identifier: UNLICENSED
[codex:1085787] pragma solidity 0.8.23;
[codex:1085787] 
[codex:1085787] // External dependencies
[codex:1085787] import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1085787] 
[codex:1085787] 
[codex:1085787] thinking
[codex:1085787] **Analyzing staking contract vulnerabilities**
[codex:1085787] thinking
[codex:1085787] **Evaluating token fee and withdraw accounting issues**
[codex:1085787] 
[codex:1085787] I've found a key issue where tokens that charge fees on transfers out break the accounting of staked balances and total supply. This can cause users to lose funds due to divergence between recorded stakes and actual tokens, leading to stuck withdrawals or insolvency. Rescue operations can unintentionally drain staked funds when fee-on-transfer tokens are involved, since transferring "excess" tokens also triggers fees reducing the contract's balance below total stakes. This mismatch is important and could be considered a medium severity vulnerability, especially if the owner supports such tokens. I'll note that deposit handles deflationary fees, but withdraw and rescue do not, causing these inconsistencies.
[codex:1085787] exec
[codex:1085787] /bin/bash -lc 'nl -ba contracts/src/SimpleStakingERC20.sol' in /tmp/codex-multi-phhxgbws succeeded in 6ms:
[codex:1085787]      1	// SPDX-License-Identifier: UNLICENSED
[codex:1085787]      2	pragma solidity 0.8.23;
[codex:1085787]      3	
[codex:1085787]      4	// External dependencies
[codex:1085787]      5	import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
[codex:1085787]      6	import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
[codex:1085787]      7	import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
[codex:1085787]      8	import {Ownable, Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
[codex:1085787]      9	
[codex:1085787]     10	// Internal dependencies
[codex:1085787]     11	import {ISimpleStakingERC20} from "./interfaces/ISimpleStakingERC20.sol";
[codex:1085787]     12	
[codex:1085787]     13	contract SimpleStakingERC20 is Ownable2Step, ReentrancyGuard, ISimpleStakingERC20 {
[codex:1085787]     14	    using SafeERC20 for IERC20;
[codex:1085787]     15	
[codex:1085787]     16	    /*//////////////////////////////////////////////////////////////
[codex:1085787]     17	                               VARIABLES
[codex:1085787]     18	    //////////////////////////////////////////////////////////////*/
[codex:1085787]     19	
[codex:1085787]     20	    /// @notice Mapping of supported tokens
[codex:1085787] 
[codex:1085787] thinking
[codex:1085787] **Preparing to reference code and schema**
[codex:1085787] exec
[codex:1085787] /bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-multi-phhxgbws succeeded in 5ms:
[codex:1085787] {"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:1085787] 
[codex:1085787] thinking
[codex:1085787] **Preparing detailed vulnerability summary and JSON output**
[codex:1085787] 
[codex:1085787] I'm constructing a precise JSON report describing a medium-severity accounting bug caused by fee-on-transfer or rebasing tokens that break internal balance invariants, potentially causing contract insolvency and blocking withdrawals. I'll include evidence, exploit scenarios, file locations, and clear recommendations focused on balance adjustments during withdraw and rescue operations.
[codex:1085787] codex
[codex:1085787] {"no_findings":false,"summary":"1 medium-severity accounting issue found in SimpleStakingERC20 related to fee-on-transfer/rebasing tokens causing balance desynchronization and potential withdrawal failures.","findings":[{"severity":"medium","category":"math","title":"Fee-on-transfer/rebasing tokens can desync accounting and make withdrawals insolvent","exploit_scenario":"If the owner supports a token that charges transfer fees or rebases, deposits are credited by the actual received amount, but withdrawals and rescue transfers debit internal balances by the requested amount only. For a fee-on-transfer token, each withdrawal reduces the contract’s real balance by more than `_amount` (fee is taken from the contract), while `totalStakedBalance` is reduced by exactly `_amount`. Over time the contract becomes undercollateralized and later withdrawals revert or cannot be fully honored. If a small excess exists, calling `rescueERC20` can also burn into staked funds due to transfer fees, accelerating insolvency. A malicious fee-collector token could profit from this undercollateralization.","recommendation":"If fee-on-transfer or rebasing tokens are intended to be supported, update accounting on withdrawal/rescue using balance-before/after deltas and ensure `totalStakedBalance` matches the actual balance change. Alternatively, explicitly reject such tokens (e.g., require `balanceAfter == balanceBefore - amount` on withdrawals/rescues) and document the limitation in `supportToken`.","evidence":"`deposit` adjusts `_amount` based on balance delta for deflationary tokens, but `withdraw` and `rescueERC20` decrement internal balances by the requested amount without considering transfer fees or balance changes outside the contract, allowing `totalStakedBalance` to exceed actual token balance.","locations":["contracts/src/SimpleStakingERC20.sol:52","contracts/src/SimpleStakingERC20.sol:66","contracts/src/SimpleStakingERC20.sol:80"]}]}
[codex:1085787] tokens used
[codex:1085787] 24,453
[codex:1085787] {"no_findings":false,"summary":"1 medium-severity accounting issue found in SimpleStakingERC20 related to fee-on-transfer/rebasing tokens causing balance desynchronization and potential withdrawal failures.","findings":[{"severity":"medium","category":"math","title":"Fee-on-transfer/rebasing tokens can desync accounting and make withdrawals insolvent","exploit_scenario":"If the owner supports a token that charges transfer fees or rebases, deposits are credited by the actual received amount, but withdrawals and rescue transfers debit internal balances by the requested amount only. For a fee-on-transfer token, each withdrawal reduces the contract’s real balance by more than `_amount` (fee is taken from the contract), while `totalStakedBalance` is reduced by exactly `_amount`. Over time the contract becomes undercollateralized and later withdrawals revert or cannot be fully honored. If a small excess exists, calling `rescueERC20` can also burn into staked funds due to transfer fees, accelerating insolvency. A malicious fee-collector token could profit from this undercollateralization.","recommendation":"If fee-on-transfer or rebasing tokens are intended to be supported, update accounting on withdrawal/rescue using balance-before/after deltas and ensure `totalStakedBalance` matches the actual balance change. Alternatively, explicitly reject such tokens (e.g., require `balanceAfter == balanceBefore - amount` on withdrawals/rescues) and document the limitation in `supportToken`.","evidence":"`deposit` adjusts `_amount` based on balance delta for deflationary tokens, but `withdraw` and `rescueERC20` decrement internal balances by the requested amount without considering transfer fees or balance changes outside the contract, allowing `totalStakedBalance` to exceed actual token balance.","locations":["contracts/src/SimpleStakingERC20.sol:52","contracts/src/SimpleStakingERC20.sol:66","contracts/src/SimpleStakingERC20.sol:80"]}]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T17:12:14.229473+00:00",
        "returncode": 0
    },
    "summary": "1 medium-severity accounting issue found in SimpleStakingERC20 related to fee-on-transfer/rebasing tokens causing balance desynchronization and potential withdrawal failures.",
    "raw_final": {
        "summary": "1 medium-severity accounting issue found in SimpleStakingERC20 related to fee-on-transfer/rebasing tokens causing balance desynchronization and potential withdrawal failures.",
        "findings": [
            {
                "title": "Fee-on-transfer/rebasing tokens can desync accounting and make withdrawals insolvent",
                "category": "math",
                "evidence": "`deposit` adjusts `_amount` based on balance delta for deflationary tokens, but `withdraw` and `rescueERC20` decrement internal balances by the requested amount without considering transfer fees or balance changes outside the contract, allowing `totalStakedBalance` to exceed actual token balance.",
                "severity": "medium",
                "locations": [
                    "contracts/src/SimpleStakingERC20.sol:52",
                    "contracts/src/SimpleStakingERC20.sol:66",
                    "contracts/src/SimpleStakingERC20.sol:80"
                ],
                "recommendation": "If fee-on-transfer or rebasing tokens are intended to be supported, update accounting on withdrawal/rescue using balance-before/after deltas and ensure `totalStakedBalance` matches the actual balance change. Alternatively, explicitly reject such tokens (e.g., require `balanceAfter == balanceBefore - amount` on withdrawals/rescues) and document the limitation in `supportToken`.",
                "exploit_scenario": "If the owner supports a token that charges transfer fees or rebases, deposits are credited by the actual received amount, but withdrawals and rescue transfers debit internal balances by the requested amount only. For a fee-on-transfer token, each withdrawal reduces the contract\u2019s real balance by more than `_amount` (fee is taken from the contract), while `totalStakedBalance` is reduced by exactly `_amount`. Over time the contract becomes undercollateralized and later withdrawals revert or cannot be fully honored. If a small excess exists, calling `rescueERC20` can also burn into staked funds due to transfer fees, accelerating insolvency. A malicious fee-collector token could profit from this undercollateralization."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
5
EXT*/BALANCE
4
Total opcodes
2239
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 0x000f
0000000b: JUMPI
0000000c: PUSH0
0000000d: DUP1
0000000e: REVERT
0000000f: JUMPDEST
00000010: POP
00000011: PUSH1 0x04
00000013: CALLDATASIZE
00000014: LT
00000015: PUSH2 0x00b1
00000018: JUMPI
00000019: PUSH0
0000001a: CALLDATALOAD
0000001b: PUSH1 0xe0
0000001d: SHR
0000001e: DUP1
0000001f: PUSH4 0x8da5cb5b
00000024: GT
00000025: PUSH2 0x006e
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0x8da5cb5b
0000002f: EQ
00000030: PUSH2 0x0161
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xa4560996
0000003a: EQ
0000003b: PUSH2 0x0185
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xccec3716
00000045: EQ
00000046: PUSH2 0x01af
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xe30c3978
00000050: EQ
00000051: PUSH2 0x01c2
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0xf2fde38b
0000005b: EQ
0000005c: PUSH2 0x01d3
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0xf45346dc
00000066: EQ
00000067: PUSH2 0x01e6
0000006a: JUMPI
0000006b: PUSH0
0000006c: DUP1
0000006d: REVERT
0000006e: JUMPDEST
0000006f: DUP1
00000070: PUSH4 0x3e82e419
00000075: EQ
00000076: PUSH2 0x00b5
00000079: JUMPI
0000007a: DUP1
0000007b: PUSH4 0x68c4ac26
00000080: EQ
00000081: PUSH2 0x00ca
00000084: JUMPI
00000085: DUP1
00000086: PUSH4 0x69328dec
0000008b: EQ
0000008c: PUSH2 0x0111
0000008f: JUMPI
00000090: DUP1
00000091: PUSH4 0x715018a6
00000096: EQ
00000097: PUSH2 0x0124
0000009a: JUMPI
0000009b: DUP1
0000009c: PUSH4 0x79ba5097
000000a1: EQ
000000a2: PUSH2 0x012c
000000a5: JUMPI
000000a6: DUP1
000000a7: PUSH4 0x7c329830
000000ac: EQ
000000ad: PUSH2 0x0134
000000b0: JUMPI
000000b1: JUMPDEST
000000b2: PUSH0
000000b3: DUP1
000000b4: REVERT
000000b5: JUMPDEST
000000b6: PUSH2 0x00c8
000000b9: PUSH2 0x00c3
000000bc: CALLDATASIZE
000000bd: PUSH1 0x04
000000bf: PUSH2 0x0aa4
000000c2: JUMP
000000c3: JUMPDEST
000000c4: PUSH2 0x01f9
000000c7: JUMP
000000c8: JUMPDEST
000000c9: STOP
000000ca: JUMPDEST
000000cb: PUSH2 0x00f5
000000ce: PUSH2 0x00d8
000000d1: CALLDATASIZE
000000d2: PUSH1 0x04
000000d4: PUSH2 0x0ae2
000000d7: JUMP
000000d8: JUMPDEST
000000d9: PUSH1 0x03
000000db: PUSH1 0x20
000000dd: MSTORE
000000de: PUSH0
000000df: SWAP1
000000e0: DUP2
000000e1: MSTORE
000000e2: PUSH1 0x40
000000e4: SWAP1
000000e5: KECCAK256
000000e6: SLOAD
000000e7: PUSH1 0xff
000000e9: DUP1
000000ea: DUP3
000000eb: AND
000000ec: SWAP2
000000ed: PUSH2 0x0100
000000f0: SWAP1
000000f1: DIV
000000f2: AND
000000f3: DUP3
000000f4: JUMP
000000f5: JUMPDEST
000000f6: PUSH1 0x40
000000f8: DUP1
000000f9: MLOAD
000000fa: SWAP3
000000fb: ISZERO
000000fc: ISZERO
000000fd: DUP4
000000fe: MSTORE
000000ff: SWAP1
00000100: ISZERO
00000101: ISZERO
00000102: PUSH1 0x20
00000104: DUP4
00000105: ADD
00000106: MSTORE
00000107: ADD
00000108: JUMPDEST
00000109: PUSH1 0x40
0000010b: MLOAD
0000010c: DUP1
0000010d: SWAP2
0000010e: SUB
0000010f: SWAP1
00000110: RETURN
00000111: JUMPDEST
00000112: PUSH2 0x00c8
00000115: PUSH2 0x011f
00000118: CALLDATASIZE
00000119: PUSH1 0x04
0000011b: PUSH2 0x0afd
0000011e: JUMP
0000011f: JUMPDEST
00000120: PUSH2 0x0293
00000123: JUMP
00000124: JUMPDEST
00000125: PUSH2 0x00c8
00000128: PUSH2 0x0406
0000012b: JUMP
0000012c: JUMPDEST
0000012d: PUSH2 0x00c8
00000130: PUSH2 0x0419
00000133: JUMP
00000134: JUMPDEST
00000135: PUSH2 0x0153
00000138: PUSH2 0x0142
0000013b: CALLDATASIZE
0000013c: PUSH1 0x04
0000013e: PUSH2 0x0ae2
00000141: JUMP
00000142: JUMPDEST
00000143: PUSH1 0x04
00000145: PUSH1 0x20
00000147: MSTORE
00000148: PUSH0
00000149: SWAP1
0000014a: DUP2
0000014b: MSTORE
0000014c: PUSH1 0x40
0000014e: SWAP1
0000014f: KECCAK256
00000150: SLOAD
00000151: DUP2
00000152: JUMP
00000153: JUMPDEST
00000154: PUSH1 0x40
00000156: MLOAD
00000157: SWAP1
00000158: DUP2
00000159: MSTORE
0000015a: PUSH1 0x20
0000015c: ADD
0000015d: PUSH2 0x0108
00000160: JUMP
00000161: JUMPDEST
00000162: PUSH0
00000163: SLOAD
00000164: PUSH1 0x01
00000166: PUSH1 0x01
00000168: PUSH1 0xa0
0000016a: SHL
0000016b: SUB
0000016c: AND
0000016d: JUMPDEST
0000016e: PUSH1 0x40
00000170: MLOAD
00000171: PUSH1 0x01
00000173: PUSH1 0x01
00000175: PUSH1 0xa0
00000177: SHL
00000178: SUB
00000179: SWAP1
0000017a: SWAP2
0000017b: AND
0000017c: DUP2
0000017d: MSTORE
0000017e: PUSH1 0x20
00000180: ADD
00000181: PUSH2 0x0108
00000184: JUMP
00000185: JUMPDEST
00000186: PUSH2 0x0153
00000189: PUSH2 0x0193
0000018c: CALLDATASIZE
0000018d: PUSH1 0x04
0000018f: PUSH2 0x0b3c
00000192: JUMP
00000193: JUMPDEST
00000194: PUSH1 0x05
00000196: PUSH1 0x20
00000198: SWAP1
00000199: DUP2
0000019a: MSTORE
0000019b: PUSH0
0000019c: SWAP3
0000019d: DUP4
0000019e: MSTORE
0000019f: PUSH1 0x40
000001a1: DUP1
000001a2: DUP5
000001a3: KECCAK256
000001a4: SWAP1
000001a5: SWAP2
000001a6: MSTORE
000001a7: SWAP1
000001a8: DUP3
000001a9: MSTORE
000001aa: SWAP1
000001ab: KECCAK256
000001ac: SLOAD
000001ad: DUP2
000001ae: JUMP
000001af: JUMPDEST
000001b0: PUSH2 0x00c8
000001b3: PUSH2 0x01bd
000001b6: CALLDATASIZE
000001b7: PUSH1 0x04
000001b9: PUSH2 0x0ae2
000001bc: JUMP
000001bd: JUMPDEST
000001be: PUSH2 0x045d
000001c1: JUMP
000001c2: JUMPDEST
000001c3: PUSH1 0x01
000001c5: SLOAD
000001c6: PUSH1 0x01
000001c8: PUSH1 0x01
000001ca: PUSH1 0xa0
000001cc: SHL
000001cd: SUB
000001ce: AND
000001cf: PUSH2 0x016d
000001d2: JUMP
000001d3: JUMPDEST
000001d4: PUSH2 0x00c8
000001d7: PUSH2 0x01e1
000001da: CALLDATASIZE
000001db: PUSH1 0x04
000001dd: PUSH2 0x0ae2
000001e0: JUMP
000001e1: JUMPDEST
000001e2: PUSH2 0x050f
000001e5: JUMP
000001e6: JUMPDEST
000001e7: PUSH2 0x00c8
000001ea: PUSH2 0x01f4
000001ed: CALLDATASIZE
000001ee: PUSH1 0x04
000001f0: PUSH2 0x0afd
000001f3: JUMP
000001f4: JUMPDEST
000001f5: PUSH2 0x057f
000001f8: JUMP
000001f9: JUMPDEST
000001fa: PUSH2 0x0201
000001fd: PUSH2 0x079f
00000200: JUMP
00000201: JUMPDEST
00000202: PUSH1 0x01
00000204: PUSH1 0x01
00000206: PUSH1 0xa0
00000208: SHL
00000209: SUB
0000020a: DUP3
0000020b: AND
0000020c: PUSH2 0x0228
0000020f: JUMPI
00000210: PUSH1 0x40
00000212: MLOAD
00000213: PUSH4 0xc61d2985
00000218: PUSH1 0xe0
0000021a: SHL
0000021b: DUP2
0000021c: MSTORE
0000021d: PUSH1 0x04
0000021f: ADD
00000220: PUSH1 0x40
00000222: MLOAD
00000223: DUP1
00000224: SWAP2
00000225: SUB
00000226: SWAP1
00000227: REVERT
00000228: JUMPDEST
00000229: PUSH1 0x01
0000022b: PUSH1 0x01
0000022d: PUSH1 0xa0
0000022f: SHL
00000230: SUB
00000231: DUP3
00000232: AND
00000233: PUSH0
00000234: SWAP1
00000235: DUP2
00000236: MSTORE
00000237: PUSH1 0x03
00000239: PUSH1 0x20
0000023b: MSTORE
0000023c: PUSH1 0x40
0000023e: SWAP1
0000023f: KECCAK256
00000240: DUP2
00000241: SWAP1
00000242: PUSH2 0x024b
00000245: DUP3
00000246: DUP3
00000247: PUSH2 0x0b80
0000024a: JUMP
0000024b: JUMPDEST
0000024c: SWAP1
0000024d: POP
0000024e: POP
0000024f: DUP2
00000250: PUSH1 0x01
00000252: PUSH1 0x01
00000254: PUSH1 0xa0
00000256: SHL
00000257: SUB
00000258: AND
00000259: PUSH32 0xfe57ba8a30e3ce0a471426cfec2ccdab2f7c7b516f9de8e5a8c8ace909dcfd03
0000027a: DUP3
0000027b: PUSH1 0x40
0000027d: MLOAD
0000027e: PUSH2 0x0287
00000281: SWAP2
00000282: SWAP1
00000283: PUSH2 0x0bc6
00000286: JUMP
00000287: JUMPDEST
00000288: PUSH1 0x40
0000028a: MLOAD
0000028b: DUP1
0000028c: SWAP2
0000028d: SUB
0000028e: SWAP1
0000028f: LOG2
00000290: POP
00000291: POP
00000292: JUMP
00000293: JUMPDEST
00000294: PUSH2 0x029b
00000297: PUSH2 0x07cb
0000029a: JUMP
0000029b: JUMPDEST
0000029c: DUP2
0000029d: PUSH0
0000029e: SUB
0000029f: PUSH2 0x02bb
000002a2: JUMPI
000002a3: PUSH1 0x40
000002a5: MLOAD
000002a6: PUSH4 0x12073f6d
000002ab: PUSH1 0xe2
000002ad: SHL
000002ae: DUP2
000002af: MSTORE
000002b0: PUSH1 0x04
000002b2: ADD
000002b3: PUSH1 0x40
000002b5: MLOAD
000002b6: DUP1
000002b7: SWAP2
000002b8: SUB
000002b9: SWAP1
000002ba: REVERT
000002bb: JUMPDEST
000002bc: CALLER
000002bd: PUSH0
000002be: SWAP1
000002bf: DUP2
000002c0: MSTORE
000002c1: PUSH1 0x05
000002c3: PUSH1 0x20
000002c5: SWAP1
000002c6: DUP2
000002c7: MSTORE
000002c8: PUSH1 0x40
000002ca: DUP1
000002cb: DUP4
000002cc: KECCAK256
000002cd: PUSH1 0x01
000002cf: PUSH1 0x01
000002d1: PUSH1 0xa0
000002d3: SHL
000002d4: SUB
000002d5: DUP8
000002d6: AND
000002d7: DUP5
000002d8: MSTORE
000002d9: SWAP1
000002da: SWAP2
000002db: MSTORE
000002dc: SWAP1
000002dd: KECCAK256
000002de: SLOAD
000002df: DUP3
000002e0: GT
000002e1: ISZERO
000002e2: PUSH2 0x02fe
000002e5: JUMPI
000002e6: PUSH1 0x40
000002e8: MLOAD
000002e9: PUSH4 0x2858f9ab
000002ee: PUSH1 0xe1
000002f0: SHL
000002f1: DUP2
000002f2: MSTORE
000002f3: PUSH1 0x04
000002f5: ADD
000002f6: PUSH1 0x40
000002f8: MLOAD
000002f9: DUP1
000002fa: SWAP2
000002fb: SUB
000002fc: SWAP1
000002fd: REVERT
000002fe: JUMPDEST
000002ff: PUSH1 0x01
00000301: PUSH1 0x01
00000303: PUSH1 0xa0
00000305: SHL
00000306: SUB
00000307: DUP2
00000308: AND
00000309: PUSH2 0x0325
0000030c: JUMPI
0000030d: PUSH1 0x40
0000030f: MLOAD
00000310: PUSH4 0xc61d2985
00000315: PUSH1 0xe0
00000317: SHL
00000318: DUP2
00000319: MSTORE
0000031a: PUSH1 0x04
0000031c: ADD
0000031d: PUSH1 0x40
0000031f: MLOAD
00000320: DUP1
00000321: SWAP2
00000322: SUB
00000323: SWAP1
00000324: REVERT
00000325: JUMPDEST
00000326: PUSH1 0x01
00000328: PUSH1 0x01
0000032a: PUSH1 0xa0
0000032c: SHL
0000032d: SUB
0000032e: DUP4
0000032f: AND
00000330: PUSH0
00000331: SWAP1
00000332: DUP2
00000333: MSTORE
00000334: PUSH1 0x03
00000336: PUSH1 0x20
00000338: MSTORE
00000339: PUSH1 0x40
0000033b: SWAP1
0000033c: KECCAK256
0000033d: SLOAD
0000033e: PUSH2 0x0100
00000341: SWAP1
00000342: DIV
00000343: PUSH1 0xff
00000345: AND
00000346: PUSH2 0x0372
00000349: JUMPI
0000034a: PUSH1 0x40
0000034c: MLOAD
0000034d: PUSH4 0x015e27a3
00000352: PUSH1 0xe0
00000354: SHL
00000355: DUP2
00000356: MSTORE
00000357: PUSH1 0x01
00000359: PUSH1 0x01
0000035b: PUSH1 0xa0
0000035d: SHL
0000035e: SUB
0000035f: DUP5
00000360: AND
00000361: PUSH1 0x04
00000363: DUP3
00000364: ADD
00000365: MSTORE
00000366: PUSH1 0x24
00000368: ADD
00000369: JUMPDEST
0000036a: PUSH1 0x40
0000036c: MLOAD
0000036d: DUP1
0000036e: SWAP2
0000036f: SUB
00000370: SWAP1
00000371: REVERT
00000372: JUMPDEST
00000373: PUSH1 0x01
00000375: PUSH1 0x01
00000377: PUSH1 0xa0
00000379: SHL
0000037a: SUB
0000037b: DUP4
0000037c: AND
0000037d: PUSH0
0000037e: DUP2
0000037f: DUP2
00000380: MSTORE
00000381: PUSH1 0x04
00000383: PUSH1 0x20
00000385: SWAP1
00000386: DUP2
00000387: MSTORE
00000388: PUSH1 0x40
0000038a: DUP1
0000038b: DUP4
0000038c: KECCAK256
0000038d: DUP1
0000038e: SLOAD
0000038f: DUP8
00000390: SWAP1
00000391: SUB
00000392: SWAP1
00000393: SSTORE
00000394: CALLER
00000395: DUP4
00000396: MSTORE
00000397: PUSH1 0x05
00000399: DUP3
0000039a: MSTORE
0000039b: DUP1
0000039c: DUP4
0000039d: KECCAK256
0000039e: DUP5
0000039f: DUP5
000003a0: MSTORE
000003a1: SWAP1
000003a2: SWAP2
000003a3: MSTORE
000003a4: SWAP1
000003a5: KECCAK256
000003a6: DUP1
000003a7: SLOAD
000003a8: DUP5
000003a9: SWAP1
000003aa: SUB
000003ab: SWAP1
000003ac: SSTORE
000003ad: PUSH2 0x03b7
000003b0: SWAP1
000003b1: DUP3
000003b2: DUP5
000003b3: PUSH2 0x07f3
000003b6: JUMP
000003b7: JUMPDEST
000003b8: PUSH1 0x40
000003ba: MLOAD
000003bb: DUP3
000003bc: DUP2
000003bd: MSTORE
000003be: CALLER
000003bf: SWAP1
000003c0: PUSH1 0x01
000003c2: PUSH1 0x01
000003c4: PUSH1 0xa0
000003c6: SHL
000003c7: SUB
000003c8: DUP6
000003c9: AND
000003ca: SWAP1
000003cb: PUSH32 0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb
000003ec: SWAP1
000003ed: PUSH1 0x20
000003ef: ADD
000003f0: PUSH1 0x40
000003f2: MLOAD
000003f3: DUP1
000003f4: SWAP2
000003f5: SUB
000003f6: SWAP1
000003f7: LOG3
000003f8: PUSH2 0x0401
000003fb: PUSH1 0x01
000003fd: PUSH1 0x02
000003ff: SSTORE
00000400: JUMP
00000401: JUMPDEST
00000402: POP
00000403: POP
00000404: POP
00000405: JUMP
00000406: JUMPDEST
00000407: PUSH2 0x040e
0000040a: PUSH2 0x079f
0000040d: JUMP
0000040e: JUMPDEST
0000040f: PUSH2 0x0417
00000412: PUSH0
00000413: PUSH2 0x0852
00000416: JUMP
00000417: JUMPDEST
00000418: JUMP
00000419: JUMPDEST
0000041a: PUSH1 0x01
0000041c: SLOAD
0000041d: CALLER
0000041e: SWAP1
0000041f: PUSH1 0x01
00000421: PUSH1 0x01
00000423: PUSH1 0xa0
00000425: SHL
00000426: SUB
00000427: AND
00000428: DUP2
00000429: EQ
0000042a: PUSH2 0x0451
0000042d: JUMPI
0000042e: PUSH1 0x40
00000430: MLOAD
00000431: PUSH4 0x118cdaa7
00000436: PUSH1 0xe0
00000438: SHL
00000439: DUP2
0000043a: MSTORE
0000043b: PUSH1 0x01
0000043d: PUSH1 0x01
0000043f: PUSH1 0xa0
00000441: SHL
00000442: SUB
00000443: DUP3
00000444: AND
00000445: PUSH1 0x04
00000447: DUP3
00000448: ADD
00000449: MSTORE
0000044a: PUSH1 0x24
0000044c: ADD
0000044d: PUSH2 0x0369
00000450: JUMP
00000451: JUMPDEST
00000452: PUSH2 0x045a
00000455: DUP2
00000456: PUSH2 0x0852
00000459: JUMP
0000045a: JUMPDEST
0000045b: POP
0000045c: JUMP
0000045d: JUMPDEST
0000045e: PUSH2 0x0465
00000461: PUSH2 0x079f
00000464: JUMP
00000465: JUMPDEST
00000466: PUSH2 0x045a
00000469: PUSH2 0x0479
0000046c: PUSH0
0000046d: SLOAD
0000046e: PUSH1 0x01
00000470: PUSH1 0x01
00000472: PUSH1 0xa0
00000474: SHL
00000475: SUB
00000476: AND
00000477: SWAP1
00000478: JUMP
00000479: JUMPDEST
0000047a: PUSH1 0x01
0000047c: PUSH1 0x01
0000047e: PUSH1 0xa0
00000480: SHL
00000481: SUB
00000482: DUP4
00000483: AND
00000484: PUSH0
00000485: DUP2
00000486: DUP2
00000487: MSTORE
00000488: PUSH1 0x04
0000048a: PUSH1 0x20
0000048c: DUP2
0000048d: SWAP1
0000048e: MSTORE
0000048f: PUSH1 0x40
00000491: SWAP2
00000492: DUP3
00000493: SWAP1
00000494: KECCAK256
00000495: SLOAD
00000496: SWAP2
00000497: MLOAD
00000498: PUSH4 0x70a08231
0000049d: PUSH1 0xe0
0000049f: SHL
000004a0: DUP2
000004a1: MSTORE
000004a2: ADDRESS
000004a3: SWAP2
000004a4: DUP2
000004a5: ADD
000004a6: SWAP2
000004a7: SWAP1
000004a8: SWAP2
000004a9: MSTORE
000004aa: SWAP1
000004ab: SWAP2
000004ac: SWAP1
000004ad: PUSH4 0x70a08231
000004b2: SWAP1
000004b3: PUSH1 0x24
000004b5: ADD
000004b6: PUSH1 0x20
000004b8: PUSH1 0x40
000004ba: MLOAD
000004bb: DUP1
000004bc: DUP4
000004bd: SUB
000004be: DUP2
000004bf: DUP7
000004c0: GAS
000004c1: STATICCALL
000004c2: ISZERO
000004c3: DUP1
000004c4: ISZERO
000004c5: PUSH2 0x04d0
000004c8: JUMPI
000004c9: RETURNDATASIZE
000004ca: PUSH0
000004cb: DUP1
000004cc: RETURNDATACOPY
000004cd: RETURNDATASIZE
000004ce: PUSH0
000004cf: REVERT
000004d0: JUMPDEST
000004d1: POP
000004d2: POP
000004d3: POP
000004d4: POP
000004d5: PUSH1 0x40
000004d7: MLOAD
000004d8: RETURNDATASIZE
000004d9: PUSH1 0x1f
000004db: NOT
000004dc: PUSH1 0x1f
000004de: DUP3
000004df: ADD
000004e0: AND
000004e1: DUP3
000004e2: ADD
000004e3: DUP1
000004e4: PUSH1 0x40
000004e6: MSTORE
000004e7: POP
000004e8: DUP2
000004e9: ADD
000004ea: SWAP1
000004eb: PUSH2 0x04f4
000004ee: SWAP2
000004ef: SWAP1
000004f0: PUSH2 0x0bf6
000004f3: JUMP
000004f4: JUMPDEST
000004f5: PUSH2 0x04fe
000004f8: SWAP2
000004f9: SWAP1
000004fa: PUSH2 0x0c21
000004fd: JUMP
000004fe: JUMPDEST
000004ff: PUSH1 0x01
00000501: PUSH1 0x01
00000503: PUSH1 0xa0
00000505: SHL
00000506: SUB
00000507: DUP5
00000508: AND
00000509: SWAP2
0000050a: SWAP1
0000050b: PUSH2 0x07f3
0000050e: JUMP
0000050f: JUMPDEST
00000510: PUSH2 0x0517
00000513: PUSH2 0x079f
00000516: JUMP
00000517: JUMPDEST
00000518: PUSH1 0x01
0000051a: DUP1
0000051b: SLOAD
0000051c: PUSH1 0x01
0000051e: PUSH1 0x01
00000520: PUSH1 0xa0
00000522: SHL
00000523: SUB
00000524: DUP4
00000525: AND
00000526: PUSH1 0x01
00000528: PUSH1 0x01
0000052a: PUSH1 0xa0
0000052c: SHL
0000052d: SUB
0000052e: NOT
0000052f: SWAP1
00000530: SWAP2
00000531: AND
00000532: DUP2
00000533: OR
00000534: SWAP1
00000535: SWAP2
00000536: SSTORE
00000537: PUSH2 0x0547
0000053a: PUSH0
0000053b: SLOAD
0000053c: PUSH1 0x01
0000053e: PUSH1 0x01
00000540: PUSH1 0xa0
00000542: SHL
00000543: SUB
00000544: AND
00000545: SWAP1
00000546: JUMP
00000547: JUMPDEST
00000548: PUSH1 0x01
0000054a: PUSH1 0x01
0000054c: PUSH1 0xa0
0000054e: SHL
0000054f: SUB
00000550: AND
00000551: PUSH32 0x38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700
00000572: PUSH1 0x40
00000574: MLOAD
00000575: PUSH1 0x40
00000577: MLOAD
00000578: DUP1
00000579: SWAP2
0000057a: SUB
0000057b: SWAP1
0000057c: LOG3
0000057d: POP
0000057e: JUMP
0000057f: JUMPDEST
00000580: PUSH2 0x0587
00000583: PUSH2 0x07cb
00000586: JUMP
00000587: JUMPDEST
00000588: DUP2
00000589: PUSH0
0000058a: SUB
0000058b: PUSH2 0x05a7
0000058e: JUMPI
0000058f: PUSH1 0x40
00000591: MLOAD
00000592: PUSH4 0x12073f6d
00000597: PUSH1 0xe2
00000599: SHL
0000059a: DUP2
0000059b: MSTORE
0000059c: PUSH1 0x04
0000059e: ADD
0000059f: PUSH1 0x40
000005a1: MLOAD
000005a2: DUP1
000005a3: SWAP2
000005a4: SUB
000005a5: SWAP1
000005a6: REVERT
000005a7: JUMPDEST
000005a8: PUSH1 0x01
000005aa: PUSH1 0x01
000005ac: PUSH1 0xa0
000005ae: SHL
000005af: SUB
000005b0: DUP2
000005b1: AND
000005b2: PUSH2 0x05ce
000005b5: JUMPI
000005b6: PUSH1 0x40
000005b8: MLOAD
000005b9: PUSH4 0xc61d2985
000005be: PUSH1 0xe0
000005c0: SHL
000005c1: DUP2
000005c2: MSTORE
000005c3: PUSH1 0x04
000005c5: ADD
000005c6: PUSH1 0x40
000005c8: MLOAD
000005c9: DUP1
000005ca: SWAP2
000005cb: SUB
000005cc: SWAP1
000005cd: REVERT
000005ce: JUMPDEST
000005cf: PUSH1 0x01
000005d1: PUSH1 0x01
000005d3: PUSH1 0xa0
000005d5: SHL
000005d6: SUB
000005d7: DUP4
000005d8: AND
000005d9: PUSH0
000005da: SWAP1
000005db: DUP2
000005dc: MSTORE
000005dd: PUSH1 0x03
000005df: PUSH1 0x20
000005e1: MSTORE
000005e2: PUSH1 0x40
000005e4: SWAP1
000005e5: KECCAK256
000005e6: SLOAD
000005e7: PUSH1 0xff
000005e9: AND
000005ea: PUSH2 0x0611
000005ed: JUMPI
000005ee: PUSH1 0x40
000005f0: MLOAD
000005f1: PUSH4 0x015e27a3
000005f6: PUSH1 0xe0
000005f8: SHL
000005f9: DUP2
000005fa: MSTORE
000005fb: PUSH1 0x01
000005fd: PUSH1 0x01
000005ff: PUSH1 0xa0
00000601: SHL
00000602: SUB
00000603: DUP5
00000604: AND
00000605: PUSH1 0x04
00000607: DUP3
00000608: ADD
00000609: MSTORE
0000060a: PUSH1 0x24
0000060c: ADD
0000060d: PUSH2 0x0369
00000610: JUMP
00000611: JUMPDEST
00000612: PUSH1 0x40
00000614: MLOAD
00000615: PUSH4 0x70a08231
0000061a: PUSH1 0xe0
0000061c: SHL
0000061d: DUP2
0000061e: MSTORE
0000061f: ADDRESS
00000620: PUSH1 0x04
00000622: DUP3
00000623: ADD
00000624: MSTORE
00000625: PUSH0
00000626: SWAP1
00000627: PUSH1 0x01
00000629: PUSH1 0x01
0000062b: PUSH1 0xa0
0000062d: SHL
0000062e: SUB
0000062f: DUP6
00000630: AND
00000631: SWAP1
00000632: PUSH4 0x70a08231
00000637: SWAP1
00000638: PUSH1 0x24
0000063a: ADD
0000063b: PUSH1 0x20
0000063d: PUSH1 0x40
0000063f: MLOAD
00000640: DUP1
00000641: DUP4
00000642: SUB
00000643: DUP2
00000644: DUP7
00000645: GAS
00000646: STATICCALL
00000647: ISZERO
00000648: DUP1
00000649: ISZERO
0000064a: PUSH2 0x0655
0000064d: JUMPI
0000064e: RETURNDATASIZE
0000064f: PUSH0
00000650: DUP1
00000651: RETURNDATACOPY
00000652: RETURNDATASIZE
00000653: PUSH0
00000654: REVERT
00000655: JUMPDEST
00000656: POP
00000657: POP
00000658: POP
00000659: POP
0000065a: PUSH1 0x40
0000065c: MLOAD
0000065d: RETURNDATASIZE
0000065e: PUSH1 0x1f
00000660: NOT
00000661: PUSH1 0x1f
00000663: DUP3
00000664: ADD
00000665: AND
00000666: DUP3
00000667: ADD
00000668: DUP1
00000669: PUSH1 0x40
0000066b: MSTORE
0000066c: POP
0000066d: DUP2
0000066e: ADD
0000066f: SWAP1
00000670: PUSH2 0x0679
00000673: SWAP2
00000674: SWAP1
00000675: PUSH2 0x0bf6
00000678: JUMP
00000679: JUMPDEST
0000067a: SWAP1
0000067b: POP
0000067c: PUSH2 0x0690
0000067f: PUSH1 0x01
00000681: PUSH1 0x01
00000683: PUSH1 0xa0
00000685: SHL
00000686: SUB
00000687: DUP6
00000688: AND
00000689: CALLER
0000068a: ADDRESS
0000068b: DUP7
0000068c: PUSH2 0x086b
0000068f: JUMP
00000690: JUMPDEST
00000691: PUSH1 0x40
00000693: MLOAD
00000694: PUSH4 0x70a08231
00000699: PUSH1 0xe0
0000069b: SHL
0000069c: DUP2
0000069d: MSTORE
0000069e: ADDRESS
0000069f: PUSH1 0x04
000006a1: DUP3
000006a2: ADD
000006a3: MSTORE
000006a4: DUP2
000006a5: SWAP1
000006a6: PUSH1 0x01
000006a8: PUSH1 0x01
000006aa: PUSH1 0xa0
000006ac: SHL
000006ad: SUB
000006ae: DUP7
000006af: AND
000006b0: SWAP1
000006b1: PUSH4 0x70a08231
000006b6: SWAP1
000006b7: PUSH1 0x24
000006b9: ADD
000006ba: PUSH1 0x20
000006bc: PUSH1 0x40
000006be: MLOAD
000006bf: DUP1
000006c0: DUP4
000006c1: SUB
000006c2: DUP2
000006c3: DUP7
000006c4: GAS
000006c5: STATICCALL
000006c6: ISZERO
000006c7: DUP1
000006c8: ISZERO
000006c9: PUSH2 0x06d4
000006cc: JUMPI
000006cd: RETURNDATASIZE
000006ce: PUSH0
000006cf: DUP1
000006d0: RETURNDATACOPY
000006d1: RETURNDATASIZE
000006d2: PUSH0
000006d3: REVERT
000006d4: JUMPDEST
000006d5: POP
000006d6: POP
000006d7: POP
000006d8: POP
000006d9: PUSH1 0x40
000006db: MLOAD
000006dc: RETURNDATASIZE
000006dd: PUSH1 0x1f
000006df: NOT
000006e0: PUSH1 0x1f
000006e2: DUP3
000006e3: ADD
000006e4: AND
000006e5: DUP3
000006e6: ADD
000006e7: DUP1
000006e8: PUSH1 0x40
000006ea: MSTORE
000006eb: POP
000006ec: DUP2
000006ed: ADD
000006ee: SWAP1
000006ef: PUSH2 0x06f8
000006f2: SWAP2
000006f3: SWAP1
000006f4: PUSH2 0x0bf6
000006f7: JUMP
000006f8: JUMPDEST
000006f9: PUSH2 0x0702
000006fc: SWAP2
000006fd: SWAP1
000006fe: PUSH2 0x0c21
00000701: JUMP
00000702: JUMPDEST
00000703: PUSH1 0x01
00000705: PUSH1 0x01
00000707: PUSH1 0xa0
00000709: SHL
0000070a: SUB
0000070b: DUP6
0000070c: AND
0000070d: PUSH0
0000070e: SWAP1
0000070f: DUP2
00000710: MSTORE
00000711: PUSH1 0x04
00000713: PUSH1 0x20
00000715: MSTORE
00000716: PUSH1 0x40
00000718: DUP2
00000719: KECCAK256
0000071a: DUP1
0000071b: SLOAD
0000071c: SWAP3
0000071d: SWAP6
0000071e: POP
0000071f: DUP6
00000720: SWAP3
00000721: SWAP1
00000722: SWAP2
00000723: SWAP1
00000724: PUSH2 0x072e
00000727: SWAP1
00000728: DUP5
00000729: SWAP1
0000072a: PUSH2 0x0c34
0000072d: JUMP
0000072e: JUMPDEST
0000072f: SWAP1
00000730: SWAP2
00000731: SSTORE
00000732: POP
00000733: POP
00000734: PUSH1 0x01
00000736: PUSH1 0x01
00000738: PUSH1 0xa0
0000073a: SHL
0000073b: SUB
0000073c: DUP3
0000073d: DUP2
0000073e: AND
0000073f: PUSH0
00000740: DUP2
00000741: DUP2
00000742: MSTORE
00000743: PUSH1 0x05
00000745: PUSH1 0x20
00000747: SWAP1
00000748: DUP2
00000749: MSTORE
0000074a: PUSH1 0x40
0000074c: DUP1
0000074d: DUP4
0000074e: KECCAK256
0000074f: SWAP5
00000750: DUP10
00000751: AND
00000752: DUP1
00000753: DUP5
00000754: MSTORE
00000755: SWAP5
00000756: DUP3
00000757: MSTORE
00000758: SWAP2
00000759: DUP3
0000075a: SWAP1
0000075b: KECCAK256
0000075c: DUP1
0000075d: SLOAD
0000075e: DUP9
0000075f: ADD
00000760: SWAP1
00000761: SSTORE
00000762: SWAP1
00000763: MLOAD
00000764: DUP7
00000765: DUP2
00000766: MSTORE
00000767: SWAP2
00000768: SWAP3
00000769: SWAP2
0000076a: PUSH32 0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62
0000078b: SWAP2
0000078c: ADD
0000078d: PUSH1 0x40
0000078f: MLOAD
00000790: DUP1
00000791: SWAP2
00000792: SUB
00000793: SWAP1
00000794: LOG3
00000795: POP
00000796: PUSH2 0x0401
00000799: PUSH1 0x01
0000079b: PUSH1 0x02
0000079d: SSTORE
0000079e: JUMP
0000079f: JUMPDEST
000007a0: PUSH0
000007a1: SLOAD
000007a2: PUSH1 0x01
000007a4: PUSH1 0x01
000007a6: PUSH1 0xa0
000007a8: SHL
000007a9: SUB
000007aa: AND
000007ab: CALLER
000007ac: EQ
000007ad: PUSH2 0x0417
000007b0: JUMPI
000007b1: PUSH1 0x40
000007b3: MLOAD
000007b4: PUSH4 0x118cdaa7
000007b9: PUSH1 0xe0
000007bb: SHL
000007bc: DUP2
000007bd: MSTORE
000007be: CALLER
000007bf: PUSH1 0x04
000007c1: DUP3
000007c2: ADD
000007c3: MSTORE
000007c4: PUSH1 0x24
000007c6: ADD
000007c7: PUSH2 0x0369
000007ca: JUMP
000007cb: JUMPDEST
000007cc: PUSH1 0x02
000007ce: DUP1
000007cf: SLOAD
000007d0: SUB
000007d1: PUSH2 0x07ed
000007d4: JUMPI
000007d5: PUSH1 0x40
000007d7: MLOAD
000007d8: PUSH4 0x3ee5aeb5
000007dd: PUSH1 0xe0
000007df: SHL
000007e0: DUP2
000007e1: MSTORE
000007e2: PUSH1 0x04
000007e4: ADD
000007e5: PUSH1 0x40
000007e7: MLOAD
000007e8: DUP1
000007e9: SWAP2
000007ea: SUB
000007eb: SWAP1
000007ec: REVERT
000007ed: JUMPDEST
000007ee: PUSH1 0x02
000007f0: DUP1
000007f1: SSTORE
000007f2: JUMP
000007f3: JUMPDEST
000007f4: PUSH1 0x40
000007f6: MLOAD
000007f7: PUSH1 0x01
000007f9: PUSH1 0x01
000007fb: PUSH1 0xa0
000007fd: SHL
000007fe: SUB
000007ff: DUP4
00000800: DUP2
00000801: AND
00000802: PUSH1 0x24
00000804: DUP4
00000805: ADD
00000806: MSTORE
00000807: PUSH1 0x44
00000809: DUP3
0000080a: ADD
0000080b: DUP4
0000080c: SWAP1
0000080d: MSTORE
0000080e: PUSH2 0x0401
00000811: SWAP2
00000812: DUP6
00000813: SWAP2
00000814: DUP3
00000815: AND
00000816: SWAP1
00000817: PUSH4 0xa9059cbb
0000081c: SWAP1
0000081d: PUSH1 0x64
0000081f: ADD
00000820: JUMPDEST
00000821: PUSH1 0x40
00000823: MLOAD
00000824: PUSH1 0x20
00000826: DUP2
00000827: DUP4
00000828: SUB
00000829: SUB
0000082a: DUP2
0000082b: MSTORE
0000082c: SWAP1
0000082d: PUSH1 0x40
0000082f: MSTORE
00000830: SWAP2
00000831: POP
00000832: PUSH1 0xe0
00000834: SHL
00000835: PUSH1 0x20
00000837: DUP3
00000838: ADD
00000839: DUP1
0000083a: MLOAD
0000083b: PUSH1 0x01
0000083d: PUSH1 0x01
0000083f: PUSH1 0xe0
00000841: SHL
00000842: SUB
00000843: DUP4
00000844: DUP2
00000845: DUP4
00000846: AND
00000847: OR
00000848: DUP4
00000849: MSTORE
0000084a: POP
0000084b: POP
0000084c: POP
0000084d: POP
0000084e: PUSH2 0x08aa
00000851: JUMP
00000852: JUMPDEST
00000853: PUSH1 0x01
00000855: DUP1
00000856: SLOAD
00000857: PUSH1 0x01
00000859: PUSH1 0x01
0000085b: PUSH1 0xa0
0000085d: SHL
0000085e: SUB
0000085f: NOT
00000860: AND
00000861: SWAP1
00000862: SSTORE
00000863: PUSH2 0x045a
00000866: DUP2
00000867: PUSH2 0x090b
0000086a: JUMP
0000086b: JUMPDEST
0000086c: PUSH1 0x40
0000086e: MLOAD
0000086f: PUSH1 0x01
00000871: PUSH1 0x01
00000873: PUSH1 0xa0
00000875: SHL
00000876: SUB
00000877: DUP5
00000878: DUP2
00000879: AND
0000087a: PUSH1 0x24
0000087c: DUP4
0000087d: ADD
0000087e: MSTORE
0000087f: DUP4
00000880: DUP2
00000881: AND
00000882: PUSH1 0x44
00000884: DUP4
00000885: ADD
00000886: MSTORE
00000887: PUSH1 0x64
00000889: DUP3
0000088a: ADD
0000088b: DUP4
0000088c: SWAP1
0000088d: MSTORE
0000088e: PUSH2 0x08a4
00000891: SWAP2
00000892: DUP7
00000893: SWAP2
00000894: DUP3
00000895: AND
00000896: SWAP1
00000897: PUSH4 0x23b872dd
0000089c: SWAP1
0000089d: PUSH1 0x84
0000089f: ADD
000008a0: PUSH2 0x0820
000008a3: JUMP
000008a4: JUMPDEST
000008a5: POP
000008a6: POP
000008a7: POP
000008a8: POP
000008a9: JUMP
000008aa: JUMPDEST
000008ab: PUSH0
000008ac: PUSH2 0x08be
000008af: PUSH1 0x01
000008b1: PUSH1 0x01
000008b3: PUSH1 0xa0
000008b5: SHL
000008b6: SUB
000008b7: DUP5
000008b8: AND
000008b9: DUP4
000008ba: PUSH2 0x095a
000008bd: JUMP
000008be: JUMPDEST
000008bf: SWAP1
000008c0: POP
000008c1: DUP1
000008c2: MLOAD
000008c3: PUSH0
000008c4: EQ
000008c5: ISZERO
000008c6: DUP1
000008c7: ISZERO
000008c8: PUSH2 0x08e2
000008cb: JUMPI
000008cc: POP
000008cd: DUP1
000008ce: DUP1
000008cf: PUSH1 0x20
000008d1: ADD
000008d2: SWAP1
000008d3: MLOAD
000008d4: DUP2
000008d5: ADD
000008d6: SWAP1
000008d7: PUSH2 0x08e0
000008da: SWAP2
000008db: SWAP1
000008dc: PUSH2 0x0c47
000008df: JUMP
000008e0: JUMPDEST
000008e1: ISZERO
000008e2: JUMPDEST
000008e3: ISZERO
000008e4: PUSH2 0x0401
000008e7: JUMPI
000008e8: PUSH1 0x40
000008ea: MLOAD
000008eb: PUSH4 0x5274afe7
000008f0: PUSH1 0xe0
000008f2: SHL
000008f3: DUP2
000008f4: MSTORE
000008f5: PUSH1 0x01
000008f7: PUSH1 0x01
000008f9: PUSH1 0xa0
000008fb: SHL
000008fc: SUB
000008fd: DUP5
000008fe: AND
000008ff: PUSH1 0x04
00000901: DUP3
00000902: ADD
00000903: MSTORE
00000904: PUSH1 0x24
00000906: ADD
00000907: PUSH2 0x0369
0000090a: JUMP
0000090b: JUMPDEST
0000090c: PUSH0
0000090d: DUP1
0000090e: SLOAD
0000090f: PUSH1 0x01
00000911: PUSH1 0x01
00000913: PUSH1 0xa0
00000915: SHL
00000916: SUB
00000917: DUP4
00000918: DUP2
00000919: AND
0000091a: PUSH1 0x01
0000091c: PUSH1 0x01
0000091e: PUSH1 0xa0
00000920: SHL
00000921: SUB
00000922: NOT
00000923: DUP4
00000924: AND
00000925: DUP2
00000926: OR
00000927: DUP5
00000928: SSTORE
00000929: PUSH1 0x40
0000092b: MLOAD
0000092c: SWAP2
0000092d: SWAP1
0000092e: SWAP3
0000092f: AND
00000930: SWAP3
00000931: DUP4
00000932: SWAP2
00000933: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000954: SWAP2
00000955: SWAP1
00000956: LOG3
00000957: POP
00000958: POP
00000959: JUMP
0000095a: JUMPDEST
0000095b: PUSH1 0x60
0000095d: PUSH2 0x0967
00000960: DUP4
00000961: DUP4
00000962: PUSH0
00000963: PUSH2 0x0970
00000966: JUMP
00000967: JUMPDEST
00000968: SWAP1
00000969: POP
0000096a: JUMPDEST
0000096b: SWAP3
0000096c: SWAP2
0000096d: POP
0000096e: POP
0000096f: JUMP
00000970: JUMPDEST
00000971: PUSH1 0x60
00000973: DUP2
00000974: SELFBALANCE
00000975: LT
00000976: ISZERO
00000977: PUSH2 0x0995
0000097a: JUMPI
0000097b: PUSH1 0x40
0000097d: MLOAD
0000097e: PUSH4 0xcd786059
00000983: PUSH1 0xe0
00000985: SHL
00000986: DUP2
00000987: MSTORE
00000988: ADDRESS
00000989: PUSH1 0x04
0000098b: DUP3
0000098c: ADD
0000098d: MSTORE
0000098e: PUSH1 0x24
00000990: ADD
00000991: PUSH2 0x0369
00000994: JUMP
00000995: JUMPDEST
00000996: PUSH0
00000997: DUP1
00000998: DUP6
00000999: PUSH1 0x01
0000099b: PUSH1 0x01
0000099d: PUSH1 0xa0
0000099f: SHL
000009a0: SUB
000009a1: AND
000009a2: DUP5
000009a3: DUP7
000009a4: PUSH1 0x40
000009a6: MLOAD
000009a7: PUSH2 0x09b0
000009aa: SWAP2
000009ab: SWAP1
000009ac: PUSH2 0x0c62
000009af: JUMP
000009b0: JUMPDEST
000009b1: PUSH0
000009b2: PUSH1 0x40
000009b4: MLOAD
000009b5: DUP1
000009b6: DUP4
000009b7: SUB
000009b8: DUP2
000009b9: DUP6
000009ba: DUP8
000009bb: GAS
000009bc: CALL
000009bd: SWAP3
000009be: POP
000009bf: POP
000009c0: POP
000009c1: RETURNDATASIZE
000009c2: DUP1
000009c3: PUSH0
000009c4: DUP2
000009c5: EQ
000009c6: PUSH2 0x09ea
000009c9: JUMPI
000009ca: PUSH1 0x40
000009cc: MLOAD
000009cd: SWAP2
000009ce: POP
000009cf: PUSH1 0x1f
000009d1: NOT
000009d2: PUSH1 0x3f
000009d4: RETURNDATASIZE
000009d5: ADD
000009d6: AND
000009d7: DUP3
000009d8: ADD
000009d9: PUSH1 0x40
000009db: MSTORE
000009dc: RETURNDATASIZE
000009dd: DUP3
000009de: MSTORE
000009df: RETURNDATASIZE
000009e0: PUSH0
000009e1: PUSH1 0x20
000009e3: DUP5
000009e4: ADD
000009e5: RETURNDATACOPY
000009e6: PUSH2 0x09ef
000009e9: JUMP
000009ea: JUMPDEST
000009eb: PUSH1 0x60
000009ed: SWAP2
000009ee: POP
000009ef: JUMPDEST
000009f0: POP
000009f1: SWAP2
000009f2: POP
000009f3: SWAP2
000009f4: POP
000009f5: PUSH2 0x09ff
000009f8: DUP7
000009f9: DUP4
000009fa: DUP4
000009fb: PUSH2 0x0a0b
000009fe: JUMP
000009ff: JUMPDEST
00000a00: SWAP3
00000a01: POP
00000a02: POP
00000a03: POP
00000a04: JUMPDEST
00000a05: SWAP4
00000a06: SWAP3
00000a07: POP
00000a08: POP
00000a09: POP
00000a0a: JUMP
00000a0b: JUMPDEST
00000a0c: PUSH1 0x60
00000a0e: DUP3
00000a0f: PUSH2 0x0a20
00000a12: JUMPI
00000a13: PUSH2 0x0a1b
00000a16: DUP3
00000a17: PUSH2 0x0a67
00000a1a: JUMP
00000a1b: JUMPDEST
00000a1c: PUSH2 0x0a04
00000a1f: JUMP
00000a20: JUMPDEST
00000a21: DUP2
00000a22: MLOAD
00000a23: ISZERO
00000a24: DUP1
00000a25: ISZERO
00000a26: PUSH2 0x0a37
00000a29: JUMPI
00000a2a: POP
00000a2b: PUSH1 0x01
00000a2d: PUSH1 0x01
00000a2f: PUSH1 0xa0
00000a31: SHL
00000a32: SUB
00000a33: DUP5
00000a34: AND
00000a35: EXTCODESIZE
00000a36: ISZERO
00000a37: JUMPDEST
00000a38: ISZERO
00000a39: PUSH2 0x0a60
00000a3c: JUMPI
00000a3d: PUSH1 0x40
00000a3f: MLOAD
00000a40: PUSH4 0x9996b315
00000a45: PUSH1 0xe0
00000a47: SHL
00000a48: DUP2
00000a49: MSTORE
00000a4a: PUSH1 0x01
00000a4c: PUSH1 0x01
00000a4e: PUSH1 0xa0
00000a50: SHL
00000a51: SUB
00000a52: DUP6
00000a53: AND
00000a54: PUSH1 0x04
00000a56: DUP3
00000a57: ADD
00000a58: MSTORE
00000a59: PUSH1 0x24
00000a5b: ADD
00000a5c: PUSH2 0x0369
00000a5f: JUMP
00000a60: JUMPDEST
00000a61: POP
00000a62: DUP1
00000a63: PUSH2 0x0a04
00000a66: JUMP
00000a67: JUMPDEST
00000a68: DUP1
00000a69: MLOAD
00000a6a: ISZERO
00000a6b: PUSH2 0x0a77
00000a6e: JUMPI
00000a6f: DUP1
00000a70: MLOAD
00000a71: DUP1
00000a72: DUP3
00000a73: PUSH1 0x20
00000a75: ADD
00000a76: REVERT
00000a77: JUMPDEST
00000a78: PUSH1 0x40
00000a7a: MLOAD
00000a7b: PUSH4 0x0a12f521
00000a80: PUSH1 0xe1
00000a82: SHL
00000a83: DUP2
00000a84: MSTORE
00000a85: PUSH1 0x04
00000a87: ADD
00000a88: PUSH1 0x40
00000a8a: MLOAD
00000a8b: DUP1
00000a8c: SWAP2
00000a8d: SUB
00000a8e: SWAP1
00000a8f: REVERT
00000a90: JUMPDEST
00000a91: PUSH1 0x01
00000a93: PUSH1 0x01
00000a95: PUSH1 0xa0
00000a97: SHL
00000a98: SUB
00000a99: DUP2
00000a9a: AND
00000a9b: DUP2
00000a9c: EQ
00000a9d: PUSH2 0x045a
00000aa0: JUMPI
00000aa1: PUSH0
00000aa2: DUP1
00000aa3: REVERT
00000aa4: JUMPDEST
00000aa5: PUSH0
00000aa6: DUP1
00000aa7: DUP3
00000aa8: DUP5
00000aa9: SUB
00000aaa: PUSH1 0x60
00000aac: DUP2
00000aad: SLT
00000aae: ISZERO
00000aaf: PUSH2 0x0ab6
00000ab2: JUMPI
00000ab3: PUSH0
00000ab4: DUP1
00000ab5: REVERT
00000ab6: JUMPDEST
00000ab7: DUP4
00000ab8: CALLDATALOAD
00000ab9: PUSH2 0x0ac1
00000abc: DUP2
00000abd: PUSH2 0x0a90
00000ac0: JUMP
00000ac1: JUMPDEST
00000ac2: SWAP3
00000ac3: POP
00000ac4: PUSH1 0x40
00000ac6: PUSH1 0x1f
00000ac8: NOT
00000ac9: DUP3
00000aca: ADD
00000acb: SLT
00000acc: ISZERO
00000acd: PUSH2 0x0ad4
00000ad0: JUMPI
00000ad1: PUSH0
00000ad2: DUP1
00000ad3: REVERT
00000ad4: JUMPDEST
00000ad5: POP
00000ad6: PUSH1 0x20
00000ad8: DUP4
00000ad9: ADD
00000ada: SWAP1
00000adb: POP
00000adc: SWAP3
00000add: POP
00000ade: SWAP3
00000adf: SWAP1
00000ae0: POP
00000ae1: JUMP
00000ae2: JUMPDEST
00000ae3: PUSH0
00000ae4: PUSH1 0x20
00000ae6: DUP3
00000ae7: DUP5
00000ae8: SUB
00000ae9: SLT
00000aea: ISZERO
00000aeb: PUSH2 0x0af2
00000aee: JUMPI
00000aef: PUSH0
00000af0: DUP1
00000af1: REVERT
00000af2: JUMPDEST
00000af3: DUP2
00000af4: CALLDATALOAD
00000af5: PUSH2 0x0a04
00000af8: DUP2
00000af9: PUSH2 0x0a90
00000afc: JUMP
00000afd: JUMPDEST
00000afe: PUSH0
00000aff: DUP1
00000b00: PUSH0
00000b01: PUSH1 0x60
00000b03: DUP5
00000b04: DUP7
00000b05: SUB
00000b06: SLT
00000b07: ISZERO
00000b08: PUSH2 0x0b0f
00000b0b: JUMPI
00000b0c: PUSH0
00000b0d: DUP1
00000b0e: REVERT
00000b0f: JUMPDEST
00000b10: DUP4
00000b11: CALLDATALOAD
00000b12: PUSH2 0x0b1a
00000b15: DUP2
00000b16: PUSH2 0x0a90
00000b19: JUMP
00000b1a: JUMPDEST
00000b1b: SWAP3
00000b1c: POP
00000b1d: PUSH1 0x20
00000b1f: DUP5
00000b20: ADD
00000b21: CALLDATALOAD
00000b22: SWAP2
00000b23: POP
00000b24: PUSH1 0x40
00000b26: DUP5
00000b27: ADD
00000b28: CALLDATALOAD
00000b29: PUSH2 0x0b31
00000b2c: DUP2
00000b2d: PUSH2 0x0a90
00000b30: JUMP
00000b31: JUMPDEST
00000b32: DUP1
00000b33: SWAP2
00000b34: POP
00000b35: POP
00000b36: SWAP3
00000b37: POP
00000b38: SWAP3
00000b39: POP
00000b3a: SWAP3
00000b3b: JUMP
00000b3c: JUMPDEST
00000b3d: PUSH0
00000b3e: DUP1
00000b3f: PUSH1 0x40
00000b41: DUP4
00000b42: DUP6
00000b43: SUB
00000b44: SLT
00000b45: ISZERO
00000b46: PUSH2 0x0b4d
00000b49: JUMPI
00000b4a: PUSH0
00000b4b: DUP1
00000b4c: REVERT
00000b4d: JUMPDEST
00000b4e: DUP3
00000b4f: CALLDATALOAD
00000b50: PUSH2 0x0b58
00000b53: DUP2
00000b54: PUSH2 0x0a90
00000b57: JUMP
00000b58: JUMPDEST
00000b59: SWAP2
00000b5a: POP
00000b5b: PUSH1 0x20
00000b5d: DUP4
00000b5e: ADD
00000b5f: CALLDATALOAD
00000b60: PUSH2 0x0b68
00000b63: DUP2
00000b64: PUSH2 0x0a90
00000b67: JUMP
00000b68: JUMPDEST
00000b69: DUP1
00000b6a: SWAP2
00000b6b: POP
00000b6c: POP
00000b6d: SWAP3
00000b6e: POP
00000b6f: SWAP3
00000b70: SWAP1
00000b71: POP
00000b72: JUMP
00000b73: JUMPDEST
00000b74: DUP1
00000b75: ISZERO
00000b76: ISZERO
00000b77: DUP2
00000b78: EQ
00000b79: PUSH2 0x045a
00000b7c: JUMPI
00000b7d: PUSH0
00000b7e: DUP1
00000b7f: REVERT
00000b80: JUMPDEST
00000b81: DUP2
00000b82: CALLDATALOAD
00000b83: PUSH2 0x0b8b
00000b86: DUP2
00000b87: PUSH2 0x0b73
00000b8a: JUMP
00000b8b: JUMPDEST
00000b8c: DUP2
00000b8d: SLOAD
00000b8e: PUSH1 0xff
00000b90: NOT
00000b91: DUP2
00000b92: AND
00000b93: SWAP2
00000b94: ISZERO
00000b95: ISZERO
00000b96: PUSH1 0xff
00000b98: AND
00000b99: SWAP2
00000b9a: DUP3
00000b9b: OR
00000b9c: DUP4
00000b9d: SSTORE
00000b9e: PUSH1 0x20
00000ba0: DUP5
00000ba1: ADD
00000ba2: CALLDATALOAD
00000ba3: PUSH2 0x0bab
00000ba6: DUP2
00000ba7: PUSH2 0x0b73
00000baa: JUMP
00000bab: JUMPDEST
00000bac: PUSH2 0xffff
00000baf: NOT
00000bb0: SWAP2
00000bb1: SWAP1
00000bb2: SWAP2
00000bb3: AND
00000bb4: SWAP1
00000bb5: SWAP2
00000bb6: OR
00000bb7: SWAP1
00000bb8: ISZERO
00000bb9: ISZERO
00000bba: PUSH1 0x08
00000bbc: SHL
00000bbd: PUSH2 0xff00
00000bc0: AND
00000bc1: OR
00000bc2: SWAP1
00000bc3: SSTORE
00000bc4: POP
00000bc5: JUMP
00000bc6: JUMPDEST
00000bc7: PUSH1 0x40
00000bc9: DUP2
00000bca: ADD
00000bcb: DUP3
00000bcc: CALLDATALOAD
00000bcd: PUSH2 0x0bd5
00000bd0: DUP2
00000bd1: PUSH2 0x0b73
00000bd4: JUMP
00000bd5: JUMPDEST
00000bd6: ISZERO
00000bd7: ISZERO
00000bd8: DUP3
00000bd9: MSTORE
00000bda: PUSH1 0x20
00000bdc: DUP4
00000bdd: ADD
00000bde: CALLDATALOAD
00000bdf: PUSH2 0x0be7
00000be2: DUP2
00000be3: PUSH2 0x0b73
00000be6: JUMP
00000be7: JUMPDEST
00000be8: DUP1
00000be9: ISZERO
00000bea: ISZERO
00000beb: PUSH1 0x20
00000bed: DUP5
00000bee: ADD
00000bef: MSTORE
00000bf0: POP
00000bf1: SWAP3
00000bf2: SWAP2
00000bf3: POP
00000bf4: POP
00000bf5: JUMP
00000bf6: JUMPDEST
00000bf7: PUSH0
00000bf8: PUSH1 0x20
00000bfa: DUP3
00000bfb: DUP5
00000bfc: SUB
00000bfd: SLT
00000bfe: ISZERO
00000bff: PUSH2 0x0c06
00000c02: JUMPI
00000c03: PUSH0
00000c04: DUP1
00000c05: REVERT
00000c06: JUMPDEST
00000c07: POP
00000c08: MLOAD
00000c09: SWAP2
00000c0a: SWAP1
00000c0b: POP
00000c0c: JUMP
00000c0d: JUMPDEST
00000c0e: PUSH4 0x4e487b71
00000c13: PUSH1 0xe0
00000c15: SHL
00000c16: PUSH0
00000c17: MSTORE
00000c18: PUSH1 0x11
00000c1a: PUSH1 0x04
00000c1c: MSTORE
00000c1d: PUSH1 0x24
00000c1f: PUSH0
00000c20: REVERT
00000c21: JUMPDEST
00000c22: DUP2
00000c23: DUP2
00000c24: SUB
00000c25: DUP2
00000c26: DUP2
00000c27: GT
00000c28: ISZERO
00000c29: PUSH2 0x096a
00000c2c: JUMPI
00000c2d: PUSH2 0x096a
00000c30: PUSH2 0x0c0d
00000c33: JUMP
00000c34: JUMPDEST
00000c35: DUP1
00000c36: DUP3
00000c37: ADD
00000c38: DUP1
00000c39: DUP3
00000c3a: GT
00000c3b: ISZERO
00000c3c: PUSH2 0x096a
00000c3f: JUMPI
00000c40: PUSH2 0x096a
00000c43: PUSH2 0x0c0d
00000c46: JUMP
00000c47: JUMPDEST
00000c48: PUSH0
00000c49: PUSH1 0x20
00000c4b: DUP3
00000c4c: DUP5
00000c4d: SUB
00000c4e: SLT
00000c4f: ISZERO
00000c50: PUSH2 0x0c57
00000c53: JUMPI
00000c54: PUSH0
00000c55: DUP1
00000c56: REVERT
00000c57: JUMPDEST
00000c58: DUP2
00000c59: MLOAD
00000c5a: PUSH2 0x0a04
00000c5d: DUP2
00000c5e: PUSH2 0x0b73
00000c61: JUMP
00000c62: JUMPDEST
00000c63: PUSH0
00000c64: DUP3
00000c65: MLOAD
00000c66: PUSH0
00000c67: JUMPDEST
00000c68: DUP2
00000c69: DUP2
00000c6a: LT
00000c6b: ISZERO
00000c6c: PUSH2 0x0c81
00000c6f: JUMPI
00000c70: PUSH1 0x20
00000c72: DUP2
00000c73: DUP7
00000c74: ADD
00000c75: DUP2
00000c76: ADD
00000c77: MLOAD
00000c78: DUP6
00000c79: DUP4
00000c7a: ADD
00000c7b: MSTORE
00000c7c: ADD
00000c7d: PUSH2 0x0c67
00000c80: JUMP
00000c81: JUMPDEST
00000c82: POP
00000c83: PUSH0
00000c84: SWAP3
00000c85: ADD
00000c86: SWAP2
00000c87: DUP3
00000c88: MSTORE
00000c89: POP
00000c8a: SWAP2
00000c8b: SWAP1
00000c8c: POP
00000c8d: JUMP
00000c8e: INVALID
00000c8f: LOG2
00000c90: PUSH5 0x6970667358
00000c96: UNKNOWN(0x22)
00000c97: SLT
00000c98: KECCAK256
00000c99: UNKNOWN(0xCF)
00000c9a: UNKNOWN(0xA8)
00000c9b: UNKNOWN(0xDD)
00000c9c: BLOBBASEFEE
00000c9d: UNKNOWN(0xC9)
00000c9e: INVALID
00000c9f: GASPRICE
00000ca0: UNKNOWN(0xCD)
00000ca1: BALANCE
00000ca2: UNKNOWN(0x29)
00000ca3: BLOBHASH
00000ca4: UNKNOWN(0x0F)
00000ca5: UNKNOWN(0xA7)
00000ca6: TIMESTAMP
00000ca7: UNKNOWN(0xC7)
00000ca8: UNKNOWN(0xD7)
00000ca9: DUP9
00000caa: UNKNOWN(0xA9)
00000cab: SWAP7
00000cac: EXTCODEHASH
00000cad: UNKNOWN(0xB9)
00000cae: UNKNOWN(0xFC)
00000caf: SWAP10
00000cb0: NOT
00000cb1: UNKNOWN(0xBC)
00000cb2: SWAP5
00000cb3: UNKNOWN(0xED)
00000cb4: CALL
00000cb5: EXTCODEHASH
00000cb6: SWAP10
00000cb7: DIFFICULTY
00000cb8: SWAP8
00000cb9: PUSH5 0x736f6c6343
00000cbf: STOP
00000cc0: ADDMOD
00000cc1: OR
00000cc2: STOP
00000cc3: CALLER

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x080f6abf9ddc6c057cdcc7b6bc61ad584af18f66ba46da7197d88a2ba1b203c4
call_targets: 0x38d43a6cb8da0e855a42fb6b0733a0498531d774
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x080f6abf9ddc6c057cdcc7b6bc61ad584af18f66ba46da7197d88a2ba1b203c4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x38d43a6cb8da0e855a42fb6b0733a0498531d774"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa4560996",
            "selector": "0xa4560996",
            "calldata_variants": [
                "0xa4560996",
                "0xa45609960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xccec3716",
            "selector": "0xccec3716",
            "calldata_variants": [
                "0xccec3716",
                "0xccec37160000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30c3978",
            "selector": "0xe30c3978",
            "calldata_variants": [
                "0xe30c3978",
                "0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf45346dc",
            "selector": "0xf45346dc",
            "calldata_variants": [
                "0xf45346dc",
                "0xf45346dc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3e82e419",
            "selector": "0x3e82e419",
            "calldata_variants": [
                "0x3e82e419",
                "0x3e82e4190000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x68c4ac26",
            "selector": "0x68c4ac26",
            "calldata_variants": [
                "0x68c4ac26",
                "0x68c4ac260000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2492,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3252,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 2,
    "guards_detected": [],
    "untrusted_call_count": 2
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x080f6abf9ddc6c057cdcc7b6bc61ad584af18f66ba46da7197d88a2ba1b203c4
call_targets: 0x38d43a6cb8da0e855a42fb6b0733a0498531d774
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x080f6abf9ddc6c057cdcc7b6bc61ad584af18f66ba46da7197d88a2ba1b203c4",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x38d43a6cb8da0e855a42fb6b0733a0498531d774"
    ],
    "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": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa4560996",
            "selector": "0xa4560996",
            "calldata_variants": [
                "0xa4560996",
                "0xa45609960000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xccec3716",
            "selector": "0xccec3716",
            "calldata_variants": [
                "0xccec3716",
                "0xccec37160000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe30c3978",
            "selector": "0xe30c3978",
            "calldata_variants": [
                "0xe30c3978",
                "0xe30c39780000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf45346dc",
            "selector": "0xf45346dc",
            "calldata_variants": [
                "0xf45346dc",
                "0xf45346dc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3e82e419",
            "selector": "0x3e82e419",
            "calldata_variants": [
                "0x3e82e419",
                "0x3e82e4190000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x68c4ac26",
            "selector": "0x68c4ac26",
            "calldata_variants": [
                "0x68c4ac26",
                "0x68c4ac260000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2492,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3252,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 2,
    "guards_detected": []
}
medium math codex Fee-on-transfer/rebasing tokens can desync accounting and make withdrawals insolvent 75 no
view
evidence_json
{
    "evidence": "`deposit` adjusts `_amount` based on balance delta for deflationary tokens, but `withdraw` and `rescueERC20` decrement internal balances by the requested amount without considering transfer fees or balance changes outside the contract, allowing `totalStakedBalance` to exceed actual token balance.",
    "locations": [
        "contracts/src/SimpleStakingERC20.sol:52",
        "contracts/src/SimpleStakingERC20.sol:66",
        "contracts/src/SimpleStakingERC20.sol:80"
    ],
    "recommendation": "If fee-on-transfer or rebasing tokens are intended to be supported, update accounting on withdrawal/rescue using balance-before/after deltas and ensure `totalStakedBalance` matches the actual balance change. Alternatively, explicitly reject such tokens (e.g., require `balanceAfter == balanceBefore - amount` on withdrawals/rescues) and document the limitation in `supportToken`.",
    "exploit_scenario": "If the owner supports a token that charges transfer fees or rebases, deposits are credited by the actual received amount, but withdrawals and rescue transfers debit internal balances by the requested amount only. For a fee-on-transfer token, each withdrawal reduces the contract\u2019s real balance by more than `_amount` (fee is taken from the contract), while `totalStakedBalance` is reduced by exactly `_amount`. Over time the contract becomes undercollateralized and later withdrawals revert or cannot be fully honored. If a small excess exists, calling `rescueERC20` can also burn into staked funds due to transfer fees, accelerating insolvency. A malicious fee-collector token could profit from this undercollateralization."
}