019c0ea9-06f3-7351-913e-e120102597a8
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 41480 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 41481 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 41482 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 41483 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 41484 | capability.graph | complete | 1 / 3 | 2 months ago |
| 41485 | detector.run | complete | 1 / 3 | 2 months ago |
| 41486 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42175 | report.consolidate | complete | 1 / 6 | 2 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Detected a tx.origin-based guard and a low-confidence computed CALL with unchecked return; bytecode-only analysis with limited selector context.","findings":[{"severity":"medium","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"If a privileged EOA interacts with an attacker-controlled contract, the attacker contract can invoke the guarded function; tx.origin stays the EOA so the check may pass even though msg.sender is untrusted.","recommendation":"Use msg.sender for authorization (or an explicit access-control role). Avoid tx.origin-based gating; if meta-tx support is needed, adopt a trusted forwarder pattern (e.g., EIP-2771).","evidence":"Auth guard list includes tx_origin_used at pc 5188, and the basic block at start_pc 5181 contains the ORIGIN opcode, indicating tx.origin is consulted in a guard check.","locations":["pc:5188","pc:5181"]},{"severity":"low","category":"other","title":"CALL with computed target/value and unchecked return","exploit_scenario":"If the call target or value can vary based on user input on some paths, an attacker could trigger an external call with value and reenter or cause a silent failure while execution continues. This is low-confidence because the trace suggests the target may be constant (self-call).","recommendation":"Confirm the call target is fixed or rigorously validated. Check the CALL return value and handle failures explicitly. If the target can be untrusted, add reentrancy protections around state updates before/after the call.","evidence":"Callsites list shows CALL at pc 3355 and pc 4758 with target/value marked computed and returndata_checked null. Detector flags untrusted CALL/ETH value transfer, but validation trace reports a constant target of 0x163a948770020a636a87a48acb33d7575445474b (self), so risk is uncertain.","locations":["pc:3355","pc:4758"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-tnm0a5qz
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0eae-3139-7733-ad8b-cdfa8def2cb1
--------
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-tnm0a5qz succeeded in 6ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-tnm0a5qz succeeded in 19ms:
{
"analysis_artifact": {
"address": "0x163a948770020a636a87a48acb33d7575445474b",
"artifact_hash": "0x94d472e7d3f4ac4c4ca411db49c3be8503b87565a7724af4fa6c926483d48d14",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 1842,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2188,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3126,
"type": "msg_sender_eq_const",
exec
/bin/bash -lc 'rg -n "pc": 3355 -n BYTECODE_BUNDLE.json' in /tmp/codex-tnm0a5qz exited 2 in 11ms:
rg: 3355: No such file or directory (os error 2)
exec
/bin/bash -lc "rg -n '\"pc\": 3355' BYTECODE_BUNDLE.json" in /tmp/codex-tnm0a5qz succeeded in 6ms:
4392: "pc": 3355,
11837: "pc": 3355,
11988: "pc": 3355,
12068: "pc": 3355,
exec
/bin/bash -lc "sed -n '4360,4425p' BYTECODE_BUNDLE.json" in /tmp/codex-tnm0a5qz succeeded in 24ms:
"PUSH6",
"SHA3",
"OP_A4",
"OP_CC",
"MLOAD",
"OP_D8",
"PUSH16",
"STOP"
],
"start_pc": 5150
},
{
"end_pc": 5190,
"hash": "0x4ac985c8d2c31cfc45dfd212bac39ef546072cdad229a141ba4d46ba06cb7f4c",
"opcodes": [
"OP_A0",
"OP_BC",
"OP_89",
"SHA3",
"OP_CD",
exec
/bin/bash -lc "rg -n '\"start_pc\": 33' BYTECODE_BUNDLE.json | head" in /tmp/codex-tnm0a5qz succeeded in 7ms:
2754: "start_pc": 3367
2800: "start_pc": 3371
11222: "start_pc": 3367,
11229: "start_pc": 3371,
exec
/bin/bash -lc "rg -n '\"start_pc\": 33[0-9][0-9]' BYTECODE_BUNDLE.json" in /tmp/codex-tnm0a5qz succeeded in 10ms:
2754: "start_pc": 3367
2800: "start_pc": 3371
11222: "start_pc": 3367,
11229: "start_pc": 3371,
exec
/bin/bash -lc 'cat codex-output-schema.json' in /tmp/codex-tnm0a5qz succeeded in 7ms:
{"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
{"no_findings":false,"summary":"Detected a tx.origin-based guard and a low-confidence computed CALL with unchecked return; bytecode-only analysis with limited selector context.","findings":[{"severity":"medium","category":"auth","title":"Authorization uses tx.origin","exploit_scenario":"If a privileged EOA interacts with an attacker-controlled contract, the attacker contract can invoke the guarded function; tx.origin stays the EOA so the check may pass even though msg.sender is untrusted.","recommendation":"Use msg.sender for authorization (or an explicit access-control role). Avoid tx.origin-based gating; if meta-tx support is needed, adopt a trusted forwarder pattern (e.g., EIP-2771).","evidence":"Auth guard list includes tx_origin_used at pc 5188, and the basic block at start_pc 5181 contains the ORIGIN opcode, indicating tx.origin is consulted in a guard check.","locations":["pc:5188","pc:5181"]},{"severity":"low","category":"other","title":"CALL with computed target/value and unchecked return","exploit_scenario":"If the call target or value can vary based on user input on some paths, an attacker could trigger an external call with value and reenter or cause a silent failure while execution continues. This is low-confidence because the trace suggests the target may be constant (self-call).","recommendation":"Confirm the call target is fixed or rigorously validated. Check the CALL return value and handle failures explicitly. If the target can be untrusted, add reentrancy protections around state updates before/after the call.","evidence":"Callsites list shows CALL at pc 3355 and pc 4758 with target/value marked computed and returndata_checked null. Detector flags untrusted CALL/ETH value transfer, but validation trace reports a constant target of 0x163a948770020a636a87a48acb33d7575445474b (self), so risk is uncertain.","locations":["pc:3355","pc:4758"]}]}
tokens used
32,822
{
"codex": {
"ran_at": "2026-01-30T11:35:03.561102+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 10388,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Detected a tx.origin-based guard and a low-confidence computed CALL with unchecked return; bytecode-only analysis with limited selector context.",
"raw_final": {
"summary": "Detected a tx.origin-based guard and a low-confidence computed CALL with unchecked return; bytecode-only analysis with limited selector context.",
"findings": [
{
"title": "Authorization uses tx.origin",
"category": "auth",
"evidence": "Auth guard list includes tx_origin_used at pc 5188, and the basic block at start_pc 5181 contains the ORIGIN opcode, indicating tx.origin is consulted in a guard check.",
"severity": "medium",
"locations": [
"pc:5188",
"pc:5181"
],
"recommendation": "Use msg.sender for authorization (or an explicit access-control role). Avoid tx.origin-based gating; if meta-tx support is needed, adopt a trusted forwarder pattern (e.g., EIP-2771).",
"exploit_scenario": "If a privileged EOA interacts with an attacker-controlled contract, the attacker contract can invoke the guarded function; tx.origin stays the EOA so the check may pass even though msg.sender is untrusted."
},
{
"title": "CALL with computed target/value and unchecked return",
"category": "other",
"evidence": "Callsites list shows CALL at pc 3355 and pc 4758 with target/value marked computed and returndata_checked null. Detector flags untrusted CALL/ETH value transfer, but validation trace reports a constant target of 0x163a948770020a636a87a48acb33d7575445474b (self), so risk is uncertain.",
"severity": "low",
"locations": [
"pc:3355",
"pc:4758"
],
"recommendation": "Confirm the call target is fixed or rigorously validated. Check the CALL return value and handle failures explicitly. If the target can be untrusted, add reentrancy protections around state updates before/after the call.",
"exploit_scenario": "If the call target or value can vary based on user input on some paths, an attacker could trigger an external call with value and reenter or cause a silent failure while execution continues. This is low-confidence because the trace suggests the target may be constant (self-call)."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x60 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00af 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002e: SWAP1 0000002f: DIV 00000030: PUSH4 0xffffffff 00000035: AND 00000036: DUP1 00000037: PUSH4 0x1506ae59 0000003c: EQ 0000003d: PUSH2 0x00b4 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0x209fd971 00000047: EQ 00000048: PUSH2 0x0101 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0x21cf39ee 00000052: EQ 00000053: PUSH2 0x01ba 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0x5203dcda 0000005d: EQ 0000005e: PUSH2 0x01e3 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0x6be1320b 00000068: EQ 00000069: PUSH2 0x0213 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0x867d0dd4 00000073: EQ 00000074: PUSH2 0x0243 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0x9ca4218f 0000007e: EQ 0000007f: PUSH2 0x029b 00000082: JUMPI 00000083: DUP1 00000084: PUSH4 0xa8d2021a 00000089: EQ 0000008a: PUSH2 0x02c4 0000008d: JUMPI 0000008e: DUP1 0000008f: PUSH4 0xb09b2f85 00000094: EQ 00000095: PUSH2 0x02f4 00000098: JUMPI 00000099: DUP1 0000009a: PUSH4 0xd9b42a7f 0000009f: EQ 000000a0: PUSH2 0x0319 000000a3: JUMPI 000000a4: DUP1 000000a5: PUSH4 0xeafb64d5 000000aa: EQ 000000ab: PUSH2 0x0349 000000ae: JUMPI 000000af: JUMPDEST 000000b0: PUSH1 0x00 000000b2: DUP1 000000b3: REVERT 000000b4: JUMPDEST 000000b5: PUSH2 0x00ff 000000b8: PUSH1 0x04 000000ba: DUP1 000000bb: DUP1 000000bc: CALLDATALOAD 000000bd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000d2: AND 000000d3: SWAP1 000000d4: PUSH1 0x20 000000d6: ADD 000000d7: SWAP1 000000d8: SWAP2 000000d9: SWAP1 000000da: DUP1 000000db: CALLDATALOAD 000000dc: SWAP1 000000dd: PUSH1 0x20 000000df: ADD 000000e0: SWAP1 000000e1: SWAP2 000000e2: SWAP1 000000e3: DUP1 000000e4: CALLDATALOAD 000000e5: SWAP1 000000e6: PUSH1 0x20 000000e8: ADD 000000e9: SWAP1 000000ea: SWAP2 000000eb: SWAP1 000000ec: DUP1 000000ed: CALLDATALOAD 000000ee: PUSH1 0x00 000000f0: NOT 000000f1: AND 000000f2: SWAP1 000000f3: PUSH1 0x20 000000f5: ADD 000000f6: SWAP1 000000f7: SWAP2 000000f8: SWAP1 000000f9: POP 000000fa: POP 000000fb: PUSH2 0x0379 000000fe: JUMP 000000ff: JUMPDEST 00000100: STOP 00000101: JUMPDEST 00000102: CALLVALUE 00000103: ISZERO 00000104: PUSH2 0x010c 00000107: JUMPI 00000108: PUSH1 0x00 0000010a: DUP1 0000010b: REVERT 0000010c: JUMPDEST 0000010d: PUSH2 0x0122 00000110: PUSH1 0x04 00000112: DUP1 00000113: DUP1 00000114: CALLDATALOAD 00000115: SWAP1 00000116: PUSH1 0x20 00000118: ADD 00000119: SWAP1 0000011a: SWAP2 0000011b: SWAP1 0000011c: POP 0000011d: POP 0000011e: PUSH2 0x0641 00000121: JUMP 00000122: JUMPDEST 00000123: PUSH1 0x40 00000125: MLOAD 00000126: DUP1 00000127: DUP7 00000128: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000013d: AND 0000013e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000153: AND 00000154: DUP2 00000155: MSTORE 00000156: PUSH1 0x20 00000158: ADD 00000159: DUP6 0000015a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000016f: AND 00000170: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000185: AND 00000186: DUP2 00000187: MSTORE 00000188: PUSH1 0x20 0000018a: ADD 0000018b: DUP5 0000018c: DUP2 0000018d: MSTORE 0000018e: PUSH1 0x20 00000190: ADD 00000191: DUP4 00000192: PUSH1 0x05 00000194: DUP2 00000195: GT 00000196: ISZERO 00000197: PUSH2 0x019c 0000019a: JUMPI 0000019b: INVALID 0000019c: JUMPDEST 0000019d: PUSH1 0xff 0000019f: AND 000001a0: DUP2 000001a1: MSTORE 000001a2: PUSH1 0x20 000001a4: ADD 000001a5: DUP3 000001a6: DUP2 000001a7: MSTORE 000001a8: PUSH1 0x20 000001aa: ADD 000001ab: SWAP6 000001ac: POP 000001ad: POP 000001ae: POP 000001af: POP 000001b0: POP 000001b1: POP 000001b2: PUSH1 0x40 000001b4: MLOAD 000001b5: DUP1 000001b6: SWAP2 000001b7: SUB 000001b8: SWAP1 000001b9: RETURN 000001ba: JUMPDEST 000001bb: CALLVALUE 000001bc: ISZERO 000001bd: PUSH2 0x01c5 000001c0: JUMPI 000001c1: PUSH1 0x00 000001c3: DUP1 000001c4: REVERT 000001c5: JUMPDEST 000001c6: PUSH2 0x01cd 000001c9: PUSH2 0x06d3 000001cc: JUMP 000001cd: JUMPDEST 000001ce: PUSH1 0x40 000001d0: MLOAD 000001d1: DUP1 000001d2: DUP3 000001d3: DUP2 000001d4: MSTORE 000001d5: PUSH1 0x20 000001d7: ADD 000001d8: SWAP2 000001d9: POP 000001da: POP 000001db: PUSH1 0x40 000001dd: MLOAD 000001de: DUP1 000001df: SWAP2 000001e0: SUB 000001e1: SWAP1 000001e2: RETURN 000001e3: JUMPDEST 000001e4: CALLVALUE 000001e5: ISZERO 000001e6: PUSH2 0x01ee 000001e9: JUMPI 000001ea: PUSH1 0x00 000001ec: DUP1 000001ed: REVERT 000001ee: JUMPDEST 000001ef: PUSH2 0x0211 000001f2: PUSH1 0x04 000001f4: DUP1 000001f5: DUP1 000001f6: CALLDATALOAD 000001f7: SWAP1 000001f8: PUSH1 0x20 000001fa: ADD 000001fb: SWAP1 000001fc: SWAP2 000001fd: SWAP1 000001fe: DUP1 000001ff: CALLDATALOAD 00000200: PUSH1 0x00 00000202: NOT 00000203: AND 00000204: SWAP1 00000205: PUSH1 0x20 00000207: ADD 00000208: SWAP1 00000209: SWAP2 0000020a: SWAP1 0000020b: POP 0000020c: POP 0000020d: PUSH2 0x06d9 00000210: JUMP 00000211: JUMPDEST 00000212: STOP 00000213: JUMPDEST 00000214: CALLVALUE 00000215: ISZERO 00000216: PUSH2 0x021e 00000219: JUMPI 0000021a: PUSH1 0x00 0000021c: DUP1 0000021d: REVERT 0000021e: JUMPDEST 0000021f: PUSH2 0x0241 00000222: PUSH1 0x04 00000224: DUP1 00000225: DUP1 00000226: CALLDATALOAD 00000227: SWAP1 00000228: PUSH1 0x20 0000022a: ADD 0000022b: SWAP1 0000022c: SWAP2 0000022d: SWAP1 0000022e: DUP1 0000022f: CALLDATALOAD 00000230: PUSH1 0x00 00000232: NOT 00000233: AND 00000234: SWAP1 00000235: PUSH1 0x20 00000237: ADD 00000238: SWAP1 00000239: SWAP2 0000023a: SWAP1 0000023b: POP 0000023c: POP 0000023d: PUSH2 0x0833 00000240: JUMP 00000241: JUMPDEST 00000242: STOP 00000243: JUMPDEST 00000244: CALLVALUE 00000245: ISZERO 00000246: PUSH2 0x024e 00000249: JUMPI 0000024a: PUSH1 0x00 0000024c: DUP1 0000024d: REVERT 0000024e: JUMPDEST 0000024f: PUSH2 0x0299 00000252: PUSH1 0x04 00000254: DUP1 00000255: DUP1 00000256: CALLDATALOAD 00000257: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000026c: AND 0000026d: SWAP1 0000026e: PUSH1 0x20 00000270: ADD 00000271: SWAP1 00000272: SWAP2 00000273: SWAP1 00000274: DUP1 00000275: CALLDATALOAD 00000276: SWAP1 00000277: PUSH1 0x20 00000279: ADD 0000027a: SWAP1 0000027b: SWAP2 0000027c: SWAP1 0000027d: DUP1 0000027e: CALLDATALOAD 0000027f: SWAP1 00000280: PUSH1 0x20 00000282: ADD 00000283: SWAP1 00000284: SWAP2 00000285: SWAP1 00000286: DUP1 00000287: CALLDATALOAD 00000288: PUSH1 0x00 0000028a: NOT 0000028b: AND 0000028c: SWAP1 0000028d: PUSH1 0x20 0000028f: ADD 00000290: SWAP1 00000291: SWAP2 00000292: SWAP1 00000293: POP 00000294: POP 00000295: PUSH2 0x098e 00000298: JUMP 00000299: JUMPDEST 0000029a: STOP 0000029b: JUMPDEST 0000029c: CALLVALUE 0000029d: ISZERO 0000029e: PUSH2 0x02a6 000002a1: JUMPI 000002a2: PUSH1 0x00 000002a4: DUP1 000002a5: REVERT 000002a6: JUMPDEST 000002a7: PUSH2 0x02ae 000002aa: PUSH2 0x0bd5 000002ad: JUMP 000002ae: JUMPDEST 000002af: PUSH1 0x40 000002b1: MLOAD 000002b2: DUP1 000002b3: DUP3 000002b4: DUP2 000002b5: MSTORE 000002b6: PUSH1 0x20 000002b8: ADD 000002b9: SWAP2 000002ba: POP 000002bb: POP 000002bc: PUSH1 0x40 000002be: MLOAD 000002bf: DUP1 000002c0: SWAP2 000002c1: SUB 000002c2: SWAP1 000002c3: RETURN 000002c4: JUMPDEST 000002c5: CALLVALUE 000002c6: ISZERO 000002c7: PUSH2 0x02cf 000002ca: JUMPI 000002cb: PUSH1 0x00 000002cd: DUP1 000002ce: REVERT 000002cf: JUMPDEST 000002d0: PUSH2 0x02f2 000002d3: PUSH1 0x04 000002d5: DUP1 000002d6: DUP1 000002d7: CALLDATALOAD 000002d8: SWAP1 000002d9: PUSH1 0x20 000002db: ADD 000002dc: SWAP1 000002dd: SWAP2 000002de: SWAP1 000002df: DUP1 000002e0: CALLDATALOAD 000002e1: PUSH1 0x00 000002e3: NOT 000002e4: AND 000002e5: SWAP1 000002e6: PUSH1 0x20 000002e8: ADD 000002e9: SWAP1 000002ea: SWAP2 000002eb: SWAP1 000002ec: POP 000002ed: POP 000002ee: PUSH2 0x0bdb 000002f1: JUMP 000002f2: JUMPDEST 000002f3: STOP 000002f4: JUMPDEST 000002f5: PUSH2 0x0317 000002f8: PUSH1 0x04 000002fa: DUP1 000002fb: DUP1 000002fc: CALLDATALOAD 000002fd: SWAP1 000002fe: PUSH1 0x20 00000300: ADD 00000301: SWAP1 00000302: SWAP2 00000303: SWAP1 00000304: DUP1 00000305: CALLDATALOAD 00000306: PUSH1 0x00 00000308: NOT 00000309: AND 0000030a: SWAP1 0000030b: PUSH1 0x20 0000030d: ADD 0000030e: SWAP1 0000030f: SWAP2 00000310: SWAP1 00000311: POP 00000312: POP 00000313: PUSH2 0x0d78 00000316: JUMP 00000317: JUMPDEST 00000318: STOP 00000319: JUMPDEST 0000031a: CALLVALUE 0000031b: ISZERO 0000031c: PUSH2 0x0324 0000031f: JUMPI 00000320: PUSH1 0x00 00000322: DUP1 00000323: REVERT 00000324: JUMPDEST 00000325: PUSH2 0x0347 00000328: PUSH1 0x04 0000032a: DUP1 0000032b: DUP1 0000032c: CALLDATALOAD 0000032d: SWAP1 0000032e: PUSH1 0x20 00000330: ADD 00000331: SWAP1 00000332: SWAP2 00000333: SWAP1 00000334: DUP1 00000335: CALLDATALOAD 00000336: PUSH1 0x00 00000338: NOT 00000339: AND 0000033a: SWAP1 0000033b: PUSH1 0x20 0000033d: ADD 0000033e: SWAP1 0000033f: SWAP2 00000340: SWAP1 00000341: POP 00000342: POP 00000343: PUSH2 0x0fbc 00000346: JUMP 00000347: JUMPDEST 00000348: STOP 00000349: JUMPDEST 0000034a: CALLVALUE 0000034b: ISZERO 0000034c: PUSH2 0x0354 0000034f: JUMPI 00000350: PUSH1 0x00 00000352: DUP1 00000353: REVERT 00000354: JUMPDEST 00000355: PUSH2 0x0377 00000358: PUSH1 0x04 0000035a: DUP1 0000035b: DUP1 0000035c: CALLDATALOAD 0000035d: SWAP1 0000035e: PUSH1 0x20 00000360: ADD 00000361: SWAP1 00000362: SWAP2 00000363: SWAP1 00000364: DUP1 00000365: CALLDATALOAD 00000366: PUSH1 0x00 00000368: NOT 00000369: AND 0000036a: SWAP1 0000036b: PUSH1 0x20 0000036d: ADD 0000036e: SWAP1 0000036f: SWAP2 00000370: SWAP1 00000371: POP 00000372: POP 00000373: PUSH2 0x1110 00000376: JUMP 00000377: JUMPDEST 00000378: STOP 00000379: JUMPDEST 0000037a: PUSH2 0x0381 0000037d: PUSH2 0x12f3 00000380: JUMP 00000381: JUMPDEST 00000382: DUP4 00000383: CALLVALUE 00000384: LT 00000385: ISZERO 00000386: ISZERO 00000387: ISZERO 00000388: PUSH2 0x0390 0000038b: JUMPI 0000038c: PUSH1 0x00 0000038e: DUP1 0000038f: REVERT 00000390: JUMPDEST 00000391: DUP5 00000392: DUP2 00000393: PUSH1 0x00 00000395: ADD 00000396: SWAP1 00000397: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003ac: AND 000003ad: SWAP1 000003ae: DUP2 000003af: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003c4: AND 000003c5: DUP2 000003c6: MSTORE 000003c7: POP 000003c8: POP 000003c9: CALLER 000003ca: DUP2 000003cb: PUSH1 0x20 000003cd: ADD 000003ce: SWAP1 000003cf: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003e4: AND 000003e5: SWAP1 000003e6: DUP2 000003e7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003fc: AND 000003fd: DUP2 000003fe: MSTORE 000003ff: POP 00000400: POP 00000401: DUP4 00000402: DUP2 00000403: PUSH1 0x40 00000405: ADD 00000406: DUP2 00000407: DUP2 00000408: MSTORE 00000409: POP 0000040a: POP 0000040b: PUSH1 0x01 0000040d: DUP2 0000040e: PUSH1 0x60 00000410: ADD 00000411: SWAP1 00000412: PUSH1 0x05 00000414: DUP2 00000415: GT 00000416: ISZERO 00000417: PUSH2 0x041c 0000041a: JUMPI 0000041b: INVALID 0000041c: JUMPDEST 0000041d: SWAP1 0000041e: DUP2 0000041f: PUSH1 0x05 00000421: DUP2 00000422: GT 00000423: ISZERO 00000424: PUSH2 0x0429 00000427: JUMPI 00000428: INVALID 00000429: JUMPDEST 0000042a: DUP2 0000042b: MSTORE 0000042c: POP 0000042d: POP 0000042e: PUSH1 0x01 00000430: DUP4 00000431: MUL 00000432: TIMESTAMP 00000433: ADD 00000434: DUP2 00000435: PUSH1 0x80 00000437: ADD 00000438: DUP2 00000439: DUP2 0000043a: MSTORE 0000043b: POP 0000043c: POP 0000043d: PUSH1 0x02 0000043f: DUP1 00000440: SLOAD 00000441: DUP1 00000442: PUSH1 0x01 00000444: ADD 00000445: DUP3 00000446: DUP2 00000447: PUSH2 0x0450 0000044a: SWAP2 0000044b: SWAP1 0000044c: PUSH2 0x135a 0000044f: JUMP 00000450: JUMPDEST 00000451: SWAP2 00000452: PUSH1 0x00 00000454: MSTORE 00000455: PUSH1 0x20 00000457: PUSH1 0x00 00000459: KECCAK256 0000045a: SWAP1 0000045b: PUSH1 0x05 0000045d: MUL 0000045e: ADD 0000045f: PUSH1 0x00 00000461: DUP4 00000462: SWAP1 00000463: SWAP2 00000464: SWAP1 00000465: SWAP2 00000466: POP 00000467: PUSH1 0x00 00000469: DUP3 0000046a: ADD 0000046b: MLOAD 0000046c: DUP2 0000046d: PUSH1 0x00 0000046f: ADD 00000470: PUSH1 0x00 00000472: PUSH2 0x0100 00000475: EXP 00000476: DUP2 00000477: SLOAD 00000478: DUP2 00000479: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000048e: MUL 0000048f: NOT 00000490: AND 00000491: SWAP1 00000492: DUP4 00000493: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004a8: AND 000004a9: MUL 000004aa: OR 000004ab: SWAP1 000004ac: SSTORE 000004ad: POP 000004ae: PUSH1 0x20 000004b0: DUP3 000004b1: ADD 000004b2: MLOAD 000004b3: DUP2 000004b4: PUSH1 0x01 000004b6: ADD 000004b7: PUSH1 0x00 000004b9: PUSH2 0x0100 000004bc: EXP 000004bd: DUP2 000004be: SLOAD 000004bf: DUP2 000004c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004d5: MUL 000004d6: NOT 000004d7: AND 000004d8: SWAP1 000004d9: DUP4 000004da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004ef: AND 000004f0: MUL 000004f1: OR 000004f2: SWAP1 000004f3: SSTORE 000004f4: POP 000004f5: PUSH1 0x40 000004f7: DUP3 000004f8: ADD 000004f9: MLOAD 000004fa: DUP2 000004fb: PUSH1 0x02 000004fd: ADD 000004fe: SSTORE 000004ff: PUSH1 0x60 00000501: DUP3 00000502: ADD 00000503: MLOAD 00000504: DUP2 00000505: PUSH1 0x03 00000507: ADD 00000508: PUSH1 0x00 0000050a: PUSH2 0x0100 0000050d: EXP 0000050e: DUP2 0000050f: SLOAD 00000510: DUP2 00000511: PUSH1 0xff 00000513: MUL 00000514: NOT 00000515: AND 00000516: SWAP1 00000517: DUP4 00000518: PUSH1 0x05 0000051a: DUP2 0000051b: GT 0000051c: ISZERO 0000051d: PUSH2 0x0522 00000520: JUMPI 00000521: INVALID 00000522: JUMPDEST 00000523: MUL 00000524: OR 00000525: SWAP1 00000526: SSTORE 00000527: POP 00000528: PUSH1 0x80 0000052a: DUP3 0000052b: ADD 0000052c: MLOAD 0000052d: DUP2 0000052e: PUSH1 0x04 00000530: ADD 00000531: SSTORE 00000532: POP 00000533: POP 00000534: POP 00000535: PUSH32 0xbde301cda1a53e4996e7061649145cdb878697bd928c5344ad670f867666807d 00000556: PUSH1 0x01 00000558: PUSH1 0x02 0000055a: DUP1 0000055b: SLOAD 0000055c: SWAP1 0000055d: POP 0000055e: SUB 0000055f: DUP7 00000560: CALLER 00000561: DUP6 00000562: PUSH1 0x40 00000564: MLOAD 00000565: DUP1 00000566: DUP6 00000567: DUP2 00000568: MSTORE 00000569: PUSH1 0x20 0000056b: ADD 0000056c: DUP5 0000056d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000582: AND 00000583: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000598: AND 00000599: DUP2 0000059a: MSTORE 0000059b: PUSH1 0x20 0000059d: ADD 0000059e: DUP4 0000059f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005b4: AND 000005b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000005ca: AND 000005cb: DUP2 000005cc: MSTORE 000005cd: PUSH1 0x20 000005cf: ADD 000005d0: DUP3 000005d1: PUSH1 0x00 000005d3: NOT 000005d4: AND 000005d5: PUSH1 0x00 000005d7: NOT 000005d8: AND 000005d9: DUP2 000005da: MSTORE 000005db: PUSH1 0x20 000005dd: ADD 000005de: SWAP5 000005df: POP 000005e0: POP 000005e1: POP 000005e2: POP 000005e3: POP 000005e4: PUSH1 0x40 000005e6: MLOAD 000005e7: DUP1 000005e8: SWAP2 000005e9: SUB 000005ea: SWAP1 000005eb: LOG1 000005ec: PUSH32 0x6a5ee55c9df2daa4375d2b5e4ec8b9e5662f1863207bcbe6e38c6f5fe3c24300 0000060d: PUSH1 0x01 0000060f: PUSH1 0x02 00000611: DUP1 00000612: SLOAD 00000613: SWAP1 00000614: POP 00000615: SUB 00000616: DUP4 00000617: PUSH1 0x40 00000619: MLOAD 0000061a: DUP1 0000061b: DUP4 0000061c: DUP2 0000061d: MSTORE 0000061e: PUSH1 0x20 00000620: ADD 00000621: DUP3 00000622: PUSH1 0x00 00000624: NOT 00000625: AND 00000626: PUSH1 0x00 00000628: NOT 00000629: AND 0000062a: DUP2 0000062b: MSTORE 0000062c: PUSH1 0x20 0000062e: ADD 0000062f: SWAP3 00000630: POP 00000631: POP 00000632: POP 00000633: PUSH1 0x40 00000635: MLOAD 00000636: DUP1 00000637: SWAP2 00000638: SUB 00000639: SWAP1 0000063a: LOG1 0000063b: POP 0000063c: POP 0000063d: POP 0000063e: POP 0000063f: POP 00000640: JUMP 00000641: JUMPDEST 00000642: PUSH1 0x02 00000644: DUP2 00000645: DUP2 00000646: SLOAD 00000647: DUP2 00000648: LT 00000649: ISZERO 0000064a: ISZERO 0000064b: PUSH2 0x0650 0000064e: JUMPI 0000064f: INVALID 00000650: JUMPDEST 00000651: SWAP1 00000652: PUSH1 0x00 00000654: MSTORE 00000655: PUSH1 0x20 00000657: PUSH1 0x00 00000659: KECCAK256 0000065a: SWAP1 0000065b: PUSH1 0x05 0000065d: MUL 0000065e: ADD 0000065f: PUSH1 0x00 00000661: SWAP2 00000662: POP 00000663: SWAP1 00000664: POP 00000665: DUP1 00000666: PUSH1 0x00 00000668: ADD 00000669: PUSH1 0x00 0000066b: SWAP1 0000066c: SLOAD 0000066d: SWAP1 0000066e: PUSH2 0x0100 00000671: EXP 00000672: SWAP1 00000673: DIV 00000674: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000689: AND 0000068a: SWAP1 0000068b: DUP1 0000068c: PUSH1 0x01 0000068e: ADD 0000068f: PUSH1 0x00 00000691: SWAP1 00000692: SLOAD 00000693: SWAP1 00000694: PUSH2 0x0100 00000697: EXP 00000698: SWAP1 00000699: DIV 0000069a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006af: AND 000006b0: SWAP1 000006b1: DUP1 000006b2: PUSH1 0x02 000006b4: ADD 000006b5: SLOAD 000006b6: SWAP1 000006b7: DUP1 000006b8: PUSH1 0x03 000006ba: ADD 000006bb: PUSH1 0x00 000006bd: SWAP1 000006be: SLOAD 000006bf: SWAP1 000006c0: PUSH2 0x0100 000006c3: EXP 000006c4: SWAP1 000006c5: DIV 000006c6: PUSH1 0xff 000006c8: AND 000006c9: SWAP1 000006ca: DUP1 000006cb: PUSH1 0x04 000006cd: ADD 000006ce: SLOAD 000006cf: SWAP1 000006d0: POP 000006d1: DUP6 000006d2: JUMP 000006d3: JUMPDEST 000006d4: PUSH1 0x01 000006d6: SLOAD 000006d7: DUP2 000006d8: JUMP 000006d9: JUMPDEST 000006da: DUP2 000006db: PUSH1 0x02 000006dd: DUP2 000006de: DUP2 000006df: SLOAD 000006e0: DUP2 000006e1: LT 000006e2: ISZERO 000006e3: ISZERO 000006e4: PUSH2 0x06e9 000006e7: JUMPI 000006e8: INVALID 000006e9: JUMPDEST 000006ea: SWAP1 000006eb: PUSH1 0x00 000006ed: MSTORE 000006ee: PUSH1 0x20 000006f0: PUSH1 0x00 000006f2: KECCAK256 000006f3: SWAP1 000006f4: PUSH1 0x05 000006f6: MUL 000006f7: ADD 000006f8: PUSH1 0x01 000006fa: ADD 000006fb: PUSH1 0x00 000006fd: SWAP1 000006fe: SLOAD 000006ff: SWAP1 00000700: PUSH2 0x0100 00000703: EXP 00000704: SWAP1 00000705: DIV 00000706: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000071b: AND 0000071c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000731: AND 00000732: CALLER 00000733: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000748: AND 00000749: EQ 0000074a: ISZERO 0000074b: ISZERO 0000074c: PUSH2 0x0754 0000074f: JUMPI 00000750: PUSH1 0x00 00000752: DUP1 00000753: REVERT 00000754: JUMPDEST 00000755: PUSH1 0x03 00000757: PUSH1 0x05 00000759: DUP2 0000075a: GT 0000075b: ISZERO 0000075c: PUSH2 0x0761 0000075f: JUMPI 00000760: INVALID 00000761: JUMPDEST 00000762: PUSH1 0x02 00000764: DUP5 00000765: DUP2 00000766: SLOAD 00000767: DUP2 00000768: LT 00000769: ISZERO 0000076a: ISZERO 0000076b: PUSH2 0x0770 0000076e: JUMPI 0000076f: INVALID 00000770: JUMPDEST 00000771: SWAP1 00000772: PUSH1 0x00 00000774: MSTORE 00000775: PUSH1 0x20 00000777: PUSH1 0x00 00000779: KECCAK256 0000077a: SWAP1 0000077b: PUSH1 0x05 0000077d: MUL 0000077e: ADD 0000077f: PUSH1 0x03 00000781: ADD 00000782: PUSH1 0x00 00000784: SWAP1 00000785: SLOAD 00000786: SWAP1 00000787: PUSH2 0x0100 0000078a: EXP 0000078b: SWAP1 0000078c: DIV 0000078d: PUSH1 0xff 0000078f: AND 00000790: PUSH1 0x05 00000792: DUP2 00000793: GT 00000794: ISZERO 00000795: PUSH2 0x079a 00000798: JUMPI 00000799: INVALID 0000079a: JUMPDEST 0000079b: EQ 0000079c: ISZERO 0000079d: ISZERO 0000079e: PUSH2 0x07a6 000007a1: JUMPI 000007a2: PUSH1 0x00 000007a4: DUP1 000007a5: REVERT 000007a6: JUMPDEST 000007a7: PUSH1 0x02 000007a9: DUP1 000007aa: DUP5 000007ab: DUP2 000007ac: SLOAD 000007ad: DUP2 000007ae: LT 000007af: ISZERO 000007b0: ISZERO 000007b1: PUSH2 0x07b6 000007b4: JUMPI 000007b5: INVALID 000007b6: JUMPDEST 000007b7: SWAP1 000007b8: PUSH1 0x00 000007ba: MSTORE 000007bb: PUSH1 0x20 000007bd: PUSH1 0x00 000007bf: KECCAK256 000007c0: SWAP1 000007c1: PUSH1 0x05 000007c3: MUL 000007c4: ADD 000007c5: PUSH1 0x03 000007c7: ADD 000007c8: PUSH1 0x00 000007ca: PUSH2 0x0100 000007cd: EXP 000007ce: DUP2 000007cf: SLOAD 000007d0: DUP2 000007d1: PUSH1 0xff 000007d3: MUL 000007d4: NOT 000007d5: AND 000007d6: SWAP1 000007d7: DUP4 000007d8: PUSH1 0x05 000007da: DUP2 000007db: GT 000007dc: ISZERO 000007dd: PUSH2 0x07e2 000007e0: JUMPI 000007e1: INVALID 000007e2: JUMPDEST 000007e3: MUL 000007e4: OR 000007e5: SWAP1 000007e6: SSTORE 000007e7: POP 000007e8: PUSH32 0xbda7bc7c8123a85aa855c777d3191b2dc42bec38c45638643006fb84e76abf7a 00000809: DUP4 0000080a: DUP4 0000080b: PUSH1 0x40 0000080d: MLOAD 0000080e: DUP1 0000080f: DUP4 00000810: DUP2 00000811: MSTORE 00000812: PUSH1 0x20 00000814: ADD 00000815: DUP3 00000816: PUSH1 0x00 00000818: NOT 00000819: AND 0000081a: PUSH1 0x00 0000081c: NOT 0000081d: AND 0000081e: DUP2 0000081f: MSTORE 00000820: PUSH1 0x20 00000822: ADD 00000823: SWAP3 00000824: POP 00000825: POP 00000826: POP 00000827: PUSH1 0x40 00000829: MLOAD 0000082a: DUP1 0000082b: SWAP2 0000082c: SUB 0000082d: SWAP1 0000082e: LOG1 0000082f: POP 00000830: POP 00000831: POP 00000832: JUMP 00000833: JUMPDEST 00000834: DUP2 00000835: PUSH1 0x02 00000837: DUP2 00000838: DUP2 00000839: SLOAD 0000083a: DUP2 0000083b: LT 0000083c: ISZERO 0000083d: ISZERO 0000083e: PUSH2 0x0843 00000841: JUMPI 00000842: INVALID 00000843: JUMPDEST 00000844: SWAP1 00000845: PUSH1 0x00 00000847: MSTORE 00000848: PUSH1 0x20 0000084a: PUSH1 0x00 0000084c: KECCAK256 0000084d: SWAP1 0000084e: PUSH1 0x05 00000850: MUL 00000851: ADD 00000852: PUSH1 0x01 00000854: ADD 00000855: PUSH1 0x00 00000857: SWAP1 00000858: SLOAD 00000859: SWAP1 0000085a: PUSH2 0x0100 0000085d: EXP 0000085e: SWAP1 0000085f: DIV 00000860: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000875: AND 00000876: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000088b: AND 0000088c: CALLER 0000088d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000008a2: AND 000008a3: EQ 000008a4: ISZERO 000008a5: ISZERO 000008a6: PUSH2 0x08ae 000008a9: JUMPI 000008aa: PUSH1 0x00 000008ac: DUP1 000008ad: REVERT 000008ae: JUMPDEST 000008af: PUSH1 0x02 000008b1: PUSH1 0x05 000008b3: DUP2 000008b4: GT 000008b5: ISZERO 000008b6: PUSH2 0x08bb 000008b9: JUMPI 000008ba: INVALID 000008bb: JUMPDEST 000008bc: PUSH1 0x02 000008be: DUP5 000008bf: DUP2 000008c0: SLOAD 000008c1: DUP2 000008c2: LT 000008c3: ISZERO 000008c4: ISZERO 000008c5: PUSH2 0x08ca 000008c8: JUMPI 000008c9: INVALID 000008ca: JUMPDEST 000008cb: SWAP1 000008cc: PUSH1 0x00 000008ce: MSTORE 000008cf: PUSH1 0x20 000008d1: PUSH1 0x00 000008d3: KECCAK256 000008d4: SWAP1 000008d5: PUSH1 0x05 000008d7: MUL 000008d8: ADD 000008d9: PUSH1 0x03 000008db: ADD 000008dc: PUSH1 0x00 000008de: SWAP1 000008df: SLOAD 000008e0: SWAP1 000008e1: PUSH2 0x0100 000008e4: EXP 000008e5: SWAP1 000008e6: DIV 000008e7: PUSH1 0xff 000008e9: AND 000008ea: PUSH1 0x05 000008ec: DUP2 000008ed: GT 000008ee: ISZERO 000008ef: PUSH2 0x08f4 000008f2: JUMPI 000008f3: INVALID 000008f4: JUMPDEST 000008f5: EQ 000008f6: ISZERO 000008f7: ISZERO 000008f8: PUSH2 0x0900 000008fb: JUMPI 000008fc: PUSH1 0x00 000008fe: DUP1 000008ff: REVERT 00000900: JUMPDEST 00000901: PUSH1 0x03 00000903: PUSH1 0x02 00000905: DUP5 00000906: DUP2 00000907: SLOAD 00000908: DUP2 00000909: LT 0000090a: ISZERO 0000090b: ISZERO 0000090c: PUSH2 0x0911 0000090f: JUMPI 00000910: INVALID 00000911: JUMPDEST 00000912: SWAP1 00000913: PUSH1 0x00 00000915: MSTORE 00000916: PUSH1 0x20 00000918: PUSH1 0x00 0000091a: KECCAK256 0000091b: SWAP1 0000091c: PUSH1 0x05 0000091e: MUL 0000091f: ADD 00000920: PUSH1 0x03 00000922: ADD 00000923: PUSH1 0x00 00000925: PUSH2 0x0100 00000928: EXP 00000929: DUP2 0000092a: SLOAD 0000092b: DUP2 0000092c: PUSH1 0xff 0000092e: MUL 0000092f: NOT 00000930: AND 00000931: SWAP1 00000932: DUP4 00000933: PUSH1 0x05 00000935: DUP2 00000936: GT 00000937: ISZERO 00000938: PUSH2 0x093d 0000093b: JUMPI 0000093c: INVALID 0000093d: JUMPDEST 0000093e: MUL 0000093f: OR 00000940: SWAP1 00000941: SSTORE 00000942: POP 00000943: PUSH32 0xae76720f3a5d319b91bc94d8a6c2e3096a4f3554c8cb897e3aedfced5824a10a 00000964: DUP4 00000965: DUP4 00000966: PUSH1 0x40 00000968: MLOAD 00000969: DUP1 0000096a: DUP4 0000096b: DUP2 0000096c: MSTORE 0000096d: PUSH1 0x20 0000096f: ADD 00000970: DUP3 00000971: PUSH1 0x00 00000973: NOT 00000974: AND 00000975: PUSH1 0x00 00000977: NOT 00000978: AND 00000979: DUP2 0000097a: MSTORE 0000097b: PUSH1 0x20 0000097d: ADD 0000097e: SWAP3 0000097f: POP 00000980: POP 00000981: POP 00000982: PUSH1 0x40 00000984: MLOAD 00000985: DUP1 00000986: SWAP2 00000987: SUB 00000988: SWAP1 00000989: LOG1 0000098a: POP 0000098b: POP 0000098c: POP 0000098d: JUMP 0000098e: JUMPDEST 0000098f: PUSH2 0x0996 00000992: PUSH2 0x12f3 00000995: JUMP 00000996: JUMPDEST 00000997: CALLER 00000998: DUP2 00000999: PUSH1 0x00 0000099b: ADD 0000099c: SWAP1 0000099d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009b2: AND 000009b3: SWAP1 000009b4: DUP2 000009b5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ca: AND 000009cb: DUP2 000009cc: MSTORE 000009cd: POP 000009ce: POP 000009cf: DUP5 000009d0: DUP2 000009d1: PUSH1 0x20 000009d3: ADD 000009d4: SWAP1 000009d5: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000009ea: AND 000009eb: SWAP1 000009ec: DUP2 000009ed: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a02: AND 00000a03: DUP2 00000a04: MSTORE 00000a05: POP 00000a06: POP 00000a07: DUP4 00000a08: DUP2 00000a09: PUSH1 0x40 00000a0b: ADD 00000a0c: DUP2 00000a0d: DUP2 00000a0e: MSTORE 00000a0f: POP 00000a10: POP 00000a11: PUSH1 0x01 00000a13: DUP4 00000a14: MUL 00000a15: TIMESTAMP 00000a16: ADD 00000a17: DUP2 00000a18: PUSH1 0x80 00000a1a: ADD 00000a1b: DUP2 00000a1c: DUP2 00000a1d: MSTORE 00000a1e: POP 00000a1f: POP 00000a20: PUSH1 0x02 00000a22: DUP1 00000a23: SLOAD 00000a24: DUP1 00000a25: PUSH1 0x01 00000a27: ADD 00000a28: DUP3 00000a29: DUP2 00000a2a: PUSH2 0x0a33 00000a2d: SWAP2 00000a2e: SWAP1 00000a2f: PUSH2 0x135a 00000a32: JUMP 00000a33: JUMPDEST 00000a34: SWAP2 00000a35: PUSH1 0x00 00000a37: MSTORE 00000a38: PUSH1 0x20 00000a3a: PUSH1 0x00 00000a3c: KECCAK256 00000a3d: SWAP1 00000a3e: PUSH1 0x05 00000a40: MUL 00000a41: ADD 00000a42: PUSH1 0x00 00000a44: DUP4 00000a45: SWAP1 00000a46: SWAP2 00000a47: SWAP1 00000a48: SWAP2 00000a49: POP 00000a4a: PUSH1 0x00 00000a4c: DUP3 00000a4d: ADD 00000a4e: MLOAD 00000a4f: DUP2 00000a50: PUSH1 0x00 00000a52: ADD 00000a53: PUSH1 0x00 00000a55: PUSH2 0x0100 00000a58: EXP 00000a59: DUP2 00000a5a: SLOAD 00000a5b: DUP2 00000a5c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a71: MUL 00000a72: NOT 00000a73: AND 00000a74: SWAP1 00000a75: DUP4 00000a76: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a8b: AND 00000a8c: MUL 00000a8d: OR 00000a8e: SWAP1 00000a8f: SSTORE 00000a90: POP 00000a91: PUSH1 0x20 00000a93: DUP3 00000a94: ADD 00000a95: MLOAD 00000a96: DUP2 00000a97: PUSH1 0x01 00000a99: ADD 00000a9a: PUSH1 0x00 00000a9c: PUSH2 0x0100 00000a9f: EXP 00000aa0: DUP2 00000aa1: SLOAD 00000aa2: DUP2 00000aa3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ab8: MUL 00000ab9: NOT 00000aba: AND 00000abb: SWAP1 00000abc: DUP4 00000abd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ad2: AND 00000ad3: MUL 00000ad4: OR 00000ad5: SWAP1 00000ad6: SSTORE 00000ad7: POP 00000ad8: PUSH1 0x40 00000ada: DUP3 00000adb: ADD 00000adc: MLOAD 00000add: DUP2 00000ade: PUSH1 0x02 00000ae0: ADD 00000ae1: SSTORE 00000ae2: PUSH1 0x60 00000ae4: DUP3 00000ae5: ADD 00000ae6: MLOAD 00000ae7: DUP2 00000ae8: PUSH1 0x03 00000aea: ADD 00000aeb: PUSH1 0x00 00000aed: PUSH2 0x0100 00000af0: EXP 00000af1: DUP2 00000af2: SLOAD 00000af3: DUP2 00000af4: PUSH1 0xff 00000af6: MUL 00000af7: NOT 00000af8: AND 00000af9: SWAP1 00000afa: DUP4 00000afb: PUSH1 0x05 00000afd: DUP2 00000afe: GT 00000aff: ISZERO 00000b00: PUSH2 0x0b05 00000b03: JUMPI 00000b04: INVALID 00000b05: JUMPDEST 00000b06: MUL 00000b07: OR 00000b08: SWAP1 00000b09: SSTORE 00000b0a: POP 00000b0b: PUSH1 0x80 00000b0d: DUP3 00000b0e: ADD 00000b0f: MLOAD 00000b10: DUP2 00000b11: PUSH1 0x04 00000b13: ADD 00000b14: SSTORE 00000b15: POP 00000b16: POP 00000b17: POP 00000b18: PUSH32 0xbde301cda1a53e4996e7061649145cdb878697bd928c5344ad670f867666807d 00000b39: PUSH1 0x01 00000b3b: PUSH1 0x02 00000b3d: DUP1 00000b3e: SLOAD 00000b3f: SWAP1 00000b40: POP 00000b41: SUB 00000b42: CALLER 00000b43: DUP8 00000b44: DUP6 00000b45: PUSH1 0x40 00000b47: MLOAD 00000b48: DUP1 00000b49: DUP6 00000b4a: DUP2 00000b4b: MSTORE 00000b4c: PUSH1 0x20 00000b4e: ADD 00000b4f: DUP5 00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b65: AND 00000b66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b7b: AND 00000b7c: DUP2 00000b7d: MSTORE 00000b7e: PUSH1 0x20 00000b80: ADD 00000b81: DUP4 00000b82: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b97: AND 00000b98: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bad: AND 00000bae: DUP2 00000baf: MSTORE 00000bb0: PUSH1 0x20 00000bb2: ADD 00000bb3: DUP3 00000bb4: PUSH1 0x00 00000bb6: NOT 00000bb7: AND 00000bb8: PUSH1 0x00 00000bba: NOT 00000bbb: AND 00000bbc: DUP2 00000bbd: MSTORE 00000bbe: PUSH1 0x20 00000bc0: ADD 00000bc1: SWAP5 00000bc2: POP 00000bc3: POP 00000bc4: POP 00000bc5: POP 00000bc6: POP 00000bc7: PUSH1 0x40 00000bc9: MLOAD 00000bca: DUP1 00000bcb: SWAP2 00000bcc: SUB 00000bcd: SWAP1 00000bce: LOG1 00000bcf: POP 00000bd0: POP 00000bd1: POP 00000bd2: POP 00000bd3: POP 00000bd4: JUMP 00000bd5: JUMPDEST 00000bd6: PUSH1 0x00 00000bd8: SLOAD 00000bd9: DUP2 00000bda: JUMP 00000bdb: JUMPDEST 00000bdc: PUSH1 0x00 00000bde: DUP3 00000bdf: PUSH1 0x02 00000be1: DUP2 00000be2: DUP2 00000be3: SLOAD 00000be4: DUP2 00000be5: LT 00000be6: ISZERO 00000be7: ISZERO 00000be8: PUSH2 0x0bed 00000beb: JUMPI 00000bec: INVALID 00000bed: JUMPDEST 00000bee: SWAP1 00000bef: PUSH1 0x00 00000bf1: MSTORE 00000bf2: PUSH1 0x20 00000bf4: PUSH1 0x00 00000bf6: KECCAK256 00000bf7: SWAP1 00000bf8: PUSH1 0x05 00000bfa: MUL 00000bfb: ADD 00000bfc: PUSH1 0x00 00000bfe: ADD 00000bff: PUSH1 0x00 00000c01: SWAP1 00000c02: SLOAD 00000c03: SWAP1 00000c04: PUSH2 0x0100 00000c07: EXP 00000c08: SWAP1 00000c09: DIV 00000c0a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c1f: AND 00000c20: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c35: AND 00000c36: CALLER 00000c37: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c4c: AND 00000c4d: EQ 00000c4e: ISZERO 00000c4f: ISZERO 00000c50: PUSH2 0x0c58 00000c53: JUMPI 00000c54: PUSH1 0x00 00000c56: DUP1 00000c57: REVERT 00000c58: JUMPDEST 00000c59: PUSH1 0x02 00000c5b: DUP5 00000c5c: DUP2 00000c5d: SLOAD 00000c5e: DUP2 00000c5f: LT 00000c60: ISZERO 00000c61: ISZERO 00000c62: PUSH2 0x0c67 00000c65: JUMPI 00000c66: INVALID 00000c67: JUMPDEST 00000c68: SWAP1 00000c69: PUSH1 0x00 00000c6b: MSTORE 00000c6c: PUSH1 0x20 00000c6e: PUSH1 0x00 00000c70: KECCAK256 00000c71: SWAP1 00000c72: PUSH1 0x05 00000c74: MUL 00000c75: ADD 00000c76: SWAP2 00000c77: POP 00000c78: PUSH1 0x02 00000c7a: PUSH1 0x05 00000c7c: DUP2 00000c7d: GT 00000c7e: ISZERO 00000c7f: PUSH2 0x0c84 00000c82: JUMPI 00000c83: INVALID 00000c84: JUMPDEST 00000c85: DUP3 00000c86: PUSH1 0x03 00000c88: ADD 00000c89: PUSH1 0x00 00000c8b: SWAP1 00000c8c: SLOAD 00000c8d: SWAP1 00000c8e: PUSH2 0x0100 00000c91: EXP 00000c92: SWAP1 00000c93: DIV 00000c94: PUSH1 0xff 00000c96: AND 00000c97: PUSH1 0x05 00000c99: DUP2 00000c9a: GT 00000c9b: ISZERO 00000c9c: PUSH2 0x0ca1 00000c9f: JUMPI 00000ca0: INVALID 00000ca1: JUMPDEST 00000ca2: EQ 00000ca3: DUP1 00000ca4: ISZERO 00000ca5: PUSH2 0x0cb6 00000ca8: JUMPI 00000ca9: POP 00000caa: PUSH1 0x00 00000cac: SLOAD 00000cad: DUP3 00000cae: PUSH1 0x04 00000cb0: ADD 00000cb1: SLOAD 00000cb2: ADD 00000cb3: TIMESTAMP 00000cb4: LT 00000cb5: ISZERO 00000cb6: JUMPDEST 00000cb7: ISZERO 00000cb8: ISZERO 00000cb9: PUSH2 0x0cc1 00000cbc: JUMPI 00000cbd: PUSH1 0x00 00000cbf: DUP1 00000cc0: REVERT 00000cc1: JUMPDEST 00000cc2: PUSH1 0x04 00000cc4: DUP3 00000cc5: PUSH1 0x03 00000cc7: ADD 00000cc8: PUSH1 0x00 00000cca: PUSH2 0x0100 00000ccd: EXP 00000cce: DUP2 00000ccf: SLOAD 00000cd0: DUP2 00000cd1: PUSH1 0xff 00000cd3: MUL 00000cd4: NOT 00000cd5: AND 00000cd6: SWAP1 00000cd7: DUP4 00000cd8: PUSH1 0x05 00000cda: DUP2 00000cdb: GT 00000cdc: ISZERO 00000cdd: PUSH2 0x0ce2 00000ce0: JUMPI 00000ce1: INVALID 00000ce2: JUMPDEST 00000ce3: MUL 00000ce4: OR 00000ce5: SWAP1 00000ce6: SSTORE 00000ce7: POP 00000ce8: CALLER 00000ce9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cfe: AND 00000cff: PUSH2 0x08fc 00000d02: DUP4 00000d03: PUSH1 0x02 00000d05: ADD 00000d06: SLOAD 00000d07: SWAP1 00000d08: DUP2 00000d09: ISZERO 00000d0a: MUL 00000d0b: SWAP1 00000d0c: PUSH1 0x40 00000d0e: MLOAD 00000d0f: PUSH1 0x00 00000d11: PUSH1 0x40 00000d13: MLOAD 00000d14: DUP1 00000d15: DUP4 00000d16: SUB 00000d17: DUP2 00000d18: DUP6 00000d19: DUP9 00000d1a: DUP9 00000d1b: CALL 00000d1c: SWAP4 00000d1d: POP 00000d1e: POP 00000d1f: POP 00000d20: POP 00000d21: ISZERO 00000d22: ISZERO 00000d23: PUSH2 0x0d2b 00000d26: JUMPI 00000d27: PUSH1 0x00 00000d29: DUP1 00000d2a: REVERT 00000d2b: JUMPDEST 00000d2c: PUSH32 0x86e48a712d324364a79089a18be31e993ed6bda36550b789f988e7aaf9ed7cf8 00000d4d: DUP5 00000d4e: DUP5 00000d4f: PUSH1 0x40 00000d51: MLOAD 00000d52: DUP1 00000d53: DUP4 00000d54: DUP2 00000d55: MSTORE 00000d56: PUSH1 0x20 00000d58: ADD 00000d59: DUP3 00000d5a: PUSH1 0x00 00000d5c: NOT 00000d5d: AND 00000d5e: PUSH1 0x00 00000d60: NOT 00000d61: AND 00000d62: DUP2 00000d63: MSTORE 00000d64: PUSH1 0x20 00000d66: ADD 00000d67: SWAP3 00000d68: POP 00000d69: POP 00000d6a: POP 00000d6b: PUSH1 0x40 00000d6d: MLOAD 00000d6e: DUP1 00000d6f: SWAP2 00000d70: SUB 00000d71: SWAP1 00000d72: LOG1 00000d73: POP 00000d74: POP 00000d75: POP 00000d76: POP 00000d77: JUMP 00000d78: JUMPDEST 00000d79: PUSH1 0x00 00000d7b: PUSH1 0x05 00000d7d: DUP2 00000d7e: GT 00000d7f: ISZERO 00000d80: PUSH2 0x0d85 00000d83: JUMPI 00000d84: INVALID 00000d85: JUMPDEST 00000d86: PUSH1 0x02 00000d88: DUP4 00000d89: DUP2 00000d8a: SLOAD 00000d8b: DUP2 00000d8c: LT 00000d8d: ISZERO 00000d8e: ISZERO 00000d8f: PUSH2 0x0d94 00000d92: JUMPI 00000d93: INVALID 00000d94: JUMPDEST 00000d95: SWAP1 00000d96: PUSH1 0x00 00000d98: MSTORE 00000d99: PUSH1 0x20 00000d9b: PUSH1 0x00 00000d9d: KECCAK256 00000d9e: SWAP1 00000d9f: PUSH1 0x05 00000da1: MUL 00000da2: ADD 00000da3: PUSH1 0x03 00000da5: ADD 00000da6: PUSH1 0x00 00000da8: SWAP1 00000da9: SLOAD 00000daa: SWAP1 00000dab: PUSH2 0x0100 00000dae: EXP 00000daf: SWAP1 00000db0: DIV 00000db1: PUSH1 0xff 00000db3: AND 00000db4: PUSH1 0x05 00000db6: DUP2 00000db7: GT 00000db8: ISZERO 00000db9: PUSH2 0x0dbe 00000dbc: JUMPI 00000dbd: INVALID 00000dbe: JUMPDEST 00000dbf: EQ 00000dc0: DUP1 00000dc1: ISZERO 00000dc2: PUSH2 0x0deb 00000dc5: JUMPI 00000dc6: POP 00000dc7: PUSH1 0x02 00000dc9: DUP3 00000dca: DUP2 00000dcb: SLOAD 00000dcc: DUP2 00000dcd: LT 00000dce: ISZERO 00000dcf: ISZERO 00000dd0: PUSH2 0x0dd5 00000dd3: JUMPI 00000dd4: INVALID 00000dd5: JUMPDEST 00000dd6: SWAP1 00000dd7: PUSH1 0x00 00000dd9: MSTORE 00000dda: PUSH1 0x20 00000ddc: PUSH1 0x00 00000dde: KECCAK256 00000ddf: SWAP1 00000de0: PUSH1 0x05 00000de2: MUL 00000de3: ADD 00000de4: PUSH1 0x02 00000de6: ADD 00000de7: SLOAD 00000de8: CALLVALUE 00000de9: LT 00000dea: ISZERO 00000deb: JUMPDEST 00000dec: ISZERO 00000ded: ISZERO 00000dee: PUSH2 0x0df6 00000df1: JUMPI 00000df2: PUSH1 0x00 00000df4: DUP1 00000df5: REVERT 00000df6: JUMPDEST 00000df7: PUSH1 0x00 00000df9: PUSH1 0x02 00000dfb: DUP4 00000dfc: DUP2 00000dfd: SLOAD 00000dfe: DUP2 00000dff: LT 00000e00: ISZERO 00000e01: ISZERO 00000e02: PUSH2 0x0e07 00000e05: JUMPI 00000e06: INVALID 00000e07: JUMPDEST 00000e08: SWAP1 00000e09: PUSH1 0x00 00000e0b: MSTORE 00000e0c: PUSH1 0x20 00000e0e: PUSH1 0x00 00000e10: KECCAK256 00000e11: SWAP1 00000e12: PUSH1 0x05 00000e14: MUL 00000e15: ADD 00000e16: PUSH1 0x01 00000e18: ADD 00000e19: PUSH1 0x00 00000e1b: SWAP1 00000e1c: SLOAD 00000e1d: SWAP1 00000e1e: PUSH2 0x0100 00000e21: EXP 00000e22: SWAP1 00000e23: DIV 00000e24: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e39: AND 00000e3a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e4f: AND 00000e50: EQ 00000e51: ISZERO 00000e52: PUSH2 0x0eb5 00000e55: JUMPI 00000e56: CALLER 00000e57: PUSH1 0x02 00000e59: DUP4 00000e5a: DUP2 00000e5b: SLOAD 00000e5c: DUP2 00000e5d: LT 00000e5e: ISZERO 00000e5f: ISZERO 00000e60: PUSH2 0x0e65 00000e63: JUMPI 00000e64: INVALID 00000e65: JUMPDEST 00000e66: SWAP1 00000e67: PUSH1 0x00 00000e69: MSTORE 00000e6a: PUSH1 0x20 00000e6c: PUSH1 0x00 00000e6e: KECCAK256 00000e6f: SWAP1 00000e70: PUSH1 0x05 00000e72: MUL 00000e73: ADD 00000e74: PUSH1 0x01 00000e76: ADD 00000e77: PUSH1 0x00 00000e79: PUSH2 0x0100 00000e7c: EXP 00000e7d: DUP2 00000e7e: SLOAD 00000e7f: DUP2 00000e80: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e95: MUL 00000e96: NOT 00000e97: AND 00000e98: SWAP1 00000e99: DUP4 00000e9a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000eaf: AND 00000eb0: MUL 00000eb1: OR 00000eb2: SWAP1 00000eb3: SSTORE 00000eb4: POP 00000eb5: JUMPDEST 00000eb6: PUSH1 0x02 00000eb8: DUP3 00000eb9: DUP2 00000eba: SLOAD 00000ebb: DUP2 00000ebc: LT 00000ebd: ISZERO 00000ebe: ISZERO 00000ebf: PUSH2 0x0ec4 00000ec2: JUMPI 00000ec3: INVALID 00000ec4: JUMPDEST 00000ec5: SWAP1 00000ec6: PUSH1 0x00 00000ec8: MSTORE 00000ec9: PUSH1 0x20 00000ecb: PUSH1 0x00 00000ecd: KECCAK256 00000ece: SWAP1 00000ecf: PUSH1 0x05 00000ed1: MUL 00000ed2: ADD 00000ed3: PUSH1 0x01 00000ed5: ADD 00000ed6: PUSH1 0x00 00000ed8: SWAP1 00000ed9: SLOAD 00000eda: SWAP1 00000edb: PUSH2 0x0100 00000ede: EXP 00000edf: SWAP1 00000ee0: DIV 00000ee1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ef6: AND 00000ef7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f0c: AND 00000f0d: CALLER 00000f0e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f23: AND 00000f24: EQ 00000f25: ISZERO 00000f26: ISZERO 00000f27: PUSH2 0x0f2f 00000f2a: JUMPI 00000f2b: PUSH1 0x00 00000f2d: DUP1 00000f2e: REVERT 00000f2f: JUMPDEST 00000f30: PUSH32 0x6a5ee55c9df2daa4375d2b5e4ec8b9e5662f1863207bcbe6e38c6f5fe3c24300 00000f51: DUP3 00000f52: DUP3 00000f53: PUSH1 0x40 00000f55: MLOAD 00000f56: DUP1 00000f57: DUP4 00000f58: DUP2 00000f59: MSTORE 00000f5a: PUSH1 0x20 00000f5c: ADD 00000f5d: DUP3 00000f5e: PUSH1 0x00 00000f60: NOT 00000f61: AND 00000f62: PUSH1 0x00 00000f64: NOT 00000f65: AND 00000f66: DUP2 00000f67: MSTORE 00000f68: PUSH1 0x20 00000f6a: ADD 00000f6b: SWAP3 00000f6c: POP 00000f6d: POP 00000f6e: POP 00000f6f: PUSH1 0x40 00000f71: MLOAD 00000f72: DUP1 00000f73: SWAP2 00000f74: SUB 00000f75: SWAP1 00000f76: LOG1 00000f77: PUSH1 0x01 00000f79: PUSH1 0x02 00000f7b: DUP4 00000f7c: DUP2 00000f7d: SLOAD 00000f7e: DUP2 00000f7f: LT 00000f80: ISZERO 00000f81: ISZERO 00000f82: PUSH2 0x0f87 00000f85: JUMPI 00000f86: INVALID 00000f87: JUMPDEST 00000f88: SWAP1 00000f89: PUSH1 0x00 00000f8b: MSTORE 00000f8c: PUSH1 0x20 00000f8e: PUSH1 0x00 00000f90: KECCAK256 00000f91: SWAP1 00000f92: PUSH1 0x05 00000f94: MUL 00000f95: ADD 00000f96: PUSH1 0x03 00000f98: ADD 00000f99: PUSH1 0x00 00000f9b: PUSH2 0x0100 00000f9e: EXP 00000f9f: DUP2 00000fa0: SLOAD 00000fa1: DUP2 00000fa2: PUSH1 0xff 00000fa4: MUL 00000fa5: NOT 00000fa6: AND 00000fa7: SWAP1 00000fa8: DUP4 00000fa9: PUSH1 0x05 00000fab: DUP2 00000fac: GT 00000fad: ISZERO 00000fae: PUSH2 0x0fb3 00000fb1: JUMPI 00000fb2: INVALID 00000fb3: JUMPDEST 00000fb4: MUL 00000fb5: OR 00000fb6: SWAP1 00000fb7: SSTORE 00000fb8: POP 00000fb9: POP 00000fba: POP 00000fbb: JUMP 00000fbc: JUMPDEST 00000fbd: PUSH1 0x00 00000fbf: DUP3 00000fc0: PUSH1 0x02 00000fc2: DUP2 00000fc3: DUP2 00000fc4: SLOAD 00000fc5: DUP2 00000fc6: LT 00000fc7: ISZERO 00000fc8: ISZERO 00000fc9: PUSH2 0x0fce 00000fcc: JUMPI 00000fcd: INVALID 00000fce: JUMPDEST 00000fcf: SWAP1 00000fd0: PUSH1 0x00 00000fd2: MSTORE 00000fd3: PUSH1 0x20 00000fd5: PUSH1 0x00 00000fd7: KECCAK256 00000fd8: SWAP1 00000fd9: PUSH1 0x05 00000fdb: MUL 00000fdc: ADD 00000fdd: PUSH1 0x00 00000fdf: ADD 00000fe0: PUSH1 0x00 00000fe2: SWAP1 00000fe3: SLOAD 00000fe4: SWAP1 00000fe5: PUSH2 0x0100 00000fe8: EXP 00000fe9: SWAP1 00000fea: DIV 00000feb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001000: AND 00001001: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001016: AND 00001017: CALLER 00001018: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000102d: AND 0000102e: EQ 0000102f: ISZERO 00001030: ISZERO 00001031: PUSH2 0x1039 00001034: JUMPI 00001035: PUSH1 0x00 00001037: DUP1 00001038: REVERT 00001039: JUMPDEST 0000103a: PUSH1 0x02 0000103c: DUP5 0000103d: DUP2 0000103e: SLOAD 0000103f: DUP2 00001040: LT 00001041: ISZERO 00001042: ISZERO 00001043: PUSH2 0x1048 00001046: JUMPI 00001047: INVALID 00001048: JUMPDEST 00001049: SWAP1 0000104a: PUSH1 0x00 0000104c: MSTORE 0000104d: PUSH1 0x20 0000104f: PUSH1 0x00 00001051: KECCAK256 00001052: SWAP1 00001053: PUSH1 0x05 00001055: MUL 00001056: ADD 00001057: SWAP2 00001058: POP 00001059: PUSH1 0x01 0000105b: PUSH1 0x05 0000105d: DUP2 0000105e: GT 0000105f: ISZERO 00001060: PUSH2 0x1065 00001063: JUMPI 00001064: INVALID 00001065: JUMPDEST 00001066: DUP3 00001067: PUSH1 0x03 00001069: ADD 0000106a: PUSH1 0x00 0000106c: SWAP1 0000106d: SLOAD 0000106e: SWAP1 0000106f: PUSH2 0x0100 00001072: EXP 00001073: SWAP1 00001074: DIV 00001075: PUSH1 0xff 00001077: AND 00001078: PUSH1 0x05 0000107a: DUP2 0000107b: GT 0000107c: ISZERO 0000107d: PUSH2 0x1082 00001080: JUMPI 00001081: INVALID 00001082: JUMPDEST 00001083: EQ 00001084: DUP1 00001085: ISZERO 00001086: PUSH2 0x1092 00001089: JUMPI 0000108a: POP 0000108b: DUP2 0000108c: PUSH1 0x04 0000108e: ADD 0000108f: SLOAD 00001090: TIMESTAMP 00001091: LT 00001092: JUMPDEST 00001093: ISZERO 00001094: ISZERO 00001095: PUSH2 0x109d 00001098: JUMPI 00001099: PUSH1 0x00 0000109b: DUP1 0000109c: REVERT 0000109d: JUMPDEST 0000109e: PUSH1 0x02 000010a0: DUP3 000010a1: PUSH1 0x03 000010a3: ADD 000010a4: PUSH1 0x00 000010a6: PUSH2 0x0100 000010a9: EXP 000010aa: DUP2 000010ab: SLOAD 000010ac: DUP2 000010ad: PUSH1 0xff 000010af: MUL 000010b0: NOT 000010b1: AND 000010b2: SWAP1 000010b3: DUP4 000010b4: PUSH1 0x05 000010b6: DUP2 000010b7: GT 000010b8: ISZERO 000010b9: PUSH2 0x10be 000010bc: JUMPI 000010bd: INVALID 000010be: JUMPDEST 000010bf: MUL 000010c0: OR 000010c1: SWAP1 000010c2: SSTORE 000010c3: POP 000010c4: PUSH32 0xbbcce4bacf86438e14f37ed3f9c49f2f2a4e710dd64ba30805d096113bac7fad 000010e5: DUP5 000010e6: DUP5 000010e7: PUSH1 0x40 000010e9: MLOAD 000010ea: DUP1 000010eb: DUP4 000010ec: DUP2 000010ed: MSTORE 000010ee: PUSH1 0x20 000010f0: ADD 000010f1: DUP3 000010f2: PUSH1 0x00 000010f4: NOT 000010f5: AND 000010f6: PUSH1 0x00 000010f8: NOT 000010f9: AND 000010fa: DUP2 000010fb: MSTORE 000010fc: PUSH1 0x20 000010fe: ADD 000010ff: SWAP3 00001100: POP 00001101: POP 00001102: POP 00001103: PUSH1 0x40 00001105: MLOAD 00001106: DUP1 00001107: SWAP2 00001108: SUB 00001109: SWAP1 0000110a: LOG1 0000110b: POP 0000110c: POP 0000110d: POP 0000110e: POP 0000110f: JUMP 00001110: JUMPDEST 00001111: PUSH1 0x00 00001113: DUP3 00001114: PUSH1 0x02 00001116: DUP2 00001117: DUP2 00001118: SLOAD 00001119: DUP2 0000111a: LT 0000111b: ISZERO 0000111c: ISZERO 0000111d: PUSH2 0x1122 00001120: JUMPI 00001121: INVALID 00001122: JUMPDEST 00001123: SWAP1 00001124: PUSH1 0x00 00001126: MSTORE 00001127: PUSH1 0x20 00001129: PUSH1 0x00 0000112b: KECCAK256 0000112c: SWAP1 0000112d: PUSH1 0x05 0000112f: MUL 00001130: ADD 00001131: PUSH1 0x01 00001133: ADD 00001134: PUSH1 0x00 00001136: SWAP1 00001137: SLOAD 00001138: SWAP1 00001139: PUSH2 0x0100 0000113c: EXP 0000113d: SWAP1 0000113e: DIV 0000113f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001154: AND 00001155: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000116a: AND 0000116b: CALLER 0000116c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001181: AND 00001182: EQ 00001183: ISZERO 00001184: ISZERO 00001185: PUSH2 0x118d 00001188: JUMPI 00001189: PUSH1 0x00 0000118b: DUP1 0000118c: REVERT 0000118d: JUMPDEST 0000118e: PUSH1 0x02 00001190: DUP5 00001191: DUP2 00001192: SLOAD 00001193: DUP2 00001194: LT 00001195: ISZERO 00001196: ISZERO 00001197: PUSH2 0x119c 0000119a: JUMPI 0000119b: INVALID 0000119c: JUMPDEST 0000119d: SWAP1 0000119e: PUSH1 0x00 000011a0: MSTORE 000011a1: PUSH1 0x20 000011a3: PUSH1 0x00 000011a5: KECCAK256 000011a6: SWAP1 000011a7: PUSH1 0x05 000011a9: MUL 000011aa: ADD 000011ab: SWAP2 000011ac: POP 000011ad: PUSH1 0x03 000011af: PUSH1 0x05 000011b1: DUP2 000011b2: GT 000011b3: ISZERO 000011b4: PUSH2 0x11b9 000011b7: JUMPI 000011b8: INVALID 000011b9: JUMPDEST 000011ba: DUP3 000011bb: PUSH1 0x03 000011bd: ADD 000011be: PUSH1 0x00 000011c0: SWAP1 000011c1: SLOAD 000011c2: SWAP1 000011c3: PUSH2 0x0100 000011c6: EXP 000011c7: SWAP1 000011c8: DIV 000011c9: PUSH1 0xff 000011cb: AND 000011cc: PUSH1 0x05 000011ce: DUP2 000011cf: GT 000011d0: ISZERO 000011d1: PUSH2 0x11d6 000011d4: JUMPI 000011d5: INVALID 000011d6: JUMPDEST 000011d7: EQ 000011d8: DUP1 000011d9: ISZERO 000011da: PUSH2 0x11ef 000011dd: JUMPI 000011de: POP 000011df: PUSH1 0x01 000011e1: SLOAD 000011e2: PUSH1 0x00 000011e4: SLOAD 000011e5: DUP4 000011e6: PUSH1 0x04 000011e8: ADD 000011e9: SLOAD 000011ea: ADD 000011eb: ADD 000011ec: TIMESTAMP 000011ed: LT 000011ee: ISZERO 000011ef: JUMPDEST 000011f0: DUP1 000011f1: PUSH2 0x1231 000011f4: JUMPI 000011f5: POP 000011f6: PUSH1 0x01 000011f8: PUSH1 0x05 000011fa: DUP2 000011fb: GT 000011fc: ISZERO 000011fd: PUSH2 0x1202 00001200: JUMPI 00001201: INVALID 00001202: JUMPDEST 00001203: DUP3 00001204: PUSH1 0x03 00001206: ADD 00001207: PUSH1 0x00 00001209: SWAP1 0000120a: SLOAD 0000120b: SWAP1 0000120c: PUSH2 0x0100 0000120f: EXP 00001210: SWAP1 00001211: DIV 00001212: PUSH1 0xff 00001214: AND 00001215: PUSH1 0x05 00001217: DUP2 00001218: GT 00001219: ISZERO 0000121a: PUSH2 0x121f 0000121d: JUMPI 0000121e: INVALID 0000121f: JUMPDEST 00001220: EQ 00001221: DUP1 00001222: ISZERO 00001223: PUSH2 0x1230 00001226: JUMPI 00001227: POP 00001228: DUP2 00001229: PUSH1 0x04 0000122b: ADD 0000122c: SLOAD 0000122d: TIMESTAMP 0000122e: LT 0000122f: ISZERO 00001230: JUMPDEST 00001231: JUMPDEST 00001232: ISZERO 00001233: ISZERO 00001234: PUSH2 0x123c 00001237: JUMPI 00001238: PUSH1 0x00 0000123a: DUP1 0000123b: REVERT 0000123c: JUMPDEST 0000123d: PUSH1 0x05 0000123f: DUP3 00001240: PUSH1 0x03 00001242: ADD 00001243: PUSH1 0x00 00001245: PUSH2 0x0100 00001248: EXP 00001249: DUP2 0000124a: SLOAD 0000124b: DUP2 0000124c: PUSH1 0xff 0000124e: MUL 0000124f: NOT 00001250: AND 00001251: SWAP1 00001252: DUP4 00001253: PUSH1 0x05 00001255: DUP2 00001256: GT 00001257: ISZERO 00001258: PUSH2 0x125d 0000125b: JUMPI 0000125c: INVALID 0000125d: JUMPDEST 0000125e: MUL 0000125f: OR 00001260: SWAP1 00001261: SSTORE 00001262: POP 00001263: CALLER 00001264: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001279: AND 0000127a: PUSH2 0x08fc 0000127d: DUP4 0000127e: PUSH1 0x02 00001280: ADD 00001281: SLOAD 00001282: SWAP1 00001283: DUP2 00001284: ISZERO 00001285: MUL 00001286: SWAP1 00001287: PUSH1 0x40 00001289: MLOAD 0000128a: PUSH1 0x00 0000128c: PUSH1 0x40 0000128e: MLOAD 0000128f: DUP1 00001290: DUP4 00001291: SUB 00001292: DUP2 00001293: DUP6 00001294: DUP9 00001295: DUP9 00001296: CALL 00001297: SWAP4 00001298: POP 00001299: POP 0000129a: POP 0000129b: POP 0000129c: ISZERO 0000129d: ISZERO 0000129e: PUSH2 0x12a6 000012a1: JUMPI 000012a2: PUSH1 0x00 000012a4: DUP1 000012a5: REVERT 000012a6: JUMPDEST 000012a7: PUSH32 0xcb720f90f098c425fad2e9df556017c076f9bf7aefa096d1c904a06027ae0460 000012c8: DUP5 000012c9: DUP5 000012ca: PUSH1 0x40 000012cc: MLOAD 000012cd: DUP1 000012ce: DUP4 000012cf: DUP2 000012d0: MSTORE 000012d1: PUSH1 0x20 000012d3: ADD 000012d4: DUP3 000012d5: PUSH1 0x00 000012d7: NOT 000012d8: AND 000012d9: PUSH1 0x00 000012db: NOT 000012dc: AND 000012dd: DUP2 000012de: MSTORE 000012df: PUSH1 0x20 000012e1: ADD 000012e2: SWAP3 000012e3: POP 000012e4: POP 000012e5: POP 000012e6: PUSH1 0x40 000012e8: MLOAD 000012e9: DUP1 000012ea: SWAP2 000012eb: SUB 000012ec: SWAP1 000012ed: LOG1 000012ee: POP 000012ef: POP 000012f0: POP 000012f1: POP 000012f2: JUMP 000012f3: JUMPDEST 000012f4: PUSH1 0xa0 000012f6: PUSH1 0x40 000012f8: MLOAD 000012f9: SWAP1 000012fa: DUP2 000012fb: ADD 000012fc: PUSH1 0x40 000012fe: MSTORE 000012ff: DUP1 00001300: PUSH1 0x00 00001302: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001317: AND 00001318: DUP2 00001319: MSTORE 0000131a: PUSH1 0x20 0000131c: ADD 0000131d: PUSH1 0x00 0000131f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001334: AND 00001335: DUP2 00001336: MSTORE 00001337: PUSH1 0x20 00001339: ADD 0000133a: PUSH1 0x00 0000133c: DUP2 0000133d: MSTORE 0000133e: PUSH1 0x20 00001340: ADD 00001341: PUSH1 0x00 00001343: PUSH1 0x05 00001345: DUP2 00001346: GT 00001347: ISZERO 00001348: PUSH2 0x134d 0000134b: JUMPI 0000134c: INVALID 0000134d: JUMPDEST 0000134e: DUP2 0000134f: MSTORE 00001350: PUSH1 0x20 00001352: ADD 00001353: PUSH1 0x00 00001355: DUP2 00001356: MSTORE 00001357: POP 00001358: SWAP1 00001359: JUMP 0000135a: JUMPDEST 0000135b: DUP2 0000135c: SLOAD 0000135d: DUP2 0000135e: DUP4 0000135f: SSTORE 00001360: DUP2 00001361: DUP2 00001362: ISZERO 00001363: GT 00001364: PUSH2 0x1387 00001367: JUMPI 00001368: PUSH1 0x05 0000136a: MUL 0000136b: DUP2 0000136c: PUSH1 0x05 0000136e: MUL 0000136f: DUP4 00001370: PUSH1 0x00 00001372: MSTORE 00001373: PUSH1 0x20 00001375: PUSH1 0x00 00001377: KECCAK256 00001378: SWAP2 00001379: DUP3 0000137a: ADD 0000137b: SWAP2 0000137c: ADD 0000137d: PUSH2 0x1386 00001380: SWAP2 00001381: SWAP1 00001382: PUSH2 0x138c 00001385: JUMP 00001386: JUMPDEST 00001387: JUMPDEST 00001388: POP 00001389: POP 0000138a: POP 0000138b: JUMP 0000138c: JUMPDEST 0000138d: PUSH2 0x141a 00001390: SWAP2 00001391: SWAP1 00001392: JUMPDEST 00001393: DUP1 00001394: DUP3 00001395: GT 00001396: ISZERO 00001397: PUSH2 0x1416 0000139a: JUMPI 0000139b: PUSH1 0x00 0000139d: DUP1 0000139e: DUP3 0000139f: ADD 000013a0: PUSH1 0x00 000013a2: PUSH2 0x0100 000013a5: EXP 000013a6: DUP2 000013a7: SLOAD 000013a8: SWAP1 000013a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013be: MUL 000013bf: NOT 000013c0: AND 000013c1: SWAP1 000013c2: SSTORE 000013c3: PUSH1 0x01 000013c5: DUP3 000013c6: ADD 000013c7: PUSH1 0x00 000013c9: PUSH2 0x0100 000013cc: EXP 000013cd: DUP2 000013ce: SLOAD 000013cf: SWAP1 000013d0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013e5: MUL 000013e6: NOT 000013e7: AND 000013e8: SWAP1 000013e9: SSTORE 000013ea: PUSH1 0x02 000013ec: DUP3 000013ed: ADD 000013ee: PUSH1 0x00 000013f0: SWAP1 000013f1: SSTORE 000013f2: PUSH1 0x03 000013f4: DUP3 000013f5: ADD 000013f6: PUSH1 0x00 000013f8: PUSH2 0x0100 000013fb: EXP 000013fc: DUP2 000013fd: SLOAD 000013fe: SWAP1 000013ff: PUSH1 0xff 00001401: MUL 00001402: NOT 00001403: AND 00001404: SWAP1 00001405: SSTORE 00001406: PUSH1 0x04 00001408: DUP3 00001409: ADD 0000140a: PUSH1 0x00 0000140c: SWAP1 0000140d: SSTORE 0000140e: POP 0000140f: PUSH1 0x05 00001411: ADD 00001412: PUSH2 0x1392 00001415: JUMP 00001416: JUMPDEST 00001417: POP 00001418: SWAP1 00001419: JUMP 0000141a: JUMPDEST 0000141b: SWAP1 0000141c: JUMP 0000141d: STOP 0000141e: LOG1 0000141f: PUSH6 0x627a7a723058 00001426: KECCAK256 00001427: LOG4 00001428: UNKNOWN(0xCC) 00001429: MLOAD 0000142a: UNKNOWN(0xD8) 0000142b: PUSH16 0x732c083b23370d11841b78b33515813f 0000143c: STOP 0000143d: LOG0 0000143e: UNKNOWN(0xBC) 0000143f: DUP10 00001440: KECCAK256 00001441: UNKNOWN(0xCD) 00001442: SSTORE 00001443: SWAP13 00001444: ORIGIN 00001445: UNKNOWN(0xAD) 00001446: PUSH16
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1506ae59",
"selector": "0x1506ae59",
"calldata_variants": [
"0x1506ae59",
"0x1506ae590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x209fd971",
"selector": "0x209fd971",
"calldata_variants": [
"0x209fd971",
"0x209fd9710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x21cf39ee",
"selector": "0x21cf39ee",
"calldata_variants": [
"0x21cf39ee",
"0x21cf39ee0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5203dcda",
"selector": "0x5203dcda",
"calldata_variants": [
"0x5203dcda",
"0x5203dcda0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6be1320b",
"selector": "0x6be1320b",
"calldata_variants": [
"0x6be1320b",
"0x6be1320b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x867d0dd4",
"selector": "0x867d0dd4",
"calldata_variants": [
"0x867d0dd4",
"0x867d0dd40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9ca4218f",
"selector": "0x9ca4218f",
"calldata_variants": [
"0x9ca4218f",
"0x9ca4218f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 1842,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2188,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3126,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3853,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4119,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4459,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5188,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0x24c752cc19da1e96da4d14f8219fbd39e3a4e3fe96288d7b49ae7e973c30f4d0
call_targets:
0x163a948770020a636a87a48acb33d7575445474b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x24c752cc19da1e96da4d14f8219fbd39e3a4e3fe96288d7b49ae7e973c30f4d0",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x163a948770020a636a87a48acb33d7575445474b"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1506ae59",
"selector": "0x1506ae59",
"calldata_variants": [
"0x1506ae59",
"0x1506ae590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x209fd971",
"selector": "0x209fd971",
"calldata_variants": [
"0x209fd971",
"0x209fd9710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x21cf39ee",
"selector": "0x21cf39ee",
"calldata_variants": [
"0x21cf39ee",
"0x21cf39ee0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5203dcda",
"selector": "0x5203dcda",
"calldata_variants": [
"0x5203dcda",
"0x5203dcda0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6be1320b",
"selector": "0x6be1320b",
"calldata_variants": [
"0x6be1320b",
"0x6be1320b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x867d0dd4",
"selector": "0x867d0dd4",
"calldata_variants": [
"0x867d0dd4",
"0x867d0dd40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9ca4218f",
"selector": "0x9ca4218f",
"calldata_variants": [
"0x9ca4218f",
"0x9ca4218f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3355,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4758,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [
{
"pc": 1842,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2188,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3126,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3853,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4119,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4459,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5188,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 2
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0x24c752cc19da1e96da4d14f8219fbd39e3a4e3fe96288d7b49ae7e973c30f4d0
call_targets:
0x163a948770020a636a87a48acb33d7575445474b
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x24c752cc19da1e96da4d14f8219fbd39e3a4e3fe96288d7b49ae7e973c30f4d0",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x163a948770020a636a87a48acb33d7575445474b"
],
"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": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x1506ae59",
"selector": "0x1506ae59",
"calldata_variants": [
"0x1506ae59",
"0x1506ae590000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x209fd971",
"selector": "0x209fd971",
"calldata_variants": [
"0x209fd971",
"0x209fd9710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x21cf39ee",
"selector": "0x21cf39ee",
"calldata_variants": [
"0x21cf39ee",
"0x21cf39ee0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5203dcda",
"selector": "0x5203dcda",
"calldata_variants": [
"0x5203dcda",
"0x5203dcda0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6be1320b",
"selector": "0x6be1320b",
"calldata_variants": [
"0x6be1320b",
"0x6be1320b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x867d0dd4",
"selector": "0x867d0dd4",
"calldata_variants": [
"0x867d0dd4",
"0x867d0dd40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x9ca4218f",
"selector": "0x9ca4218f",
"calldata_variants": [
"0x9ca4218f",
"0x9ca4218f0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 3355,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4758,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": [
{
"pc": 1842,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 2188,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3126,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 3853,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4119,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 4459,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 5188,
"type": "tx_origin_used"
}
]
}
|
| medium | auth | codex | Authorization uses tx.origin | 75 | no | — |
viewevidence_json{
"evidence": "Auth guard list includes tx_origin_used at pc 5188, and the basic block at start_pc 5181 contains the ORIGIN opcode, indicating tx.origin is consulted in a guard check.",
"locations": [
"pc:5188",
"pc:5181"
],
"recommendation": "Use msg.sender for authorization (or an explicit access-control role). Avoid tx.origin-based gating; if meta-tx support is needed, adopt a trusted forwarder pattern (e.g., EIP-2771).",
"exploit_scenario": "If a privileged EOA interacts with an attacker-controlled contract, the attacker contract can invoke the guarded function; tx.origin stays the EOA so the check may pass even though msg.sender is untrusted."
}
|
| low | other | codex | CALL with computed target/value and unchecked return | 65 | no | — |
viewevidence_json{
"evidence": "Callsites list shows CALL at pc 3355 and pc 4758 with target/value marked computed and returndata_checked null. Detector flags untrusted CALL/ETH value transfer, but validation trace reports a constant target of 0x163a948770020a636a87a48acb33d7575445474b (self), so risk is uncertain.",
"locations": [
"pc:3355",
"pc:4758"
],
"recommendation": "Confirm the call target is fixed or rigorously validated. Check the CALL return value and handle failures explicitly. If the target can be untrusted, add reentrancy protections around state updates before/after the call.",
"exploit_scenario": "If the call target or value can vary based on user input on some paths, an attacker could trigger an external call with value and reenter or cause a silent failure while execution continues. This is low-confidence because the trace suggests the target may be constant (self-call)."
}
|