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

Analysis Run

019c0ea9-09c2-7372-be3e-5cedc6bce266

complete
Chain ID
1
Address
Block Number
Created
Fri, Jan 30, 2026 11:28 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Bytecode only
Review Backing
Present
Best current signal
Authorization based on tx.origin
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
42166 artifact.fetch complete 1 / 3 2 months ago
42167 proxy.resolve complete 1 / 3 2 months ago
42168 tool.cast_disasm complete 1 / 3 2 months ago
42169 analysis.bundle complete 1 / 3 2 months ago
42170 capability.graph complete 1 / 3 2 months ago
42171 detector.run complete 1 / 3 2 months ago
42172 validation.fork complete 1 / 3 2 months ago
42477 report.consolidate complete 1 / 6 2 months ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Bytecode analysis shows tx.origin-based authorization checks and multiple external CALL sites with computed target/value; some risk depends on how inputs are constrained, which is unclear from bytecode-only evidence.
View stdout
{"no_findings":false,"summary":"Bytecode analysis shows tx.origin-based authorization checks and multiple external CALL sites with computed target/value; some risk depends on how inputs are constrained, which is unclear from bytecode-only evidence.","findings":[{"severity":"high","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"If privileged paths rely on tx.origin, a phishing contract can trick a user into calling it; the phishing contract then calls this contract so tx.origin remains the user and any tx.origin check passes, enabling unauthorized privileged actions.","recommendation":"Replace tx.origin checks with msg.sender-based access control (owner/role mappings) and explicit authorization logic. If EOAs must be enforced, use EIP-1271/EIP-712 or a dedicated allowlist instead of tx.origin.","evidence":"Detector flagged multiple tx.origin guards in the control flow.","locations":["pc:143","pc:165","pc:190","pc:216","pc:246","pc:747","pc:769","pc:820","pc:850","pc:1231","pc:1253","pc:1304","pc:1334","pc:2104","pc:2126"]},{"severity":"low","category":"other","title":"External CALLs with computed target/value (potentially user-controlled)","exploit_scenario":"Several CALL sites use computed targets and values. If any of these are derived from calldata or mutable storage without strict validation, an attacker could redirect calls to arbitrary addresses, transfer ETH, or trigger reentrant behavior in an unexpected external contract. Bytecode-only evidence cannot confirm whether targets are fixed or validated.","recommendation":"Restrict call targets via allowlists, validate calldata-derived addresses/values, and follow checks-effects-interactions (or add reentrancy guards) around external calls that can send value.","evidence":"Detector evidence shows CALL opcodes with computed target/value; validation trace saw a constant target in one run but does not prove all paths are constant or validated.","locations":["pc:381","pc:684","pc:976","pc:1621","pc:1916","pc:2228","pc:2419","pc:2689"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-dgxlosdp
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0f95-9044-71a2-ae94-3baa235a47ef
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.

Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".

Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers
exec
/bin/bash -lc ls in /tmp/codex-dgxlosdp succeeded in 6ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat /tmp/codex-dgxlosdp/BYTECODE_BUNDLE.json' in /tmp/codex-dgxlosdp succeeded in 7ms:
{
  "analysis_artifact": {
    "address": "0x9dc55070584ca0a58cdfe98eeb32b9a48dc9885c",
    "artifact_hash": "0xcbfc0821740a24f8f579dbe0ed123a78eb501aefc5cc3b3b1e9a07915c066590",
    "artifact_json": {
      "auth": {
        "guards": [
          {
            "pc": 165,
            "type": "tx_origin_used"
          },
          {
            "pc": 190,
            "type": "tx_origin_used"
          },
          {
            "pc": 216,
            "type": "tx_origin_used"
          },
          {
codex
{"no_findings":false,"summary":"Bytecode analysis shows tx.origin-based authorization checks and multiple external CALL sites with computed target/value; some risk depends on how inputs are constrained, which is unclear from bytecode-only evidence.","findings":[{"severity":"high","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"If privileged paths rely on tx.origin, a phishing contract can trick a user into calling it; the phishing contract then calls this contract so tx.origin remains the user and any tx.origin check passes, enabling unauthorized privileged actions.","recommendation":"Replace tx.origin checks with msg.sender-based access control (owner/role mappings) and explicit authorization logic. If EOAs must be enforced, use EIP-1271/EIP-712 or a dedicated allowlist instead of tx.origin.","evidence":"Detector flagged multiple tx.origin guards in the control flow.","locations":["pc:143","pc:165","pc:190","pc:216","pc:246","pc:747","pc:769","pc:820","pc:850","pc:1231","pc:1253","pc:1304","pc:1334","pc:2104","pc:2126"]},{"severity":"low","category":"other","title":"External CALLs with computed target/value (potentially user-controlled)","exploit_scenario":"Several CALL sites use computed targets and values. If any of these are derived from calldata or mutable storage without strict validation, an attacker could redirect calls to arbitrary addresses, transfer ETH, or trigger reentrant behavior in an unexpected external contract. Bytecode-only evidence cannot confirm whether targets are fixed or validated.","recommendation":"Restrict call targets via allowlists, validate calldata-derived addresses/values, and follow checks-effects-interactions (or add reentrancy guards) around external calls that can send value.","evidence":"Detector evidence shows CALL opcodes with computed target/value; validation trace saw a constant target in one run but does not prove all paths are constant or validated.","locations":["pc:381","pc:684","pc:976","pc:1621","pc:1916","pc:2228","pc:2419","pc:2689"]}]}
tokens used
15,979
Metadata
{
    "codex": {
        "ran_at": "2026-01-30T15:47:11.859597+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "bytecode",
        "bytecode_length": 8718,
        "bytecode_truncated": false,
        "capability_graph_present": true,
        "analysis_artifact_present": true
    },
    "summary": "Bytecode analysis shows tx.origin-based authorization checks and multiple external CALL sites with computed target/value; some risk depends on how inputs are constrained, which is unclear from bytecode-only evidence.",
    "raw_final": {
        "summary": "Bytecode analysis shows tx.origin-based authorization checks and multiple external CALL sites with computed target/value; some risk depends on how inputs are constrained, which is unclear from bytecode-only evidence.",
        "findings": [
            {
                "title": "Authorization uses tx.origin",
                "category": "auth",
                "evidence": "Detector flagged multiple tx.origin guards in the control flow.",
                "severity": "high",
                "locations": [
                    "pc:143",
                    "pc:165",
                    "pc:190",
                    "pc:216",
                    "pc:246",
                    "pc:747",
                    "pc:769",
                    "pc:820",
                    "pc:850",
                    "pc:1231",
                    "pc:1253",
                    "pc:1304",
                    "pc:1334",
                    "pc:2104",
                    "pc:2126"
                ],
                "recommendation": "Replace tx.origin checks with msg.sender-based access control (owner/role mappings) and explicit authorization logic. If EOAs must be enforced, use EIP-1271/EIP-712 or a dedicated allowlist instead of tx.origin.",
                "exploit_scenario": "If privileged paths rely on tx.origin, a phishing contract can trick a user into calling it; the phishing contract then calls this contract so tx.origin remains the user and any tx.origin check passes, enabling unauthorized privileged actions."
            },
            {
                "title": "External CALLs with computed target/value (potentially user-controlled)",
                "category": "other",
                "evidence": "Detector evidence shows CALL opcodes with computed target/value; validation trace saw a constant target in one run but does not prove all paths are constant or validated.",
                "severity": "low",
                "locations": [
                    "pc:381",
                    "pc:684",
                    "pc:976",
                    "pc:1621",
                    "pc:1916",
                    "pc:2228",
                    "pc:2419",
                    "pc:2689"
                ],
                "recommendation": "Restrict call targets via allowlists, validate calldata-derived addresses/values, and follow checks-effects-interactions (or add reentrancy guards) around external calls that can send value.",
                "exploit_scenario": "Several CALL sites use computed targets and values. If any of these are derived from calldata or mutable storage without strict validation, an attacker could redirect calls to arbitrary addresses, transfer ETH, or trigger reentrant behavior in an unexpected external contract. Bytecode-only evidence cannot confirm whether targets are fixed or validated."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
14
EXT*/BALANCE
14
Total opcodes
2728
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x0034
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x52d11238
00000019: EQ
0000001a: PUSH2 0x0039
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0x89b09de7
00000024: EQ
00000025: PUSH2 0x005b
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa70c1aba
0000002f: EQ
00000030: PUSH2 0x007b
00000033: JUMPI
00000034: JUMPDEST
00000035: PUSH1 0x00
00000037: DUP1
00000038: REVERT
00000039: JUMPDEST
0000003a: CALLVALUE
0000003b: DUP1
0000003c: ISZERO
0000003d: PUSH2 0x0045
00000040: JUMPI
00000041: PUSH1 0x00
00000043: DUP1
00000044: REVERT
00000045: JUMPDEST
00000046: POP
00000047: PUSH2 0x0059
0000004a: PUSH2 0x0054
0000004d: CALLDATASIZE
0000004e: PUSH1 0x04
00000050: PUSH2 0x0ce8
00000053: JUMP
00000054: JUMPDEST
00000055: PUSH2 0x008e
00000058: JUMP
00000059: JUMPDEST
0000005a: STOP
0000005b: JUMPDEST
0000005c: CALLVALUE
0000005d: DUP1
0000005e: ISZERO
0000005f: PUSH2 0x0067
00000062: JUMPI
00000063: PUSH1 0x00
00000065: DUP1
00000066: REVERT
00000067: JUMPDEST
00000068: POP
00000069: PUSH2 0x0059
0000006c: PUSH2 0x0076
0000006f: CALLDATASIZE
00000070: PUSH1 0x04
00000072: PUSH2 0x0ce8
00000075: JUMP
00000076: JUMPDEST
00000077: PUSH2 0x02ea
0000007a: JUMP
0000007b: JUMPDEST
0000007c: PUSH2 0x0059
0000007f: PUSH2 0x0089
00000082: CALLDATASIZE
00000083: PUSH1 0x04
00000085: PUSH2 0x0d0e
00000088: JUMP
00000089: JUMPDEST
0000008a: PUSH2 0x04ce
0000008d: JUMP
0000008e: JUMPDEST
0000008f: ORIGIN
00000090: PUSH20 0x8888888888e9997e64793849389a8faf5e8e547c
000000a5: EQ
000000a6: DUP1
000000a7: PUSH2 0x00bf
000000aa: JUMPI
000000ab: POP
000000ac: ORIGIN
000000ad: PUSH16 0x2fcecf3bc87acc58802cdb526c4f019d
000000be: EQ
000000bf: JUMPDEST
000000c0: DUP1
000000c1: PUSH2 0x00d9
000000c4: JUMPI
000000c5: POP
000000c6: ORIGIN
000000c7: PUSH16 0x60500bbe9c1364a558c70941ccb52422
000000d8: EQ
000000d9: JUMPDEST
000000da: DUP1
000000db: PUSH2 0x00f7
000000de: JUMPI
000000df: POP
000000e0: ORIGIN
000000e1: PUSH20 0x68cf50fe8348bb714c3c75370a43843d94a4b3da
000000f6: EQ
000000f7: JUMPDEST
000000f8: PUSH2 0x011c
000000fb: JUMPI
000000fc: PUSH1 0x40
000000fe: MLOAD
000000ff: PUSH3 0x461bcd
00000103: PUSH1 0xe5
00000105: SHL
00000106: DUP2
00000107: MSTORE
00000108: PUSH1 0x04
0000010a: ADD
0000010b: PUSH2 0x0113
0000010e: SWAP1
0000010f: PUSH2 0x0f40
00000112: JUMP
00000113: JUMPDEST
00000114: PUSH1 0x40
00000116: MLOAD
00000117: DUP1
00000118: SWAP2
00000119: SUB
0000011a: SWAP1
0000011b: REVERT
0000011c: JUMPDEST
0000011d: PUSH1 0x40
0000011f: MLOAD
00000120: PUSH4 0x095ea7b3
00000125: PUSH1 0xe0
00000127: SHL
00000128: DUP2
00000129: MSTORE
0000012a: PUSH1 0x01
0000012c: PUSH1 0x01
0000012e: PUSH1 0xa0
00000130: SHL
00000131: SUB
00000132: DUP3
00000133: AND
00000134: SWAP1
00000135: PUSH4 0x095ea7b3
0000013a: SWAP1
0000013b: PUSH2 0x0160
0000013e: SWAP1
0000013f: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
00000154: SWAP1
00000155: PUSH1 0x00
00000157: NOT
00000158: SWAP1
00000159: PUSH1 0x04
0000015b: ADD
0000015c: PUSH2 0x0f25
0000015f: JUMP
00000160: JUMPDEST
00000161: PUSH1 0x20
00000163: PUSH1 0x40
00000165: MLOAD
00000166: DUP1
00000167: DUP4
00000168: SUB
00000169: DUP2
0000016a: PUSH1 0x00
0000016c: DUP8
0000016d: DUP1
0000016e: EXTCODESIZE
0000016f: ISZERO
00000170: DUP1
00000171: ISZERO
00000172: PUSH2 0x017a
00000175: JUMPI
00000176: PUSH1 0x00
00000178: DUP1
00000179: REVERT
0000017a: JUMPDEST
0000017b: POP
0000017c: GAS
0000017d: CALL
0000017e: ISZERO
0000017f: DUP1
00000180: ISZERO
00000181: PUSH2 0x018e
00000184: JUMPI
00000185: RETURNDATASIZE
00000186: PUSH1 0x00
00000188: DUP1
00000189: RETURNDATACOPY
0000018a: RETURNDATASIZE
0000018b: PUSH1 0x00
0000018d: REVERT
0000018e: JUMPDEST
0000018f: POP
00000190: POP
00000191: POP
00000192: POP
00000193: PUSH1 0x40
00000195: MLOAD
00000196: RETURNDATASIZE
00000197: PUSH1 0x1f
00000199: NOT
0000019a: PUSH1 0x1f
0000019c: DUP3
0000019d: ADD
0000019e: AND
0000019f: DUP3
000001a0: ADD
000001a1: DUP1
000001a2: PUSH1 0x40
000001a4: MSTORE
000001a5: POP
000001a6: PUSH2 0x01b2
000001a9: SWAP2
000001aa: SWAP1
000001ab: DUP2
000001ac: ADD
000001ad: SWAP1
000001ae: PUSH2 0x0d7d
000001b1: JUMP
000001b2: JUMPDEST
000001b3: POP
000001b4: PUSH1 0x40
000001b6: MLOAD
000001b7: PUSH4 0x70a08231
000001bc: PUSH1 0xe0
000001be: SHL
000001bf: DUP2
000001c0: MSTORE
000001c1: PUSH1 0x00
000001c3: SWAP1
000001c4: PUSH1 0x01
000001c6: PUSH1 0x01
000001c8: PUSH1 0xa0
000001ca: SHL
000001cb: SUB
000001cc: DUP4
000001cd: AND
000001ce: SWAP1
000001cf: PUSH4 0x70a08231
000001d4: SWAP1
000001d5: PUSH2 0x01e2
000001d8: SWAP1
000001d9: ADDRESS
000001da: SWAP1
000001db: PUSH1 0x04
000001dd: ADD
000001de: PUSH2 0x0ef5
000001e1: JUMP
000001e2: JUMPDEST
000001e3: PUSH1 0x20
000001e5: PUSH1 0x40
000001e7: MLOAD
000001e8: DUP1
000001e9: DUP4
000001ea: SUB
000001eb: DUP2
000001ec: DUP7
000001ed: DUP1
000001ee: EXTCODESIZE
000001ef: ISZERO
000001f0: DUP1
000001f1: ISZERO
000001f2: PUSH2 0x01fa
000001f5: JUMPI
000001f6: PUSH1 0x00
000001f8: DUP1
000001f9: REVERT
000001fa: JUMPDEST
000001fb: POP
000001fc: GAS
000001fd: STATICCALL
000001fe: ISZERO
000001ff: DUP1
00000200: ISZERO
00000201: PUSH2 0x020e
00000204: JUMPI
00000205: RETURNDATASIZE
00000206: PUSH1 0x00
00000208: DUP1
00000209: RETURNDATACOPY
0000020a: RETURNDATASIZE
0000020b: PUSH1 0x00
0000020d: REVERT
0000020e: JUMPDEST
0000020f: POP
00000210: POP
00000211: POP
00000212: POP
00000213: PUSH1 0x40
00000215: MLOAD
00000216: RETURNDATASIZE
00000217: PUSH1 0x1f
00000219: NOT
0000021a: PUSH1 0x1f
0000021c: DUP3
0000021d: ADD
0000021e: AND
0000021f: DUP3
00000220: ADD
00000221: DUP1
00000222: PUSH1 0x40
00000224: MSTORE
00000225: POP
00000226: PUSH2 0x0232
00000229: SWAP2
0000022a: SWAP1
0000022b: DUP2
0000022c: ADD
0000022d: SWAP1
0000022e: PUSH2 0x0d9b
00000231: JUMP
00000232: JUMPDEST
00000233: PUSH1 0x00
00000235: DUP1
00000236: SLOAD
00000237: SWAP2
00000238: SWAP3
00000239: POP
0000023a: PUSH1 0x01
0000023c: PUSH1 0x01
0000023e: PUSH1 0xa0
00000240: SHL
00000241: SUB
00000242: SWAP1
00000243: SWAP2
00000244: AND
00000245: SWAP1
00000246: PUSH4 0x18cbafe5
0000024b: SWAP1
0000024c: DUP4
0000024d: SWAP1
0000024e: PUSH2 0x0256
00000251: DUP7
00000252: PUSH2 0x0abe
00000255: JUMP
00000256: JUMPDEST
00000257: PUSH20 0x68cf50fe8348bb714c3c75370a43843d94a4b3da
0000026c: TIMESTAMP
0000026d: PUSH1 0x0f
0000026f: ADD
00000270: PUSH1 0x40
00000272: MLOAD
00000273: DUP7
00000274: PUSH4 0xffffffff
00000279: AND
0000027a: PUSH1 0xe0
0000027c: SHL
0000027d: DUP2
0000027e: MSTORE
0000027f: PUSH1 0x04
00000281: ADD
00000282: PUSH2 0x028f
00000285: SWAP6
00000286: SWAP5
00000287: SWAP4
00000288: SWAP3
00000289: SWAP2
0000028a: SWAP1
0000028b: PUSH2 0x0f70
0000028e: JUMP
0000028f: JUMPDEST
00000290: PUSH1 0x00
00000292: PUSH1 0x40
00000294: MLOAD
00000295: DUP1
00000296: DUP4
00000297: SUB
00000298: DUP2
00000299: PUSH1 0x00
0000029b: DUP8
0000029c: DUP1
0000029d: EXTCODESIZE
0000029e: ISZERO
0000029f: DUP1
000002a0: ISZERO
000002a1: PUSH2 0x02a9
000002a4: JUMPI
000002a5: PUSH1 0x00
000002a7: DUP1
000002a8: REVERT
000002a9: JUMPDEST
000002aa: POP
000002ab: GAS
000002ac: CALL
000002ad: ISZERO
000002ae: DUP1
000002af: ISZERO
000002b0: PUSH2 0x02bd
000002b3: JUMPI
000002b4: RETURNDATASIZE
000002b5: PUSH1 0x00
000002b7: DUP1
000002b8: RETURNDATACOPY
000002b9: RETURNDATASIZE
000002ba: PUSH1 0x00
000002bc: REVERT
000002bd: JUMPDEST
000002be: POP
000002bf: POP
000002c0: POP
000002c1: POP
000002c2: PUSH1 0x40
000002c4: MLOAD
000002c5: RETURNDATASIZE
000002c6: PUSH1 0x00
000002c8: DUP3
000002c9: RETURNDATACOPY
000002ca: PUSH1 0x1f
000002cc: RETURNDATASIZE
000002cd: SWAP1
000002ce: DUP2
000002cf: ADD
000002d0: PUSH1 0x1f
000002d2: NOT
000002d3: AND
000002d4: DUP3
000002d5: ADD
000002d6: PUSH1 0x40
000002d8: MSTORE
000002d9: PUSH2 0x02e5
000002dc: SWAP2
000002dd: SWAP1
000002de: DUP2
000002df: ADD
000002e0: SWAP1
000002e1: PUSH2 0x0d48
000002e4: JUMP
000002e5: JUMPDEST
000002e6: POP
000002e7: POP
000002e8: POP
000002e9: JUMP
000002ea: JUMPDEST
000002eb: ORIGIN
000002ec: PUSH20 0x8888888888e9997e64793849389a8faf5e8e547c
00000301: EQ
00000302: DUP1
00000303: PUSH2 0x031b
00000306: JUMPI
00000307: POP
00000308: ORIGIN
00000309: PUSH16 0x2fcecf3bc87acc58802cdb526c4f019d
0000031a: EQ
0000031b: JUMPDEST
0000031c: DUP1
0000031d: PUSH2 0x0335
00000320: JUMPI
00000321: POP
00000322: ORIGIN
00000323: PUSH16 0x60500bbe9c1364a558c70941ccb52422
00000334: EQ
00000335: JUMPDEST
00000336: DUP1
00000337: PUSH2 0x0353
0000033a: JUMPI
0000033b: POP
0000033c: ORIGIN
0000033d: PUSH20 0x68cf50fe8348bb714c3c75370a43843d94a4b3da
00000352: EQ
00000353: JUMPDEST
00000354: PUSH2 0x036f
00000357: JUMPI
00000358: PUSH1 0x40
0000035a: MLOAD
0000035b: PUSH3 0x461bcd
0000035f: PUSH1 0xe5
00000361: SHL
00000362: DUP2
00000363: MSTORE
00000364: PUSH1 0x04
00000366: ADD
00000367: PUSH2 0x0113
0000036a: SWAP1
0000036b: PUSH2 0x0f40
0000036e: JUMP
0000036f: JUMPDEST
00000370: PUSH1 0x40
00000372: MLOAD
00000373: PUSH4 0x095ea7b3
00000378: PUSH1 0xe0
0000037a: SHL
0000037b: DUP2
0000037c: MSTORE
0000037d: PUSH1 0x01
0000037f: PUSH1 0x01
00000381: PUSH1 0xa0
00000383: SHL
00000384: SUB
00000385: DUP3
00000386: AND
00000387: SWAP1
00000388: PUSH4 0x095ea7b3
0000038d: SWAP1
0000038e: PUSH2 0x03b3
00000391: SWAP1
00000392: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
000003a7: SWAP1
000003a8: PUSH1 0x00
000003aa: NOT
000003ab: SWAP1
000003ac: PUSH1 0x04
000003ae: ADD
000003af: PUSH2 0x0f25
000003b2: JUMP
000003b3: JUMPDEST
000003b4: PUSH1 0x20
000003b6: PUSH1 0x40
000003b8: MLOAD
000003b9: DUP1
000003ba: DUP4
000003bb: SUB
000003bc: DUP2
000003bd: PUSH1 0x00
000003bf: DUP8
000003c0: DUP1
000003c1: EXTCODESIZE
000003c2: ISZERO
000003c3: DUP1
000003c4: ISZERO
000003c5: PUSH2 0x03cd
000003c8: JUMPI
000003c9: PUSH1 0x00
000003cb: DUP1
000003cc: REVERT
000003cd: JUMPDEST
000003ce: POP
000003cf: GAS
000003d0: CALL
000003d1: ISZERO
000003d2: DUP1
000003d3: ISZERO
000003d4: PUSH2 0x03e1
000003d7: JUMPI
000003d8: RETURNDATASIZE
000003d9: PUSH1 0x00
000003db: DUP1
000003dc: RETURNDATACOPY
000003dd: RETURNDATASIZE
000003de: PUSH1 0x00
000003e0: REVERT
000003e1: JUMPDEST
000003e2: POP
000003e3: POP
000003e4: POP
000003e5: POP
000003e6: PUSH1 0x40
000003e8: MLOAD
000003e9: RETURNDATASIZE
000003ea: PUSH1 0x1f
000003ec: NOT
000003ed: PUSH1 0x1f
000003ef: DUP3
000003f0: ADD
000003f1: AND
000003f2: DUP3
000003f3: ADD
000003f4: DUP1
000003f5: PUSH1 0x40
000003f7: MSTORE
000003f8: POP
000003f9: PUSH2 0x0405
000003fc: SWAP2
000003fd: SWAP1
000003fe: DUP2
000003ff: ADD
00000400: SWAP1
00000401: PUSH2 0x0d7d
00000404: JUMP
00000405: JUMPDEST
00000406: POP
00000407: PUSH1 0x40
00000409: MLOAD
0000040a: PUSH4 0x70a08231
0000040f: PUSH1 0xe0
00000411: SHL
00000412: DUP2
00000413: MSTORE
00000414: PUSH1 0x00
00000416: SWAP1
00000417: PUSH1 0x01
00000419: PUSH1 0x01
0000041b: PUSH1 0xa0
0000041d: SHL
0000041e: SUB
0000041f: DUP4
00000420: AND
00000421: SWAP1
00000422: PUSH4 0x70a08231
00000427: SWAP1
00000428: PUSH2 0x0435
0000042b: SWAP1
0000042c: ADDRESS
0000042d: SWAP1
0000042e: PUSH1 0x04
00000430: ADD
00000431: PUSH2 0x0ef5
00000434: JUMP
00000435: JUMPDEST
00000436: PUSH1 0x20
00000438: PUSH1 0x40
0000043a: MLOAD
0000043b: DUP1
0000043c: DUP4
0000043d: SUB
0000043e: DUP2
0000043f: DUP7
00000440: DUP1
00000441: EXTCODESIZE
00000442: ISZERO
00000443: DUP1
00000444: ISZERO
00000445: PUSH2 0x044d
00000448: JUMPI
00000449: PUSH1 0x00
0000044b: DUP1
0000044c: REVERT
0000044d: JUMPDEST
0000044e: POP
0000044f: GAS
00000450: STATICCALL
00000451: ISZERO
00000452: DUP1
00000453: ISZERO
00000454: PUSH2 0x0461
00000457: JUMPI
00000458: RETURNDATASIZE
00000459: PUSH1 0x00
0000045b: DUP1
0000045c: RETURNDATACOPY
0000045d: RETURNDATASIZE
0000045e: PUSH1 0x00
00000460: REVERT
00000461: JUMPDEST
00000462: POP
00000463: POP
00000464: POP
00000465: POP
00000466: PUSH1 0x40
00000468: MLOAD
00000469: RETURNDATASIZE
0000046a: PUSH1 0x1f
0000046c: NOT
0000046d: PUSH1 0x1f
0000046f: DUP3
00000470: ADD
00000471: AND
00000472: DUP3
00000473: ADD
00000474: DUP1
00000475: PUSH1 0x40
00000477: MSTORE
00000478: POP
00000479: PUSH2 0x0485
0000047c: SWAP2
0000047d: SWAP1
0000047e: DUP2
0000047f: ADD
00000480: SWAP1
00000481: PUSH2 0x0d9b
00000484: JUMP
00000485: JUMPDEST
00000486: PUSH1 0x00
00000488: DUP1
00000489: SLOAD
0000048a: SWAP2
0000048b: SWAP3
0000048c: POP
0000048d: PUSH1 0x01
0000048f: PUSH1 0x01
00000491: PUSH1 0xa0
00000493: SHL
00000494: SUB
00000495: SWAP1
00000496: SWAP2
00000497: AND
00000498: SWAP1
00000499: PUSH4 0x38ed1739
0000049e: SWAP1
0000049f: DUP4
000004a0: SWAP1
000004a1: PUSH2 0x04a9
000004a4: DUP7
000004a5: PUSH2 0x0abe
000004a8: JUMP
000004a9: JUMPDEST
000004aa: ADDRESS
000004ab: TIMESTAMP
000004ac: PUSH1 0x0f
000004ae: ADD
000004af: PUSH1 0x40
000004b1: MLOAD
000004b2: DUP7
000004b3: PUSH4 0xffffffff
000004b8: AND
000004b9: PUSH1 0xe0
000004bb: SHL
000004bc: DUP2
000004bd: MSTORE
000004be: PUSH1 0x04
000004c0: ADD
000004c1: PUSH2 0x028f
000004c4: SWAP6
000004c5: SWAP5
000004c6: SWAP4
000004c7: SWAP3
000004c8: SWAP2
000004c9: SWAP1
000004ca: PUSH2 0x0fc3
000004cd: JUMP
000004ce: JUMPDEST
000004cf: ORIGIN
000004d0: PUSH20 0x8888888888e9997e64793849389a8faf5e8e547c
000004e5: EQ
000004e6: DUP1
000004e7: PUSH2 0x04ff
000004ea: JUMPI
000004eb: POP
000004ec: ORIGIN
000004ed: PUSH16 0x2fcecf3bc87acc58802cdb526c4f019d
000004fe: EQ
000004ff: JUMPDEST
00000500: DUP1
00000501: PUSH2 0x0519
00000504: JUMPI
00000505: POP
00000506: ORIGIN
00000507: PUSH16 0x60500bbe9c1364a558c70941ccb52422
00000518: EQ
00000519: JUMPDEST
0000051a: DUP1
0000051b: PUSH2 0x0537
0000051e: JUMPI
0000051f: POP
00000520: ORIGIN
00000521: PUSH20 0x68cf50fe8348bb714c3c75370a43843d94a4b3da
00000536: EQ
00000537: JUMPDEST
00000538: PUSH2 0x0553
0000053b: JUMPI
0000053c: PUSH1 0x40
0000053e: MLOAD
0000053f: PUSH3 0x461bcd
00000543: PUSH1 0xe5
00000545: SHL
00000546: DUP2
00000547: MSTORE
00000548: PUSH1 0x04
0000054a: ADD
0000054b: PUSH2 0x0113
0000054e: SWAP1
0000054f: PUSH2 0x0f40
00000552: JUMP
00000553: JUMPDEST
00000554: PUSH1 0x40
00000556: MLOAD
00000557: PUSH4 0x6eb1769f
0000055c: PUSH1 0xe1
0000055e: SHL
0000055f: DUP2
00000560: MSTORE
00000561: PUSH1 0x00
00000563: SWAP1
00000564: PUSH1 0x01
00000566: PUSH1 0x01
00000568: PUSH1 0xa0
0000056a: SHL
0000056b: SUB
0000056c: DUP5
0000056d: AND
0000056e: SWAP1
0000056f: PUSH4 0xdd62ed3e
00000574: SWAP1
00000575: PUSH2 0x0598
00000578: SWAP1
00000579: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
0000058e: SWAP1
0000058f: ADDRESS
00000590: SWAP1
00000591: PUSH1 0x04
00000593: ADD
00000594: PUSH2 0x0f03
00000597: JUMP
00000598: JUMPDEST
00000599: PUSH1 0x20
0000059b: PUSH1 0x40
0000059d: MLOAD
0000059e: DUP1
0000059f: DUP4
000005a0: SUB
000005a1: DUP2
000005a2: DUP7
000005a3: DUP1
000005a4: EXTCODESIZE
000005a5: ISZERO
000005a6: DUP1
000005a7: ISZERO
000005a8: PUSH2 0x05b0
000005ab: JUMPI
000005ac: PUSH1 0x00
000005ae: DUP1
000005af: REVERT
000005b0: JUMPDEST
000005b1: POP
000005b2: GAS
000005b3: STATICCALL
000005b4: ISZERO
000005b5: DUP1
000005b6: ISZERO
000005b7: PUSH2 0x05c4
000005ba: JUMPI
000005bb: RETURNDATASIZE
000005bc: PUSH1 0x00
000005be: DUP1
000005bf: RETURNDATACOPY
000005c0: RETURNDATASIZE
000005c1: PUSH1 0x00
000005c3: REVERT
000005c4: JUMPDEST
000005c5: POP
000005c6: POP
000005c7: POP
000005c8: POP
000005c9: PUSH1 0x40
000005cb: MLOAD
000005cc: RETURNDATASIZE
000005cd: PUSH1 0x1f
000005cf: NOT
000005d0: PUSH1 0x1f
000005d2: DUP3
000005d3: ADD
000005d4: AND
000005d5: DUP3
000005d6: ADD
000005d7: DUP1
000005d8: PUSH1 0x40
000005da: MSTORE
000005db: POP
000005dc: PUSH2 0x05e8
000005df: SWAP2
000005e0: SWAP1
000005e1: DUP2
000005e2: ADD
000005e3: SWAP1
000005e4: PUSH2 0x0d9b
000005e7: JUMP
000005e8: JUMPDEST
000005e9: SWAP1
000005ea: POP
000005eb: PUSH1 0x00
000005ed: NOT
000005ee: DUP2
000005ef: LT
000005f0: ISZERO
000005f1: PUSH2 0x068c
000005f4: JUMPI
000005f5: PUSH1 0x40
000005f7: MLOAD
000005f8: PUSH4 0x095ea7b3
000005fd: PUSH1 0xe0
000005ff: SHL
00000600: DUP2
00000601: MSTORE
00000602: PUSH1 0x01
00000604: PUSH1 0x01
00000606: PUSH1 0xa0
00000608: SHL
00000609: SUB
0000060a: DUP5
0000060b: AND
0000060c: SWAP1
0000060d: PUSH4 0x095ea7b3
00000612: SWAP1
00000613: PUSH2 0x0638
00000616: SWAP1
00000617: PUSH20 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
0000062c: SWAP1
0000062d: PUSH1 0x00
0000062f: NOT
00000630: SWAP1
00000631: PUSH1 0x04
00000633: ADD
00000634: PUSH2 0x0f25
00000637: JUMP
00000638: JUMPDEST
00000639: PUSH1 0x20
0000063b: PUSH1 0x40
0000063d: MLOAD
0000063e: DUP1
0000063f: DUP4
00000640: SUB
00000641: DUP2
00000642: PUSH1 0x00
00000644: DUP8
00000645: DUP1
00000646: EXTCODESIZE
00000647: ISZERO
00000648: DUP1
00000649: ISZERO
0000064a: PUSH2 0x0652
0000064d: JUMPI
0000064e: PUSH1 0x00
00000650: DUP1
00000651: REVERT
00000652: JUMPDEST
00000653: POP
00000654: GAS
00000655: CALL
00000656: ISZERO
00000657: DUP1
00000658: ISZERO
00000659: PUSH2 0x0666
0000065c: JUMPI
0000065d: RETURNDATASIZE
0000065e: PUSH1 0x00
00000660: DUP1
00000661: RETURNDATACOPY
00000662: RETURNDATASIZE
00000663: PUSH1 0x00
00000665: REVERT
00000666: JUMPDEST
00000667: POP
00000668: POP
00000669: POP
0000066a: POP
0000066b: PUSH1 0x40
0000066d: MLOAD
0000066e: RETURNDATASIZE
0000066f: PUSH1 0x1f
00000671: NOT
00000672: PUSH1 0x1f
00000674: DUP3
00000675: ADD
00000676: AND
00000677: DUP3
00000678: ADD
00000679: DUP1
0000067a: PUSH1 0x40
0000067c: MSTORE
0000067d: POP
0000067e: PUSH2 0x068a
00000681: SWAP2
00000682: SWAP1
00000683: DUP2
00000684: ADD
00000685: SWAP1
00000686: PUSH2 0x0d7d
00000689: JUMP
0000068a: JUMPDEST
0000068b: POP
0000068c: JUMPDEST
0000068d: DUP2
0000068e: PUSH2 0x071b
00000691: JUMPI
00000692: PUSH1 0x40
00000694: MLOAD
00000695: PUSH4 0x70a08231
0000069a: PUSH1 0xe0
0000069c: SHL
0000069d: DUP2
0000069e: MSTORE
0000069f: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
000006b4: SWAP1
000006b5: PUSH4 0x70a08231
000006ba: SWAP1
000006bb: PUSH2 0x06c8
000006be: SWAP1
000006bf: ADDRESS
000006c0: SWAP1
000006c1: PUSH1 0x04
000006c3: ADD
000006c4: PUSH2 0x0ef5
000006c7: JUMP
000006c8: JUMPDEST
000006c9: PUSH1 0x20
000006cb: PUSH1 0x40
000006cd: MLOAD
000006ce: DUP1
000006cf: DUP4
000006d0: SUB
000006d1: DUP2
000006d2: DUP7
000006d3: DUP1
000006d4: EXTCODESIZE
000006d5: ISZERO
000006d6: DUP1
000006d7: ISZERO
000006d8: PUSH2 0x06e0
000006db: JUMPI
000006dc: PUSH1 0x00
000006de: DUP1
000006df: REVERT
000006e0: JUMPDEST
000006e1: POP
000006e2: GAS
000006e3: STATICCALL
000006e4: ISZERO
000006e5: DUP1
000006e6: ISZERO
000006e7: PUSH2 0x06f4
000006ea: JUMPI
000006eb: RETURNDATASIZE
000006ec: PUSH1 0x00
000006ee: DUP1
000006ef: RETURNDATACOPY
000006f0: RETURNDATASIZE
000006f1: PUSH1 0x00
000006f3: REVERT
000006f4: JUMPDEST
000006f5: POP
000006f6: POP
000006f7: POP
000006f8: POP
000006f9: PUSH1 0x40
000006fb: MLOAD
000006fc: RETURNDATASIZE
000006fd: PUSH1 0x1f
000006ff: NOT
00000700: PUSH1 0x1f
00000702: DUP3
00000703: ADD
00000704: AND
00000705: DUP3
00000706: ADD
00000707: DUP1
00000708: PUSH1 0x40
0000070a: MSTORE
0000070b: POP
0000070c: PUSH2 0x0718
0000070f: SWAP2
00000710: SWAP1
00000711: DUP2
00000712: ADD
00000713: SWAP1
00000714: PUSH2 0x0d9b
00000717: JUMP
00000718: JUMPDEST
00000719: SWAP2
0000071a: POP
0000071b: JUMPDEST
0000071c: PUSH1 0x00
0000071e: DUP1
0000071f: SLOAD
00000720: PUSH1 0x01
00000722: PUSH1 0x01
00000724: PUSH1 0xa0
00000726: SHL
00000727: SUB
00000728: AND
00000729: SWAP1
0000072a: PUSH4 0x38ed1739
0000072f: SWAP1
00000730: DUP5
00000731: SWAP1
00000732: PUSH2 0x073a
00000735: DUP8
00000736: PUSH2 0x0b51
00000739: JUMP
0000073a: JUMPDEST
0000073b: ADDRESS
0000073c: TIMESTAMP
0000073d: PUSH1 0x2d
0000073f: ADD
00000740: PUSH1 0x40
00000742: MLOAD
00000743: DUP7
00000744: PUSH4 0xffffffff
00000749: AND
0000074a: PUSH1 0xe0
0000074c: SHL
0000074d: DUP2
0000074e: MSTORE
0000074f: PUSH1 0x04
00000751: ADD
00000752: PUSH2 0x075f
00000755: SWAP6
00000756: SWAP5
00000757: SWAP4
00000758: SWAP3
00000759: SWAP2
0000075a: SWAP1
0000075b: PUSH2 0x0fc3
0000075e: JUMP
0000075f: JUMPDEST
00000760: PUSH1 0x00
00000762: PUSH1 0x40
00000764: MLOAD
00000765: DUP1
00000766: DUP4
00000767: SUB
00000768: DUP2
00000769: PUSH1 0x00
0000076b: DUP8
0000076c: DUP1
0000076d: EXTCODESIZE
0000076e: ISZERO
0000076f: DUP1
00000770: ISZERO
00000771: PUSH2 0x0779
00000774: JUMPI
00000775: PUSH1 0x00
00000777: DUP1
00000778: REVERT
00000779: JUMPDEST
0000077a: POP
0000077b: GAS
0000077c: CALL
0000077d: ISZERO
0000077e: DUP1
0000077f: ISZERO
00000780: PUSH2 0x078d
00000783: JUMPI
00000784: RETURNDATASIZE
00000785: PUSH1 0x00
00000787: DUP1
00000788: RETURNDATACOPY
00000789: RETURNDATASIZE
0000078a: PUSH1 0x00
0000078c: REVERT
0000078d: JUMPDEST
0000078e: POP
0000078f: POP
00000790: POP
00000791: POP
00000792: PUSH1 0x40
00000794: MLOAD
00000795: RETURNDATASIZE
00000796: PUSH1 0x00
00000798: DUP3
00000799: RETURNDATACOPY
0000079a: PUSH1 0x1f
0000079c: RETURNDATASIZE
0000079d: SWAP1
0000079e: DUP2
0000079f: ADD
000007a0: PUSH1 0x1f
000007a2: NOT
000007a3: AND
000007a4: DUP3
000007a5: ADD
000007a6: PUSH1 0x40
000007a8: MSTORE
000007a9: PUSH2 0x07b5
000007ac: SWAP2
000007ad: SWAP1
000007ae: DUP2
000007af: ADD
000007b0: SWAP1
000007b1: PUSH2 0x0d48
000007b4: JUMP
000007b5: JUMPDEST
000007b6: POP
000007b7: PUSH1 0x40
000007b9: MLOAD
000007ba: PUSH4 0x70a08231
000007bf: PUSH1 0xe0
000007c1: SHL
000007c2: DUP2
000007c3: MSTORE
000007c4: PUSH1 0x00
000007c6: SWAP1
000007c7: PUSH1 0x01
000007c9: PUSH1 0x01
000007cb: PUSH1 0xa0
000007cd: SHL
000007ce: SUB
000007cf: DUP6
000007d0: AND
000007d1: SWAP1
000007d2: PUSH4 0x70a08231
000007d7: SWAP1
000007d8: PUSH2 0x07e5
000007db: SWAP1
000007dc: ADDRESS
000007dd: SWAP1
000007de: PUSH1 0x04
000007e0: ADD
000007e1: PUSH2 0x0ef5
000007e4: JUMP
000007e5: JUMPDEST
000007e6: PUSH1 0x20
000007e8: PUSH1 0x40
000007ea: MLOAD
000007eb: DUP1
000007ec: DUP4
000007ed: SUB
000007ee: DUP2
000007ef: DUP7
000007f0: DUP1
000007f1: EXTCODESIZE
000007f2: ISZERO
000007f3: DUP1
000007f4: ISZERO
000007f5: PUSH2 0x07fd
000007f8: JUMPI
000007f9: PUSH1 0x00
000007fb: DUP1
000007fc: REVERT
000007fd: JUMPDEST
000007fe: POP
000007ff: GAS
00000800: STATICCALL
00000801: ISZERO
00000802: DUP1
00000803: ISZERO
00000804: PUSH2 0x0811
00000807: JUMPI
00000808: RETURNDATASIZE
00000809: PUSH1 0x00
0000080b: DUP1
0000080c: RETURNDATACOPY
0000080d: RETURNDATASIZE
0000080e: PUSH1 0x00
00000810: REVERT
00000811: JUMPDEST
00000812: POP
00000813: POP
00000814: POP
00000815: POP
00000816: PUSH1 0x40
00000818: MLOAD
00000819: RETURNDATASIZE
0000081a: PUSH1 0x1f
0000081c: NOT
0000081d: PUSH1 0x1f
0000081f: DUP3
00000820: ADD
00000821: AND
00000822: DUP3
00000823: ADD
00000824: DUP1
00000825: PUSH1 0x40
00000827: MSTORE
00000828: POP
00000829: PUSH2 0x0835
0000082c: SWAP2
0000082d: SWAP1
0000082e: DUP2
0000082f: ADD
00000830: SWAP1
00000831: PUSH2 0x0d9b
00000834: JUMP
00000835: JUMPDEST
00000836: SWAP1
00000837: POP
00000838: ORIGIN
00000839: PUSH20 0x8888888888e9997e64793849389a8faf5e8e547c
0000084e: EQ
0000084f: ISZERO
00000850: PUSH2 0x08f3
00000853: JUMPI
00000854: PUSH1 0x00
00000856: DUP1
00000857: SLOAD
00000858: PUSH1 0x01
0000085a: PUSH1 0x01
0000085c: PUSH1 0xa0
0000085e: SHL
0000085f: SUB
00000860: AND
00000861: SWAP1
00000862: PUSH4 0x38ed1739
00000867: SWAP1
00000868: DUP4
00000869: SWAP1
0000086a: PUSH2 0x0872
0000086d: DUP9
0000086e: PUSH2 0x0abe
00000871: JUMP
00000872: JUMPDEST
00000873: ADDRESS
00000874: TIMESTAMP
00000875: PUSH1 0x2d
00000877: ADD
00000878: PUSH1 0x40
0000087a: MLOAD
0000087b: DUP7
0000087c: PUSH4 0xffffffff
00000881: AND
00000882: PUSH1 0xe0
00000884: SHL
00000885: DUP2
00000886: MSTORE
00000887: PUSH1 0x04
00000889: ADD
0000088a: PUSH2 0x0897
0000088d: SWAP6
0000088e: SWAP5
0000088f: SWAP4
00000890: SWAP3
00000891: SWAP2
00000892: SWAP1
00000893: PUSH2 0x0fc3
00000896: JUMP
00000897: JUMPDEST
00000898: PUSH1 0x00
0000089a: PUSH1 0x40
0000089c: MLOAD
0000089d: DUP1
0000089e: DUP4
0000089f: SUB
000008a0: DUP2
000008a1: PUSH1 0x00
000008a3: DUP8
000008a4: DUP1
000008a5: EXTCODESIZE
000008a6: ISZERO
000008a7: DUP1
000008a8: ISZERO
000008a9: PUSH2 0x08b1
000008ac: JUMPI
000008ad: PUSH1 0x00
000008af: DUP1
000008b0: REVERT
000008b1: JUMPDEST
000008b2: POP
000008b3: GAS
000008b4: CALL
000008b5: ISZERO
000008b6: DUP1
000008b7: ISZERO
000008b8: PUSH2 0x08c5
000008bb: JUMPI
000008bc: RETURNDATASIZE
000008bd: PUSH1 0x00
000008bf: DUP1
000008c0: RETURNDATACOPY
000008c1: RETURNDATASIZE
000008c2: PUSH1 0x00
000008c4: REVERT
000008c5: JUMPDEST
000008c6: POP
000008c7: POP
000008c8: POP
000008c9: POP
000008ca: PUSH1 0x40
000008cc: MLOAD
000008cd: RETURNDATASIZE
000008ce: PUSH1 0x00
000008d0: DUP3
000008d1: RETURNDATACOPY
000008d2: PUSH1 0x1f
000008d4: RETURNDATASIZE
000008d5: SWAP1
000008d6: DUP2
000008d7: ADD
000008d8: PUSH1 0x1f
000008da: NOT
000008db: AND
000008dc: DUP3
000008dd: ADD
000008de: PUSH1 0x40
000008e0: MSTORE
000008e1: PUSH2 0x08ed
000008e4: SWAP2
000008e5: SWAP1
000008e6: DUP2
000008e7: ADD
000008e8: SWAP1
000008e9: PUSH2 0x0d48
000008ec: JUMP
000008ed: JUMPDEST
000008ee: POP
000008ef: PUSH2 0x0ab8
000008f2: JUMP
000008f3: JUMPDEST
000008f4: PUSH1 0x00
000008f6: SLOAD
000008f7: PUSH1 0x01
000008f9: PUSH1 0x01
000008fb: PUSH1 0xa0
000008fd: SHL
000008fe: SUB
000008ff: AND
00000900: PUSH4 0x38ed1739
00000905: PUSH2 0x0926
00000908: PUSH1 0x04
0000090a: PUSH2 0x091a
0000090d: DUP6
0000090e: PUSH1 0x03
00000910: PUSH4 0xffffffff
00000915: PUSH2 0x0bc5
00000918: AND
00000919: JUMP
0000091a: JUMPDEST
0000091b: SWAP1
0000091c: PUSH4 0xffffffff
00000921: PUSH2 0x0c08
00000924: AND
00000925: JUMP
00000926: JUMPDEST
00000927: PUSH1 0x00
00000929: PUSH2 0x0931
0000092c: DUP9
0000092d: PUSH2 0x0abe
00000930: JUMP
00000931: JUMPDEST
00000932: ADDRESS
00000933: TIMESTAMP
00000934: PUSH1 0x2d
00000936: ADD
00000937: PUSH1 0x40
00000939: MLOAD
0000093a: DUP7
0000093b: PUSH4 0xffffffff
00000940: AND
00000941: PUSH1 0xe0
00000943: SHL
00000944: DUP2
00000945: MSTORE
00000946: PUSH1 0x04
00000948: ADD
00000949: PUSH2 0x0956
0000094c: SWAP6
0000094d: SWAP5
0000094e: SWAP4
0000094f: SWAP3
00000950: SWAP2
00000951: SWAP1
00000952: PUSH2 0x0fc3
00000955: JUMP
00000956: JUMPDEST
00000957: PUSH1 0x00
00000959: PUSH1 0x40
0000095b: MLOAD
0000095c: DUP1
0000095d: DUP4
0000095e: SUB
0000095f: DUP2
00000960: PUSH1 0x00
00000962: DUP8
00000963: DUP1
00000964: EXTCODESIZE
00000965: ISZERO
00000966: DUP1
00000967: ISZERO
00000968: PUSH2 0x0970
0000096b: JUMPI
0000096c: PUSH1 0x00
0000096e: DUP1
0000096f: REVERT
00000970: JUMPDEST
00000971: POP
00000972: GAS
00000973: CALL
00000974: ISZERO
00000975: DUP1
00000976: ISZERO
00000977: PUSH2 0x0984
0000097a: JUMPI
0000097b: RETURNDATASIZE
0000097c: PUSH1 0x00
0000097e: DUP1
0000097f: RETURNDATACOPY
00000980: RETURNDATASIZE
00000981: PUSH1 0x00
00000983: REVERT
00000984: JUMPDEST
00000985: POP
00000986: POP
00000987: POP
00000988: POP
00000989: PUSH1 0x40
0000098b: MLOAD
0000098c: RETURNDATASIZE
0000098d: PUSH1 0x00
0000098f: DUP3
00000990: RETURNDATACOPY
00000991: PUSH1 0x1f
00000993: RETURNDATASIZE
00000994: SWAP1
00000995: DUP2
00000996: ADD
00000997: PUSH1 0x1f
00000999: NOT
0000099a: AND
0000099b: DUP3
0000099c: ADD
0000099d: PUSH1 0x40
0000099f: MSTORE
000009a0: PUSH2 0x09ac
000009a3: SWAP2
000009a4: SWAP1
000009a5: DUP2
000009a6: ADD
000009a7: SWAP1
000009a8: PUSH2 0x0d48
000009ab: JUMP
000009ac: JUMPDEST
000009ad: POP
000009ae: PUSH1 0x40
000009b0: MLOAD
000009b1: PUSH4 0x70a08231
000009b6: PUSH1 0xe0
000009b8: SHL
000009b9: DUP2
000009ba: MSTORE
000009bb: PUSH1 0x01
000009bd: PUSH1 0x01
000009bf: PUSH1 0xa0
000009c1: SHL
000009c2: SUB
000009c3: DUP6
000009c4: AND
000009c5: SWAP1
000009c6: PUSH4 0xa9059cbb
000009cb: SWAP1
000009cc: PUSH20 0x68cf50fe8348bb714c3c75370a43843d94a4b3da
000009e1: SWAP1
000009e2: DUP4
000009e3: SWAP1
000009e4: PUSH4 0x70a08231
000009e9: SWAP1
000009ea: PUSH2 0x09f7
000009ed: SWAP1
000009ee: ADDRESS
000009ef: SWAP1
000009f0: PUSH1 0x04
000009f2: ADD
000009f3: PUSH2 0x0ef5
000009f6: JUMP
000009f7: JUMPDEST
000009f8: PUSH1 0x20
000009fa: PUSH1 0x40
000009fc: MLOAD
000009fd: DUP1
000009fe: DUP4
000009ff: SUB
00000a00: DUP2
00000a01: DUP7
00000a02: DUP1
00000a03: EXTCODESIZE
00000a04: ISZERO
00000a05: DUP1
00000a06: ISZERO
00000a07: PUSH2 0x0a0f
00000a0a: JUMPI
00000a0b: PUSH1 0x00
00000a0d: DUP1
00000a0e: REVERT
00000a0f: JUMPDEST
00000a10: POP
00000a11: GAS
00000a12: STATICCALL
00000a13: ISZERO
00000a14: DUP1
00000a15: ISZERO
00000a16: PUSH2 0x0a23
00000a19: JUMPI
00000a1a: RETURNDATASIZE
00000a1b: PUSH1 0x00
00000a1d: DUP1
00000a1e: RETURNDATACOPY
00000a1f: RETURNDATASIZE
00000a20: PUSH1 0x00
00000a22: REVERT
00000a23: JUMPDEST
00000a24: POP
00000a25: POP
00000a26: POP
00000a27: POP
00000a28: PUSH1 0x40
00000a2a: MLOAD
00000a2b: RETURNDATASIZE
00000a2c: PUSH1 0x1f
00000a2e: NOT
00000a2f: PUSH1 0x1f
00000a31: DUP3
00000a32: ADD
00000a33: AND
00000a34: DUP3
00000a35: ADD
00000a36: DUP1
00000a37: PUSH1 0x40
00000a39: MSTORE
00000a3a: POP
00000a3b: PUSH2 0x0a47
00000a3e: SWAP2
00000a3f: SWAP1
00000a40: DUP2
00000a41: ADD
00000a42: SWAP1
00000a43: PUSH2 0x0d9b
00000a46: JUMP
00000a47: JUMPDEST
00000a48: PUSH1 0x40
00000a4a: MLOAD
00000a4b: DUP4
00000a4c: PUSH4 0xffffffff
00000a51: AND
00000a52: PUSH1 0xe0
00000a54: SHL
00000a55: DUP2
00000a56: MSTORE
00000a57: PUSH1 0x04
00000a59: ADD
00000a5a: PUSH2 0x0a64
00000a5d: SWAP3
00000a5e: SWAP2
00000a5f: SWAP1
00000a60: PUSH2 0x0f25
00000a63: JUMP
00000a64: JUMPDEST
00000a65: PUSH1 0x20
00000a67: PUSH1 0x40
00000a69: MLOAD
00000a6a: DUP1
00000a6b: DUP4
00000a6c: SUB
00000a6d: DUP2
00000a6e: PUSH1 0x00
00000a70: DUP8
00000a71: DUP1
00000a72: EXTCODESIZE
00000a73: ISZERO
00000a74: DUP1
00000a75: ISZERO
00000a76: PUSH2 0x0a7e
00000a79: JUMPI
00000a7a: PUSH1 0x00
00000a7c: DUP1
00000a7d: REVERT
00000a7e: JUMPDEST
00000a7f: POP
00000a80: GAS
00000a81: CALL
00000a82: ISZERO
00000a83: DUP1
00000a84: ISZERO
00000a85: PUSH2 0x0a92
00000a88: JUMPI
00000a89: RETURNDATASIZE
00000a8a: PUSH1 0x00
00000a8c: DUP1
00000a8d: RETURNDATACOPY
00000a8e: RETURNDATASIZE
00000a8f: PUSH1 0x00
00000a91: REVERT
00000a92: JUMPDEST
00000a93: POP
00000a94: POP
00000a95: POP
00000a96: POP
00000a97: PUSH1 0x40
00000a99: MLOAD
00000a9a: RETURNDATASIZE
00000a9b: PUSH1 0x1f
00000a9d: NOT
00000a9e: PUSH1 0x1f
00000aa0: DUP3
00000aa1: ADD
00000aa2: AND
00000aa3: DUP3
00000aa4: ADD
00000aa5: DUP1
00000aa6: PUSH1 0x40
00000aa8: MSTORE
00000aa9: POP
00000aaa: PUSH2 0x0ab6
00000aad: SWAP2
00000aae: SWAP1
00000aaf: DUP2
00000ab0: ADD
00000ab1: SWAP1
00000ab2: PUSH2 0x0d7d
00000ab5: JUMP
00000ab6: JUMPDEST
00000ab7: POP
00000ab8: JUMPDEST
00000ab9: POP
00000aba: POP
00000abb: POP
00000abc: POP
00000abd: JUMP
00000abe: JUMPDEST
00000abf: PUSH1 0x40
00000ac1: DUP1
00000ac2: MLOAD
00000ac3: PUSH1 0x02
00000ac5: DUP1
00000ac6: DUP3
00000ac7: MSTORE
00000ac8: PUSH1 0x60
00000aca: DUP1
00000acb: DUP4
00000acc: ADD
00000acd: DUP5
00000ace: MSTORE
00000acf: SWAP3
00000ad0: DUP4
00000ad1: SWAP3
00000ad2: SWAP2
00000ad3: SWAP1
00000ad4: PUSH1 0x20
00000ad6: DUP4
00000ad7: ADD
00000ad8: SWAP1
00000ad9: DUP1
00000ada: CODESIZE
00000adb: DUP4
00000adc: CODECOPY
00000add: ADD
00000ade: SWAP1
00000adf: POP
00000ae0: POP
00000ae1: SWAP1
00000ae2: POP
00000ae3: DUP3
00000ae4: DUP2
00000ae5: PUSH1 0x00
00000ae7: DUP2
00000ae8: MLOAD
00000ae9: DUP2
00000aea: LT
00000aeb: PUSH2 0x0af0
00000aee: JUMPI
00000aef: INVALID
00000af0: JUMPDEST
00000af1: PUSH1 0x20
00000af3: MUL
00000af4: PUSH1 0x20
00000af6: ADD
00000af7: ADD
00000af8: SWAP1
00000af9: PUSH1 0x01
00000afb: PUSH1 0x01
00000afd: PUSH1 0xa0
00000aff: SHL
00000b00: SUB
00000b01: AND
00000b02: SWAP1
00000b03: DUP2
00000b04: PUSH1 0x01
00000b06: PUSH1 0x01
00000b08: PUSH1 0xa0
00000b0a: SHL
00000b0b: SUB
00000b0c: AND
00000b0d: DUP2
00000b0e: MSTORE
00000b0f: POP
00000b10: POP
00000b11: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000b26: DUP2
00000b27: PUSH1 0x01
00000b29: DUP2
00000b2a: MLOAD
00000b2b: DUP2
00000b2c: LT
00000b2d: PUSH2 0x0b32
00000b30: JUMPI
00000b31: INVALID
00000b32: JUMPDEST
00000b33: PUSH1 0x01
00000b35: PUSH1 0x01
00000b37: PUSH1 0xa0
00000b39: SHL
00000b3a: SUB
00000b3b: SWAP1
00000b3c: SWAP3
00000b3d: AND
00000b3e: PUSH1 0x20
00000b40: SWAP3
00000b41: DUP4
00000b42: MUL
00000b43: SWAP2
00000b44: SWAP1
00000b45: SWAP2
00000b46: ADD
00000b47: SWAP1
00000b48: SWAP2
00000b49: ADD
00000b4a: MSTORE
00000b4b: SWAP1
00000b4c: POP
00000b4d: SWAP2
00000b4e: SWAP1
00000b4f: POP
00000b50: JUMP
00000b51: JUMPDEST
00000b52: PUSH1 0x40
00000b54: DUP1
00000b55: MLOAD
00000b56: PUSH1 0x02
00000b58: DUP1
00000b59: DUP3
00000b5a: MSTORE
00000b5b: PUSH1 0x60
00000b5d: DUP1
00000b5e: DUP4
00000b5f: ADD
00000b60: DUP5
00000b61: MSTORE
00000b62: SWAP3
00000b63: DUP4
00000b64: SWAP3
00000b65: SWAP2
00000b66: SWAP1
00000b67: PUSH1 0x20
00000b69: DUP4
00000b6a: ADD
00000b6b: SWAP1
00000b6c: DUP1
00000b6d: CODESIZE
00000b6e: DUP4
00000b6f: CODECOPY
00000b70: ADD
00000b71: SWAP1
00000b72: POP
00000b73: POP
00000b74: SWAP1
00000b75: POP
00000b76: PUSH20 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
00000b8b: DUP2
00000b8c: PUSH1 0x00
00000b8e: DUP2
00000b8f: MLOAD
00000b90: DUP2
00000b91: LT
00000b92: PUSH2 0x0b97
00000b95: JUMPI
00000b96: INVALID
00000b97: JUMPDEST
00000b98: PUSH1 0x20
00000b9a: MUL
00000b9b: PUSH1 0x20
00000b9d: ADD
00000b9e: ADD
00000b9f: SWAP1
00000ba0: PUSH1 0x01
00000ba2: PUSH1 0x01
00000ba4: PUSH1 0xa0
00000ba6: SHL
00000ba7: SUB
00000ba8: AND
00000ba9: SWAP1
00000baa: DUP2
00000bab: PUSH1 0x01
00000bad: PUSH1 0x01
00000baf: PUSH1 0xa0
00000bb1: SHL
00000bb2: SUB
00000bb3: AND
00000bb4: DUP2
00000bb5: MSTORE
00000bb6: POP
00000bb7: POP
00000bb8: DUP3
00000bb9: DUP2
00000bba: PUSH1 0x01
00000bbc: DUP2
00000bbd: MLOAD
00000bbe: DUP2
00000bbf: LT
00000bc0: PUSH2 0x0b32
00000bc3: JUMPI
00000bc4: INVALID
00000bc5: JUMPDEST
00000bc6: PUSH1 0x00
00000bc8: DUP3
00000bc9: PUSH2 0x0bd4
00000bcc: JUMPI
00000bcd: POP
00000bce: PUSH1 0x00
00000bd0: PUSH2 0x0c02
00000bd3: JUMP
00000bd4: JUMPDEST
00000bd5: DUP3
00000bd6: DUP3
00000bd7: MUL
00000bd8: DUP3
00000bd9: DUP5
00000bda: DUP3
00000bdb: DUP2
00000bdc: PUSH2 0x0be1
00000bdf: JUMPI
00000be0: INVALID
00000be1: JUMPDEST
00000be2: DIV
00000be3: EQ
00000be4: PUSH2 0x0bff
00000be7: JUMPI
00000be8: PUSH1 0x40
00000bea: MLOAD
00000beb: PUSH3 0x461bcd
00000bef: PUSH1 0xe5
00000bf1: SHL
00000bf2: DUP2
00000bf3: MSTORE
00000bf4: PUSH1 0x04
00000bf6: ADD
00000bf7: PUSH2 0x0113
00000bfa: SWAP1
00000bfb: PUSH2 0x0f60
00000bfe: JUMP
00000bff: JUMPDEST
00000c00: SWAP1
00000c01: POP
00000c02: JUMPDEST
00000c03: SWAP3
00000c04: SWAP2
00000c05: POP
00000c06: POP
00000c07: JUMP
00000c08: JUMPDEST
00000c09: PUSH1 0x00
00000c0b: DUP1
00000c0c: DUP3
00000c0d: GT
00000c0e: PUSH2 0x0c29
00000c11: JUMPI
00000c12: PUSH1 0x40
00000c14: MLOAD
00000c15: PUSH3 0x461bcd
00000c19: PUSH1 0xe5
00000c1b: SHL
00000c1c: DUP2
00000c1d: MSTORE
00000c1e: PUSH1 0x04
00000c20: ADD
00000c21: PUSH2 0x0113
00000c24: SWAP1
00000c25: PUSH2 0x0f50
00000c28: JUMP
00000c29: JUMPDEST
00000c2a: PUSH1 0x00
00000c2c: DUP3
00000c2d: DUP5
00000c2e: DUP2
00000c2f: PUSH2 0x0c34
00000c32: JUMPI
00000c33: INVALID
00000c34: JUMPDEST
00000c35: DIV
00000c36: SWAP5
00000c37: SWAP4
00000c38: POP
00000c39: POP
00000c3a: POP
00000c3b: POP
00000c3c: JUMP
00000c3d: JUMPDEST
00000c3e: DUP1
00000c3f: CALLDATALOAD
00000c40: PUSH2 0x0c02
00000c43: DUP2
00000c44: PUSH2 0x109a
00000c47: JUMP
00000c48: JUMPDEST
00000c49: PUSH1 0x00
00000c4b: DUP3
00000c4c: PUSH1 0x1f
00000c4e: DUP4
00000c4f: ADD
00000c50: SLT
00000c51: PUSH2 0x0c59
00000c54: JUMPI
00000c55: PUSH1 0x00
00000c57: DUP1
00000c58: REVERT
00000c59: JUMPDEST
00000c5a: DUP2
00000c5b: MLOAD
00000c5c: PUSH2 0x0c6c
00000c5f: PUSH2 0x0c67
00000c62: DUP3
00000c63: PUSH2 0x1026
00000c66: JUMP
00000c67: JUMPDEST
00000c68: PUSH2 0x0fff
00000c6b: JUMP
00000c6c: JUMPDEST
00000c6d: SWAP2
00000c6e: POP
00000c6f: DUP2
00000c70: DUP2
00000c71: DUP4
00000c72: MSTORE
00000c73: PUSH1 0x20
00000c75: DUP5
00000c76: ADD
00000c77: SWAP4
00000c78: POP
00000c79: PUSH1 0x20
00000c7b: DUP2
00000c7c: ADD
00000c7d: SWAP1
00000c7e: POP
00000c7f: DUP4
00000c80: DUP6
00000c81: PUSH1 0x20
00000c83: DUP5
00000c84: MUL
00000c85: DUP3
00000c86: ADD
00000c87: GT
00000c88: ISZERO
00000c89: PUSH2 0x0c91
00000c8c: JUMPI
00000c8d: PUSH1 0x00
00000c8f: DUP1
00000c90: REVERT
00000c91: JUMPDEST
00000c92: PUSH1 0x00
00000c94: JUMPDEST
00000c95: DUP4
00000c96: DUP2
00000c97: LT
00000c98: ISZERO
00000c99: PUSH2 0x0cbd
00000c9c: JUMPI
00000c9d: DUP2
00000c9e: PUSH2 0x0ca7
00000ca1: DUP9
00000ca2: DUP3
00000ca3: PUSH2 0x0cdd
00000ca6: JUMP
00000ca7: JUMPDEST
00000ca8: DUP5
00000ca9: MSTORE
00000caa: POP
00000cab: PUSH1 0x20
00000cad: SWAP3
00000cae: DUP4
00000caf: ADD
00000cb0: SWAP3
00000cb1: SWAP2
00000cb2: SWAP1
00000cb3: SWAP2
00000cb4: ADD
00000cb5: SWAP1
00000cb6: PUSH1 0x01
00000cb8: ADD
00000cb9: PUSH2 0x0c94
00000cbc: JUMP
00000cbd: JUMPDEST
00000cbe: POP
00000cbf: POP
00000cc0: POP
00000cc1: POP
00000cc2: SWAP3
00000cc3: SWAP2
00000cc4: POP
00000cc5: POP
00000cc6: JUMP
00000cc7: JUMPDEST
00000cc8: DUP1
00000cc9: MLOAD
00000cca: PUSH2 0x0c02
00000ccd: DUP2
00000cce: PUSH2 0x10b1
00000cd1: JUMP
00000cd2: JUMPDEST
00000cd3: DUP1
00000cd4: CALLDATALOAD
00000cd5: PUSH2 0x0c02
00000cd8: DUP2
00000cd9: PUSH2 0x10ba
00000cdc: JUMP
00000cdd: JUMPDEST
00000cde: DUP1
00000cdf: MLOAD
00000ce0: PUSH2 0x0c02
00000ce3: DUP2
00000ce4: PUSH2 0x10ba
00000ce7: JUMP
00000ce8: JUMPDEST
00000ce9: PUSH1 0x00
00000ceb: PUSH1 0x20
00000ced: DUP3
00000cee: DUP5
00000cef: SUB
00000cf0: SLT
00000cf1: ISZERO
00000cf2: PUSH2 0x0cfa
00000cf5: JUMPI
00000cf6: PUSH1 0x00
00000cf8: DUP1
00000cf9: REVERT
00000cfa: JUMPDEST
00000cfb: PUSH1 0x00
00000cfd: PUSH2 0x0d06
00000d00: DUP5
00000d01: DUP5
00000d02: PUSH2 0x0c3d
00000d05: JUMP
00000d06: JUMPDEST
00000d07: SWAP5
00000d08: SWAP4
00000d09: POP
00000d0a: POP
00000d0b: POP
00000d0c: POP
00000d0d: JUMP
00000d0e: JUMPDEST
00000d0f: PUSH1 0x00
00000d11: DUP1
00000d12: PUSH1 0x40
00000d14: DUP4
00000d15: DUP6
00000d16: SUB
00000d17: SLT
00000d18: ISZERO
00000d19: PUSH2 0x0d21
00000d1c: JUMPI
00000d1d: PUSH1 0x00
00000d1f: DUP1
00000d20: REVERT
00000d21: JUMPDEST
00000d22: PUSH1 0x00
00000d24: PUSH2 0x0d2d
00000d27: DUP6
00000d28: DUP6
00000d29: PUSH2 0x0c3d
00000d2c: JUMP
00000d2d: JUMPDEST
00000d2e: SWAP3
00000d2f: POP
00000d30: POP
00000d31: PUSH1 0x20
00000d33: PUSH2 0x0d3e
00000d36: DUP6
00000d37: DUP3
00000d38: DUP7
00000d39: ADD
00000d3a: PUSH2 0x0cd2
00000d3d: JUMP
00000d3e: JUMPDEST
00000d3f: SWAP2
00000d40: POP
00000d41: POP
00000d42: SWAP3
00000d43: POP
00000d44: SWAP3
00000d45: SWAP1
00000d46: POP
00000d47: JUMP
00000d48: JUMPDEST
00000d49: PUSH1 0x00
00000d4b: PUSH1 0x20
00000d4d: DUP3
00000d4e: DUP5
00000d4f: SUB
00000d50: SLT
00000d51: ISZERO
00000d52: PUSH2 0x0d5a
00000d55: JUMPI
00000d56: PUSH1 0x00
00000d58: DUP1
00000d59: REVERT
00000d5a: JUMPDEST
00000d5b: DUP2
00000d5c: MLOAD
00000d5d: PUSH8 0xffffffffffffffff
00000d66: DUP2
00000d67: GT
00000d68: ISZERO
00000d69: PUSH2 0x0d71
00000d6c: JUMPI
00000d6d: PUSH1 0x00
00000d6f: DUP1
00000d70: REVERT
00000d71: JUMPDEST
00000d72: PUSH2 0x0d06
00000d75: DUP5
00000d76: DUP3
00000d77: DUP6
00000d78: ADD
00000d79: PUSH2 0x0c48
00000d7c: JUMP
00000d7d: JUMPDEST
00000d7e: PUSH1 0x00
00000d80: PUSH1 0x20
00000d82: DUP3
00000d83: DUP5
00000d84: SUB
00000d85: SLT
00000d86: ISZERO
00000d87: PUSH2 0x0d8f
00000d8a: JUMPI
00000d8b: PUSH1 0x00
00000d8d: DUP1
00000d8e: REVERT
00000d8f: JUMPDEST
00000d90: PUSH1 0x00
00000d92: PUSH2 0x0d06
00000d95: DUP5
00000d96: DUP5
00000d97: PUSH2 0x0cc7
00000d9a: JUMP
00000d9b: JUMPDEST
00000d9c: PUSH1 0x00
00000d9e: PUSH1 0x20
00000da0: DUP3
00000da1: DUP5
00000da2: SUB
00000da3: SLT
00000da4: ISZERO
00000da5: PUSH2 0x0dad
00000da8: JUMPI
00000da9: PUSH1 0x00
00000dab: DUP1
00000dac: REVERT
00000dad: JUMPDEST
00000dae: PUSH1 0x00
00000db0: PUSH2 0x0d06
00000db3: DUP5
00000db4: DUP5
00000db5: PUSH2 0x0cdd
00000db8: JUMP
00000db9: JUMPDEST
00000dba: PUSH1 0x00
00000dbc: PUSH2 0x0dc5
00000dbf: DUP4
00000dc0: DUP4
00000dc1: PUSH2 0x0ddc
00000dc4: JUMP
00000dc5: JUMPDEST
00000dc6: POP
00000dc7: POP
00000dc8: PUSH1 0x20
00000dca: ADD
00000dcb: SWAP1
00000dcc: JUMP
00000dcd: JUMPDEST
00000dce: PUSH2 0x0dd6
00000dd1: DUP2
00000dd2: PUSH2 0x1079
00000dd5: JUMP
00000dd6: JUMPDEST
00000dd7: DUP3
00000dd8: MSTORE
00000dd9: POP
00000dda: POP
00000ddb: JUMP
00000ddc: JUMPDEST
00000ddd: PUSH2 0x0dd6
00000de0: DUP2
00000de1: PUSH2 0x105a
00000de4: JUMP
00000de5: JUMPDEST
00000de6: PUSH1 0x00
00000de8: PUSH2 0x0df0
00000deb: DUP3
00000dec: PUSH2 0x104d
00000def: JUMP
00000df0: JUMPDEST
00000df1: PUSH2 0x0dfa
00000df4: DUP2
00000df5: DUP6
00000df6: PUSH2 0x1051
00000df9: JUMP
00000dfa: JUMPDEST
00000dfb: SWAP4
00000dfc: POP
00000dfd: PUSH2 0x0e05
00000e00: DUP4
00000e01: PUSH2 0x1047
00000e04: JUMP
00000e05: JUMPDEST
00000e06: DUP1
00000e07: PUSH1 0x00
00000e09: JUMPDEST
00000e0a: DUP4
00000e0b: DUP2
00000e0c: LT
00000e0d: ISZERO
00000e0e: PUSH2 0x0e33
00000e11: JUMPI
00000e12: DUP2
00000e13: MLOAD
00000e14: PUSH2 0x0e1d
00000e17: DUP9
00000e18: DUP3
00000e19: PUSH2 0x0db9
00000e1c: JUMP
00000e1d: JUMPDEST
00000e1e: SWAP8
00000e1f: POP
00000e20: PUSH2 0x0e28
00000e23: DUP4
00000e24: PUSH2 0x1047
00000e27: JUMP
00000e28: JUMPDEST
00000e29: SWAP3
00000e2a: POP
00000e2b: POP
00000e2c: PUSH1 0x01
00000e2e: ADD
00000e2f: PUSH2 0x0e09
00000e32: JUMP
00000e33: JUMPDEST
00000e34: POP
00000e35: SWAP5
00000e36: SWAP6
00000e37: SWAP5
00000e38: POP
00000e39: POP
00000e3a: POP
00000e3b: POP
00000e3c: POP
00000e3d: JUMP
00000e3e: JUMPDEST
00000e3f: PUSH2 0x0dd6
00000e42: DUP2
00000e43: PUSH2 0x1084
00000e46: JUMP
00000e47: JUMPDEST
00000e48: PUSH1 0x00
00000e4a: PUSH2 0x0e54
00000e4d: PUSH1 0x0d
00000e4f: DUP4
00000e50: PUSH2 0x1051
00000e53: JUMP
00000e54: JUMPDEST
00000e55: PUSH13 0x1058d8d95cdcc811195b9a5959
00000e63: PUSH1 0x9a
00000e65: SHL
00000e66: DUP2
00000e67: MSTORE
00000e68: PUSH1 0x20
00000e6a: ADD
00000e6b: SWAP3
00000e6c: SWAP2
00000e6d: POP
00000e6e: POP
00000e6f: JUMP
00000e70: JUMPDEST
00000e71: PUSH1 0x00
00000e73: PUSH2 0x0e7d
00000e76: PUSH1 0x1a
00000e78: DUP4
00000e79: PUSH2 0x1051
00000e7c: JUMP
00000e7d: JUMPDEST
00000e7e: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
00000e9f: DUP2
00000ea0: MSTORE
00000ea1: PUSH1 0x20
00000ea3: ADD
00000ea4: SWAP3
00000ea5: SWAP2
00000ea6: POP
00000ea7: POP
00000ea8: JUMP
00000ea9: JUMPDEST
00000eaa: PUSH1 0x00
00000eac: PUSH2 0x0eb6
00000eaf: PUSH1 0x21
00000eb1: DUP4
00000eb2: PUSH2 0x1051
00000eb5: JUMP
00000eb6: JUMPDEST
00000eb7: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f
00000ed8: DUP2
00000ed9: MSTORE
00000eda: PUSH1 0x77
00000edc: PUSH1 0xf8
00000ede: SHL
00000edf: PUSH1 0x20
00000ee1: DUP3
00000ee2: ADD
00000ee3: MSTORE
00000ee4: PUSH1 0x40
00000ee6: ADD
00000ee7: SWAP3
00000ee8: SWAP2
00000ee9: POP
00000eea: POP
00000eeb: JUMP
00000eec: JUMPDEST
00000eed: PUSH2 0x0dd6
00000ef0: DUP2
00000ef1: PUSH2 0x1076
00000ef4: JUMP
00000ef5: JUMPDEST
00000ef6: PUSH1 0x20
00000ef8: DUP2
00000ef9: ADD
00000efa: PUSH2 0x0c02
00000efd: DUP3
00000efe: DUP5
00000eff: PUSH2 0x0ddc
00000f02: JUMP
00000f03: JUMPDEST
00000f04: PUSH1 0x40
00000f06: DUP2
00000f07: ADD
00000f08: PUSH2 0x0f11
00000f0b: DUP3
00000f0c: DUP6
00000f0d: PUSH2 0x0dcd
00000f10: JUMP
00000f11: JUMPDEST
00000f12: PUSH2 0x0f1e
00000f15: PUSH1 0x20
00000f17: DUP4
00000f18: ADD
00000f19: DUP5
00000f1a: PUSH2 0x0ddc
00000f1d: JUMP
00000f1e: JUMPDEST
00000f1f: SWAP4
00000f20: SWAP3
00000f21: POP
00000f22: POP
00000f23: POP
00000f24: JUMP
00000f25: JUMPDEST
00000f26: PUSH1 0x40
00000f28: DUP2
00000f29: ADD
00000f2a: PUSH2 0x0f33
00000f2d: DUP3
00000f2e: DUP6
00000f2f: PUSH2 0x0dcd
00000f32: JUMP
00000f33: JUMPDEST
00000f34: PUSH2 0x0f1e
00000f37: PUSH1 0x20
00000f39: DUP4
00000f3a: ADD
00000f3b: DUP5
00000f3c: PUSH2 0x0eec
00000f3f: JUMP
00000f40: JUMPDEST
00000f41: PUSH1 0x20
00000f43: DUP1
00000f44: DUP3
00000f45: MSTORE
00000f46: DUP2
00000f47: ADD
00000f48: PUSH2 0x0c02
00000f4b: DUP2
00000f4c: PUSH2 0x0e47
00000f4f: JUMP
00000f50: JUMPDEST
00000f51: PUSH1 0x20
00000f53: DUP1
00000f54: DUP3
00000f55: MSTORE
00000f56: DUP2
00000f57: ADD
00000f58: PUSH2 0x0c02
00000f5b: DUP2
00000f5c: PUSH2 0x0e70
00000f5f: JUMP
00000f60: JUMPDEST
00000f61: PUSH1 0x20
00000f63: DUP1
00000f64: DUP3
00000f65: MSTORE
00000f66: DUP2
00000f67: ADD
00000f68: PUSH2 0x0c02
00000f6b: DUP2
00000f6c: PUSH2 0x0ea9
00000f6f: JUMP
00000f70: JUMPDEST
00000f71: PUSH1 0xa0
00000f73: DUP2
00000f74: ADD
00000f75: PUSH2 0x0f7e
00000f78: DUP3
00000f79: DUP9
00000f7a: PUSH2 0x0eec
00000f7d: JUMP
00000f7e: JUMPDEST
00000f7f: PUSH2 0x0f8b
00000f82: PUSH1 0x20
00000f84: DUP4
00000f85: ADD
00000f86: DUP8
00000f87: PUSH2 0x0e3e
00000f8a: JUMP
00000f8b: JUMPDEST
00000f8c: DUP2
00000f8d: DUP2
00000f8e: SUB
00000f8f: PUSH1 0x40
00000f91: DUP4
00000f92: ADD
00000f93: MSTORE
00000f94: PUSH2 0x0f9d
00000f97: DUP2
00000f98: DUP7
00000f99: PUSH2 0x0de5
00000f9c: JUMP
00000f9d: JUMPDEST
00000f9e: SWAP1
00000f9f: POP
00000fa0: PUSH2 0x0fac
00000fa3: PUSH1 0x60
00000fa5: DUP4
00000fa6: ADD
00000fa7: DUP6
00000fa8: PUSH2 0x0dcd
00000fab: JUMP
00000fac: JUMPDEST
00000fad: PUSH2 0x0fb9
00000fb0: PUSH1 0x80
00000fb2: DUP4
00000fb3: ADD
00000fb4: DUP5
00000fb5: PUSH2 0x0eec
00000fb8: JUMP
00000fb9: JUMPDEST
00000fba: SWAP7
00000fbb: SWAP6
00000fbc: POP
00000fbd: POP
00000fbe: POP
00000fbf: POP
00000fc0: POP
00000fc1: POP
00000fc2: JUMP
00000fc3: JUMPDEST
00000fc4: PUSH1 0xa0
00000fc6: DUP2
00000fc7: ADD
00000fc8: PUSH2 0x0fd1
00000fcb: DUP3
00000fcc: DUP9
00000fcd: PUSH2 0x0eec
00000fd0: JUMP
00000fd1: JUMPDEST
00000fd2: PUSH2 0x0fde
00000fd5: PUSH1 0x20
00000fd7: DUP4
00000fd8: ADD
00000fd9: DUP8
00000fda: PUSH2 0x0e3e
00000fdd: JUMP
00000fde: JUMPDEST
00000fdf: DUP2
00000fe0: DUP2
00000fe1: SUB
00000fe2: PUSH1 0x40
00000fe4: DUP4
00000fe5: ADD
00000fe6: MSTORE
00000fe7: PUSH2 0x0ff0
00000fea: DUP2
00000feb: DUP7
00000fec: PUSH2 0x0de5
00000fef: JUMP
00000ff0: JUMPDEST
00000ff1: SWAP1
00000ff2: POP
00000ff3: PUSH2 0x0fac
00000ff6: PUSH1 0x60
00000ff8: DUP4
00000ff9: ADD
00000ffa: DUP6
00000ffb: PUSH2 0x0ddc
00000ffe: JUMP
00000fff: JUMPDEST
00001000: PUSH1 0x40
00001002: MLOAD
00001003: DUP2
00001004: DUP2
00001005: ADD
00001006: PUSH8 0xffffffffffffffff
0000100f: DUP2
00001010: GT
00001011: DUP3
00001012: DUP3
00001013: LT
00001014: OR
00001015: ISZERO
00001016: PUSH2 0x101e
00001019: JUMPI
0000101a: PUSH1 0x00
0000101c: DUP1
0000101d: REVERT
0000101e: JUMPDEST
0000101f: PUSH1 0x40
00001021: MSTORE
00001022: SWAP2
00001023: SWAP1
00001024: POP
00001025: JUMP
00001026: JUMPDEST
00001027: PUSH1 0x00
00001029: PUSH8 0xffffffffffffffff
00001032: DUP3
00001033: GT
00001034: ISZERO
00001035: PUSH2 0x103d
00001038: JUMPI
00001039: PUSH1 0x00
0000103b: DUP1
0000103c: REVERT
0000103d: JUMPDEST
0000103e: POP
0000103f: PUSH1 0x20
00001041: SWAP1
00001042: DUP2
00001043: MUL
00001044: ADD
00001045: SWAP1
00001046: JUMP
00001047: JUMPDEST
00001048: PUSH1 0x20
0000104a: ADD
0000104b: SWAP1
0000104c: JUMP
0000104d: JUMPDEST
0000104e: MLOAD
0000104f: SWAP1
00001050: JUMP
00001051: JUMPDEST
00001052: SWAP1
00001053: DUP2
00001054: MSTORE
00001055: PUSH1 0x20
00001057: ADD
00001058: SWAP1
00001059: JUMP
0000105a: JUMPDEST
0000105b: PUSH1 0x00
0000105d: PUSH2 0x0c02
00001060: DUP3
00001061: PUSH2 0x106a
00001064: JUMP
00001065: JUMPDEST
00001066: ISZERO
00001067: ISZERO
00001068: SWAP1
00001069: JUMP
0000106a: JUMPDEST
0000106b: PUSH1 0x01
0000106d: PUSH1 0x01
0000106f: PUSH1 0xa0
00001071: SHL
00001072: SUB
00001073: AND
00001074: SWAP1
00001075: JUMP
00001076: JUMPDEST
00001077: SWAP1
00001078: JUMP
00001079: JUMPDEST
0000107a: PUSH1 0x00
0000107c: PUSH2 0x0c02
0000107f: DUP3
00001080: PUSH2 0x108f
00001083: JUMP
00001084: JUMPDEST
00001085: PUSH1 0x00
00001087: PUSH2 0x0c02
0000108a: DUP3
0000108b: PUSH2 0x1076
0000108e: JUMP
0000108f: JUMPDEST
00001090: PUSH1 0x00
00001092: PUSH2 0x0c02
00001095: DUP3
00001096: PUSH2 0x105a
00001099: JUMP
0000109a: JUMPDEST
0000109b: PUSH2 0x10a3
0000109e: DUP2
0000109f: PUSH2 0x105a
000010a2: JUMP
000010a3: JUMPDEST
000010a4: DUP2
000010a5: EQ
000010a6: PUSH2 0x10ae
000010a9: JUMPI
000010aa: PUSH1 0x00
000010ac: DUP1
000010ad: REVERT
000010ae: JUMPDEST
000010af: POP
000010b0: JUMP
000010b1: JUMPDEST
000010b2: PUSH2 0x10a3
000010b5: DUP2
000010b6: PUSH2 0x1065
000010b9: JUMP
000010ba: JUMPDEST
000010bb: PUSH2 0x10a3
000010be: DUP2
000010bf: PUSH2 0x1076
000010c2: JUMP
000010c3: INVALID
000010c4: LOG3
000010c5: PUSH6 0x627a7a723158
000010cc: KECCAK256
000010cd: CALLDATALOAD
000010ce: DIFFICULTY
000010cf: UNKNOWN(0x1F)
000010d0: EQ
000010d1: DUP1
000010d2: UNKNOWN(0xAC)
000010d3: CALLDATASIZE
000010d4: PUSH8 0x1925390024713c4d
000010dd: DUP4
000010de: EQ
000010df: UNKNOWN(0xDC)
000010e0: UNKNOWN(0xC3)
000010e1: UNKNOWN(0xE0)
000010e2: SLT
000010e3: UNKNOWN(0xCF)
000010e4: DUP15
000010e5: SWAP11
000010e6: LOG1
000010e7: UNKNOWN(0xD7)
000010e8: GASPRICE
000010e9: BLOBHASH
000010ea: SHL
000010eb: SAR
000010ec: LOG0
000010ed: PUSH13 0x6578706572696d656e74616cf5
000010fb: PUSH5 0x736f6c6343
00001101: STOP
00001102: SDIV
00001103: UNKNOWN(0x0C)
00001104: STOP
00001105: BLOCKHASH

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high auth detector Authorization based on tx.origin 70 no
view
validation_json
{
    "reason": "missing sink mapping",
    "status": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x52d11238",
            "selector": "0x52d11238",
            "calldata_variants": [
                "0x52d11238",
                "0x52d112380000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x89b09de7",
            "selector": "0x89b09de7",
            "calldata_variants": [
                "0x89b09de7",
                "0x89b09de70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa70c1aba",
            "selector": "0xa70c1aba",
            "calldata_variants": [
                "0xa70c1aba",
                "0xa70c1aba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [
        {
            "pc": 165,
            "type": "tx_origin_used"
        },
        {
            "pc": 190,
            "type": "tx_origin_used"
        },
        {
            "pc": 216,
            "type": "tx_origin_used"
        },
        {
            "pc": 246,
            "type": "tx_origin_used"
        },
        {
            "pc": 769,
            "type": "tx_origin_used"
        },
        {
            "pc": 794,
            "type": "tx_origin_used"
        },
        {
            "pc": 820,
            "type": "tx_origin_used"
        },
        {
            "pc": 850,
            "type": "tx_origin_used"
        },
        {
            "pc": 1253,
            "type": "tx_origin_used"
        },
        {
            "pc": 1278,
            "type": "tx_origin_used"
        },
        {
            "pc": 1304,
            "type": "tx_origin_used"
        },
        {
            "pc": 1334,
            "type": "tx_origin_used"
        },
        {
            "pc": 2126,
            "type": "tx_origin_used"
        },
        {
            "pc": 143,
            "type": "tx_origin_used"
        },
        {
            "pc": 172,
            "type": "tx_origin_used"
        },
        {
            "pc": 198,
            "type": "tx_origin_used"
        },
        {
            "pc": 224,
            "type": "tx_origin_used"
        },
        {
            "pc": 747,
            "type": "tx_origin_used"
        },
        {
            "pc": 776,
            "type": "tx_origin_used"
        },
        {
            "pc": 802,
            "type": "tx_origin_used"
        },
        {
            "pc": 828,
            "type": "tx_origin_used"
        },
        {
            "pc": 1231,
            "type": "tx_origin_used"
        },
        {
            "pc": 1260,
            "type": "tx_origin_used"
        },
        {
            "pc": 1286,
            "type": "tx_origin_used"
        },
        {
            "pc": 1312,
            "type": "tx_origin_used"
        },
        {
            "pc": 2104,
            "type": "tx_origin_used"
        }
    ]
}
high auth codex Authorization uses tx.origin 85 no
view
evidence_json
{
    "evidence": "Detector flagged multiple tx.origin guards in the control flow.",
    "locations": [
        "pc:143",
        "pc:165",
        "pc:190",
        "pc:216",
        "pc:246",
        "pc:747",
        "pc:769",
        "pc:820",
        "pc:850",
        "pc:1231",
        "pc:1253",
        "pc:1304",
        "pc:1334",
        "pc:2104",
        "pc:2126"
    ],
    "recommendation": "Replace tx.origin checks with msg.sender-based access control (owner/role mappings) and explicit authorization logic. If EOAs must be enforced, use EIP-1271/EIP-712 or a dedicated allowlist instead of tx.origin.",
    "exploit_scenario": "If privileged paths rely on tx.origin, a phishing contract can trick a user into calling it; the phishing contract then calls this contract so tx.origin remains the user and any tx.origin check passes, enabling unauthorized privileged actions."
}
medium other detector Untrusted CALL target/value reachable 45 no no
view
trace_id: 0xc6e0d1e8ba1b2c3b0dbeb9fd9a827eb483491131c0870e33b6b1cb9a3f4b1188
call_targets: 0x9dc55070584ca0a58cdfe98eeb32b9a48dc9885c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc6e0d1e8ba1b2c3b0dbeb9fd9a827eb483491131c0870e33b6b1cb9a3f4b1188",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9dc55070584ca0a58cdfe98eeb32b9a48dc9885c"
    ],
    "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": "0x52d11238",
            "selector": "0x52d11238",
            "calldata_variants": [
                "0x52d11238",
                "0x52d112380000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x89b09de7",
            "selector": "0x89b09de7",
            "calldata_variants": [
                "0x89b09de7",
                "0x89b09de70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa70c1aba",
            "selector": "0xa70c1aba",
            "calldata_variants": [
                "0xa70c1aba",
                "0xa70c1aba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 381,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 684,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 976,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 8,
    "guards_detected": [
        {
            "pc": 165,
            "type": "tx_origin_used"
        },
        {
            "pc": 190,
            "type": "tx_origin_used"
        },
        {
            "pc": 216,
            "type": "tx_origin_used"
        },
        {
            "pc": 246,
            "type": "tx_origin_used"
        },
        {
            "pc": 769,
            "type": "tx_origin_used"
        },
        {
            "pc": 794,
            "type": "tx_origin_used"
        },
        {
            "pc": 820,
            "type": "tx_origin_used"
        },
        {
            "pc": 850,
            "type": "tx_origin_used"
        },
        {
            "pc": 1253,
            "type": "tx_origin_used"
        },
        {
            "pc": 1278,
            "type": "tx_origin_used"
        },
        {
            "pc": 1304,
            "type": "tx_origin_used"
        },
        {
            "pc": 1334,
            "type": "tx_origin_used"
        },
        {
            "pc": 2126,
            "type": "tx_origin_used"
        },
        {
            "pc": 143,
            "type": "tx_origin_used"
        },
        {
            "pc": 172,
            "type": "tx_origin_used"
        },
        {
            "pc": 198,
            "type": "tx_origin_used"
        },
        {
            "pc": 224,
            "type": "tx_origin_used"
        },
        {
            "pc": 747,
            "type": "tx_origin_used"
        },
        {
            "pc": 776,
            "type": "tx_origin_used"
        },
        {
            "pc": 802,
            "type": "tx_origin_used"
        },
        {
            "pc": 828,
            "type": "tx_origin_used"
        },
        {
            "pc": 1231,
            "type": "tx_origin_used"
        },
        {
            "pc": 1260,
            "type": "tx_origin_used"
        },
        {
            "pc": 1286,
            "type": "tx_origin_used"
        },
        {
            "pc": 1312,
            "type": "tx_origin_used"
        },
        {
            "pc": 2104,
            "type": "tx_origin_used"
        }
    ],
    "untrusted_call_count": 8
}
medium other detector ETH value transfer possible 40 no no
view
trace_id: 0xc6e0d1e8ba1b2c3b0dbeb9fd9a827eb483491131c0870e33b6b1cb9a3f4b1188
call_targets: 0x9dc55070584ca0a58cdfe98eeb32b9a48dc9885c
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc6e0d1e8ba1b2c3b0dbeb9fd9a827eb483491131c0870e33b6b1cb9a3f4b1188",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x9dc55070584ca0a58cdfe98eeb32b9a48dc9885c"
    ],
    "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": "0x52d11238",
            "selector": "0x52d11238",
            "calldata_variants": [
                "0x52d11238",
                "0x52d112380000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x89b09de7",
            "selector": "0x89b09de7",
            "calldata_variants": [
                "0x89b09de7",
                "0x89b09de70000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xa70c1aba",
            "selector": "0xa70c1aba",
            "calldata_variants": [
                "0xa70c1aba",
                "0xa70c1aba0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 381,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 684,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 976,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 8,
    "guards_detected": [
        {
            "pc": 165,
            "type": "tx_origin_used"
        },
        {
            "pc": 190,
            "type": "tx_origin_used"
        },
        {
            "pc": 216,
            "type": "tx_origin_used"
        },
        {
            "pc": 246,
            "type": "tx_origin_used"
        },
        {
            "pc": 769,
            "type": "tx_origin_used"
        },
        {
            "pc": 794,
            "type": "tx_origin_used"
        },
        {
            "pc": 820,
            "type": "tx_origin_used"
        },
        {
            "pc": 850,
            "type": "tx_origin_used"
        },
        {
            "pc": 1253,
            "type": "tx_origin_used"
        },
        {
            "pc": 1278,
            "type": "tx_origin_used"
        },
        {
            "pc": 1304,
            "type": "tx_origin_used"
        },
        {
            "pc": 1334,
            "type": "tx_origin_used"
        },
        {
            "pc": 2126,
            "type": "tx_origin_used"
        },
        {
            "pc": 143,
            "type": "tx_origin_used"
        },
        {
            "pc": 172,
            "type": "tx_origin_used"
        },
        {
            "pc": 198,
            "type": "tx_origin_used"
        },
        {
            "pc": 224,
            "type": "tx_origin_used"
        },
        {
            "pc": 747,
            "type": "tx_origin_used"
        },
        {
            "pc": 776,
            "type": "tx_origin_used"
        },
        {
            "pc": 802,
            "type": "tx_origin_used"
        },
        {
            "pc": 828,
            "type": "tx_origin_used"
        },
        {
            "pc": 1231,
            "type": "tx_origin_used"
        },
        {
            "pc": 1260,
            "type": "tx_origin_used"
        },
        {
            "pc": 1286,
            "type": "tx_origin_used"
        },
        {
            "pc": 1312,
            "type": "tx_origin_used"
        },
        {
            "pc": 2104,
            "type": "tx_origin_used"
        }
    ]
}
low other codex External CALLs with computed target/value (potentially user-controlled) 65 no
view
evidence_json
{
    "evidence": "Detector evidence shows CALL opcodes with computed target/value; validation trace saw a constant target in one run but does not prove all paths are constant or validated.",
    "locations": [
        "pc:381",
        "pc:684",
        "pc:976",
        "pc:1621",
        "pc:1916",
        "pc:2228",
        "pc:2419",
        "pc:2689"
    ],
    "recommendation": "Restrict call targets via allowlists, validate calldata-derived addresses/values, and follow checks-effects-interactions (or add reentrancy guards) around external calls that can send value.",
    "exploit_scenario": "Several CALL sites use computed targets and values. If any of these are derived from calldata or mutable storage without strict validation, an attacker could redirect calls to arbitrary addresses, transfer ETH, or trigger reentrant behavior in an unexpected external contract. Bytecode-only evidence cannot confirm whether targets are fixed or validated."
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 14
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 14
}