019bb50b-e195-72fc-abd3-1ddddddd15da
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 |
|---|---|---|---|---|
| 40415 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 40416 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 40417 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 40418 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 40419 | capability.graph | complete | 1 / 3 | 3 months ago |
| 40420 | detector.run | complete | 1 / 3 | 3 months ago |
| 40421 | validation.fork | complete | 1 / 3 | 3 months ago |
| 40500 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).","findings":[{"severity":"medium","category":"other","title":"Computed external CALLs with possible ETH transfer; target/access control unclear","exploit_scenario":"If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior.","recommendation":"Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.","evidence":"Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.","locations":["pc:2055","pc:2385","pc:2967","pc:3289"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-hcevps8e
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bb53a-d41f-71c2-91ff-089d4321453e
--------
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
thinking
**Preparing to read BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-hcevps8e succeeded in 9ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-hcevps8e succeeded in 7ms:
{
"analysis_artifact": {
"address": "0xb035e18ee8d98e6f54810c9337ab6524caeef875",
"artifact_hash": "0xa5dc857c8ca2013aa1b6c845aa835db801bf11ef84a4cde34b4032ead5389c2f",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 12,
"hash": "0xce0b0b3e400fed3195d1d1fadf3ac682e910b7f2c8586ca7f599b952a163c2e5",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATASIZE",
"LT",
"PUSH2",
thinking
**Searching for storage references**
exec
/bin/bash -lc 'rg -n "storage|delegatecall|proxy|eip-1967|beacon|admin|owner|auth|guard|reentr" BYTECODE_BUNDLE.json' in /tmp/codex-hcevps8e succeeded in 7ms:
6: "auth": {
7: "guards": []
5565: "auth": {
5566: "guards": []
5572: "delegatecall": 0,
5576: "storage": {
5799: "auth": {
5800: "guards": []
5806: "delegatecall": 0,
5810: "storage": {
6033: "auth": {
6034: "guards": []
6040: "delegatecall": 0,
6044: "storage": {
6267: "auth": {
6268: "guards": []
6274: "delegatecall": 0,
6278: "storage": {
6501: "auth": {
6502: "guards": []
thinking
**Investigating storage and callsite references**
exec
/bin/bash -lc 'rg -n "callsite|callsites|evidence_bundle|storage" BYTECODE_BUNDLE.json | head -n 50' in /tmp/codex-hcevps8e succeeded in 27ms:
4327: "callsites": [
5576: "storage": {
5810: "storage": {
6044: "storage": {
6278: "storage": {
6512: "storage": {
6746: "storage": {
6980: "storage": {
7214: "storage": {
7448: "storage": {
7682: "storage": {
7916: "storage": {
8150: "storage": {
8384: "storage": {
8618: "storage": {
8852: "storage": {
9086: "storage": {
9320: "storage": {
9571: "storage": {
12670: "type": "callsite"
thinking
**Searching for callsite references**
exec
/bin/bash -lc "sed -n '4300,4405p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 7ms:
"PUSH6",
"PUSH16",
"SHA3",
"PUSH15",
"SHA3",
"MSTORE8",
"PUSH9",
"PUSH22",
"PUSH20",
"PUSH27",
"PUSH4",
"SHA3",
"PUSH9",
"PUSH19",
"PUSH19",
"GASLIMIT",
"PUSH21",
"PUSH2",
"PUSH6",
"SHA3",
thinking
**Searching for storage configurations**
exec
/bin/bash -lc "sed -n '5550,5595p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 6ms:
{
"entry_pc": 538071414,
"selector": "0x1eb05b0f"
},
{
"entry_pc": 594712484,
"selector": "0x20125176"
},
{
"entry_pc": 0,
"selector": "0x237297a4"
}
],
"functions": [
{
"auth": {
"guards": []
},
"entry_pc": 3957847904,
"selector": "0xebe7f760",
thinking
**Analyzing functions for storage writes and calls**
I'm planning to parse JSON data with Python to pinpoint functions that perform storage writes and external calls but lack guards, which might signal reentrancy risks. Since source isn't available, I need to be cautious—especially interpreting call targets that appear to be the contract itself, which could mean internal or self-calls affecting msg.sender and complicating vulnerability assessment. I'll also check for evidence bundles or call graphs to refine this analysis.
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import defaultdict
import sys
path='BYTECODE_BUNDLE.json'
with open(path) as f:
data=json.load(f)
artifact=data.get('analysis_artifact',{}).get('artifact_json',{})
functions=artifact.get('functions',[])
print('functions',len(functions))
# summarize calls and storage writes
rows=[]
for fn in functions:
sel=fn.get('selector')
entry=fn.get('entry_pc')
sinks=fn.get('sinks',{})
storage=fn.get('storage',{})
writes=storage.get('writes',0)
reads=storage.get('reads',0)
call=sinks.get('call',0)
staticcall=sinks.get('staticcall',0)
delegate=sinks.get('delegatecall',0)
guards=fn.get('auth',{}).get('guards',[])
if call or staticcall or delegate or writes:
rows.append((sel,entry,call,staticcall,delegate,writes,reads,len(guards)))
rows_sorted=sorted(rows,key=lambda x:(-(x[2]+x[3]+x[4]),-x[5]))
for r in rows_sorted[:20]:
print(r)
# functions with call and writes
cw=[r for r in rows if r[2]>0 and r[5]>0]
print('call+write',len(cw))
for r in sorted(cw,key=lambda x:(-x[2],-x[5]))[:10]:
print(r)
# list selectors missing entry
miss=[fn.get('selector') for fn in functions if fn.get('entry_pc') is None]
print('missing entry',miss)
PY" in /tmp/codex-hcevps8e succeeded in 78ms:
functions 17
('0xebe7f760', 3957847904, 4, 1, 0, 9, 51, 0)
('0xf372872d', 4141367631, 4, 1, 0, 9, 51, 0)
('0xf6d8414f', 4191690960, 4, 1, 0, 9, 51, 0)
('0xf9d820d0', 4214497825, 4, 1, 0, 9, 51, 0)
('0xfb342221', None, 4, 1, 0, 9, 51, 0)
('0x6dce6c5e', 1872738698, 4, 1, 0, 9, 51, 0)
('0x6f9fb98a', 1987860130, 4, 1, 0, 9, 51, 0)
('0x767c56a2', 3787558279, 4, 1, 0, 9, 51, 0)
('0xe1c18d87', None, 4, 1, 0, 9, 51, 0)
('0x46965ef6', 1184259830, 4, 1, 0, 9, 51, 0)
('0x4faf2838', 1487898106, 4, 1, 0, 9, 51, 0)
('0x58af85fa', 1592174972, 4, 1, 0, 9, 51, 0)
('0x5ee6a97c', None, 4, 1, 0, 9, 51, 0)
('0x034ea411', 514874127, 4, 1, 0, 9, 51, 0)
('0x1eb05b0f', 538071414, 4, 1, 0, 9, 51, 0)
('0x20125176', 594712484, 4, 1, 0, 9, 51, 0)
('0x237297a4', 0, 4, 1, 0, 9, 51, 0)
call+write 17
('0xebe7f760', 3957847904, 4, 1, 0, 9, 51, 0)
thinking
**Analyzing function call and storage patterns**
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import Counter
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
functions=data['analysis_artifact']['artifact_json']['functions']
# collect write slots
slots=Counter()
write_pcs=[]
for fn in functions:
storage=fn.get('storage',{})
for s in storage.get('slots',[]):
if s.get('op') in ('SSTORE','TSTORE'): # maybe only SSTORE
slots[s.get('slot')] += 1
write_pcs.append((s.get('pc'),s.get('slot')))
print('write slots count',len(slots))
print('top slots',slots.most_common(10))
print('first few write pcs',write_pcs[:10])
PY" in /tmp/codex-hcevps8e succeeded in 39ms:
write slots count 1
top slots [('0x0000000000000000000000000000000000000000000000000000000000000000', 17)]
first few write pcs [(2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000'), (2357, '0x0000000000000000000000000000000000000000000000000000000000000000')]
thinking
**Analyzing storage slot usage**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
fn=data['analysis_artifact']['artifact_json']['functions'][0]
print(fn['selector'])
slots=fn['storage']['slots']
# summarize unique slots and ops
from collections import OrderedDict
uniq=[]
seen=set()
for s in slots:
key=(s['op'],s['slot'])
if key not in seen:
uniq.append(s)
seen.add(key)
print('unique slots',len(uniq))
for s in uniq:
print(s)
PY" in /tmp/codex-hcevps8e succeeded in 83ms:
0xebe7f760
unique slots 11
{'op': 'SLOAD', 'pc': 856, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000001'}
{'op': 'SLOAD', 'pc': 1098, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000005'}
{'op': 'SLOAD', 'pc': 1243, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000007'}
{'op': 'SLOAD', 'pc': 1309, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000002'}
{'op': 'SLOAD', 'pc': 1381, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000008'}
{'op': 'SLOAD', 'pc': 1468, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000009'}
{'op': 'SLOAD', 'pc': 1941, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000004'}
{'op': 'SLOAD', 'pc': 2310, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000006'}
{'op': 'SLOAD', 'pc': 2335, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000003'}
{'op': 'SSTORE', 'pc': 2357, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000000'}
{'op': 'SLOAD', 'pc': 2884, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000000'}
thinking
**Analyzing potential state update vulnerability**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# find blocks covering pc 2357 or call 2385 etc
pcs=[2357,2385,2055,2967,3289,931]
for pc in pcs:
for bb in bbs:
if bb['start_pc']<=pc<=bb['end_pc']:
print('pc',pc,'block',bb['start_pc'],bb['end_pc'])
print(bb['opcodes'])
print('---')
break
PY" in /tmp/codex-hcevps8e succeeded in 28ms:
pc 2357 block 2350 2399
['JUMPDEST', 'PUSH1', 'PUSH1', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'MLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_84', 'AND', 'OP_90', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2385 block 2350 2399
['JUMPDEST', 'PUSH1', 'PUSH1', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'MLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_84', 'AND', 'OP_90', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2055 block 2012 2069
['JUMPDEST', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_83', 'AND', 'PUSH1', 'OP_81', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_80', 'OP_82', 'SHA3', 'OP_82', 'OP_90', 'SSTORE', 'MLOAD', 'OP_92', 'OP_93', 'POP', 'OP_91', 'OP_83', 'OP_90', 'OP_83', 'OP_81', 'OP_81', 'OP_81', 'OP_85', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'RETURNDATASIZE', 'OP_80', 'PUSH1', 'OP_81', 'EQ', 'PUSH2', 'JUMPI']
---
pc 2967 block 2964 2974
['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 3289 block 3286 3296
['JUMPDEST', 'POP', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---
pc 931 block 928 938
['JUMPDEST', 'POP', 'GAS', 'STATICCALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
---
thinking
**Analyzing SSTORE followed by CALL patterns**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# find blocks containing CALLER
for bb in bbs:
if 'CALLER' in bb.get('opcodes',[]):
print(bb['start_pc'],bb['end_pc'],bb['opcodes'])
PY" in /tmp/codex-hcevps8e succeeded in 71ms:
853 923 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'OP_80', 'MLOAD', 'PUSH4', 'PUSH1', 'SHL', 'OP_81', 'MSTORE', 'CALLER', 'PUSH1', 'OP_82', 'ADD', 'MSTORE', 'OP_90', 'MLOAD', 'PUSH1', 'OP_92', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'OP_91', 'PUSH4', 'OP_91', 'PUSH1', 'OP_80', 'OP_83', 'ADD', 'OP_92', 'PUSH1', 'OP_92', 'OP_91', 'OP_90', 'OP_82', 'OP_90', 'SUB', 'ADD', 'OP_81', 'OP_86', 'OP_80', 'EXTCODESIZE', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
1166 1185 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'CALLER', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']
1444 1464 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'JUMPI']
1465 1530 ['PUSH1', 'OP_80', 'SLOAD', 'PUSH1', 'OP_81', 'ADD', 'OP_82', 'SSTORE', 'PUSH1', 'OP_91', 'OP_90', 'OP_91', 'MSTORE', 'PUSH32', 'ADD', 'OP_80', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'NOT', 'AND', 'CALLER', 'OR', 'OP_90', 'SSTORE']
1531 1562 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'OP_90', 'CALLVALUE', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
1563 1597 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SSTORE', 'PUSH1', 'SLOAD', 'PUSH2', 'OP_90', 'CALLVALUE', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
1598 1653 ['JUMPDEST', 'PUSH1', 'SSTORE', 'PUSH1', 'MLOAD', 'CALLVALUE', 'OP_90', 'CALLER', 'OP_90', 'PUSH32', 'OP_90', 'PUSH1', 'OP_90', 'OP_A3', 'PUSH2', 'PUSH2', 'JUMP']
1790 1808 ['JUMPDEST', 'PUSH1', 'SLOAD', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'AND', 'CALLER', 'EQ', 'PUSH2', 'JUMPI']
2700 2720 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_90', 'SHA3', 'SLOAD', 'PUSH2', 'JUMPI']
2775 2823 ['JUMPDEST', 'PUSH1', 'SLOAD', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_81', 'SHA3', 'SLOAD', 'OP_90', 'OP_91', 'PUSH2', 'OP_91', 'PUSH2', 'OP_90', 'PUSH8', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
2824 2879 ['JUMPDEST', 'CALLER', 'PUSH1', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'PUSH1', 'MSTORE', 'PUSH1', 'OP_81', 'SHA3', 'OP_81', 'OP_90', 'SSTORE', 'PUSH1', 'SLOAD', 'OP_91', 'OP_92', 'POP', 'OP_90', 'PUSH2', 'OP_90', 'PUSH8', 'OP_90', 'PUSH2', 'OP_90', 'OP_85', 'OP_90', 'PUSH4', 'PUSH2', 'AND', 'JUMP']
2880 2959 ['JUMPDEST', 'PUSH1', 'OP_80', 'SLOAD', 'PUSH1', 'OP_80', 'MLOAD', 'PUSH4', 'PUSH1', 'SHL', 'OP_81', 'MSTORE', 'CALLER', 'PUSH1', 'OP_82', 'ADD', 'MSTORE', 'PUSH1', 'OP_81', 'ADD', 'OP_85', 'OP_90', 'MSTORE', 'OP_90', 'MLOAD', 'OP_93', 'OP_94', 'POP', 'PUSH1', 'PUSH1', 'PUSH1', 'SHL', 'SUB', 'OP_90', 'OP_91', 'AND', 'OP_92', 'PUSH4', 'OP_92', 'PUSH1', 'OP_80', 'OP_84', 'ADD', 'OP_93', 'OP_91', 'OP_92', 'OP_91', 'OP_82', 'OP_90', 'SUB', 'ADD', 'OP_81', 'OP_83', 'OP_87', 'OP_80', 'EXTCODESIZE', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
thinking
**Analyzing external call safeguards and reentrancy risks**
I'm inspecting the presence of access controls around external CALLs with computed targets and ETH value, noticing some CALLER and SLOAD checks that might indicate owner guards even if heuristics miss them. There’s evidence of EXTCODESIZE checks possibly validating contract targets and state writes before calls that resemble nonce or mapping updates, which could mitigate reentrancy, but no explicit reentrancy guard is detected. Success checks after calls seem present, lowering some risks. Due to incomplete evidence, I flag a potential medium-to-low severity issue around arbitrary external calls and reentrancy, pending deeper analysis of storage slot writes and control flow edges.
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
cfg=data['analysis_artifact']['artifact_json']['cfg_edges']
# find edges to block starting 2350
start='bb:2350'
# map id for block start 2350? We need to identify the id of that block.
# Basic blocks in artifact have start_pc and end_pc; build mapping.
bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
start_id=None
for bb in bbs:
if bb['start_pc']==2350:
start_id=bb.get('id')
break
print('block id',start_id)
if start_id:
preds=[e for e in cfg if e['to']==start_id]
succs=[e for e in cfg if e['from']==start_id]
print('preds',preds[:10])
print('succs',succs[:10])
PY" in /tmp/codex-hcevps8e succeeded in 35ms:
block id None
thinking
**Analyzing basic blocks and callsite risks**
exec
/bin/bash -lc 'rg -n "evidence|evidence_bundle|call_targets|trace" BYTECODE_BUNDLE.json | head -n 200' in /tmp/codex-hcevps8e succeeded in 11ms:
9827: "proxy_evidence": {
12816: "evidence_json": {
12852: "call_targets": [
12862: "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
12863: "trace_mode": "callTracer"
12868: "evidence_json": {
12904: "call_targets": [
12914: "trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
12915: "trace_mode": "callTracer"
thinking
**Focusing on detector findings**
exec
/bin/bash -lc "sed -n '12800,12930p' BYTECODE_BUNDLE.json" in /tmp/codex-hcevps8e succeeded in 7ms:
{
"entry_pc": 0,
"id": "fn:0x237297a4",
"selector": "0x237297a4",
"type": "function"
}
],
"version": "capability_graph_v1"
},
"id": 1120,
"updated_at": "2026-01-13T01:50:55.000000Z",
"version": "capability_graph_v1"
},
"detector_findings": [
{
"confidence": 60,
"evidence_json": {
"call_count": 4,
"examples": [
{
thinking
**Evaluating contract call risks**
I'm weighing the findings on untrusted calls, balancing severity with uncertain context like CALLER checks and potential fallback functions; I’m leaning toward producing JSON with medium-risk flagged external calls and possible but uncertain reentrancy exposure, while considering how strictly to report unchecked return data and signature validations.
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# list opcodes with 'ECRECOVER' or 'SHA3' etc? but not required.
print('contains ECRECOVER', any('ECRECOVER' in bb.get('opcodes',[]) for bb in bbs))
# check if there is any STATICCALL precompile? can't see address.
# But callsite includes STATICCALL at pc 931.
PY" in /tmp/codex-hcevps8e succeeded in 42ms:
contains ECRECOVER False
thinking
**Summarizing potential external call risks**
codex
{"no_findings":false,"summary":"Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).","findings":[{"severity":"medium","category":"other","title":"Computed external CALLs with possible ETH transfer; target/access control unclear","exploit_scenario":"If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior.","recommendation":"Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.","evidence":"Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.","locations":["pc:2055","pc:2385","pc:2967","pc:3289"]}]}
tokens used
37,508
{
"codex": {
"ran_at": "2026-01-13T02:44:23.395605+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 9394,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).",
"raw_final": {
"summary": "Bytecode analysis shows multiple CALL sites with computed targets/values and potential ETH transfer; guard detection is empty and validation is inconclusive (targets may be constant to self).",
"findings": [
{
"title": "Computed external CALLs with possible ETH transfer; target/access control unclear",
"category": "other",
"evidence": "Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.",
"severity": "medium",
"locations": [
"pc:2055",
"pc:2385",
"pc:2967",
"pc:3289"
],
"recommendation": "Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.",
"exploit_scenario": "If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x00fe 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x6dce6c5e 00000019: GT 0000001a: PUSH2 0x0095 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xebe7f760 00000024: GT 00000025: PUSH2 0x0064 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xebe7f760 0000002f: EQ 00000030: PUSH2 0x02ce 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xf372872d 0000003a: EQ 0000003b: PUSH2 0x02e3 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf6d8414f 00000045: EQ 00000046: PUSH2 0x02f8 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf9d820d0 00000050: EQ 00000051: PUSH2 0x030d 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfb342221 0000005b: EQ 0000005c: PUSH2 0x0340 0000005f: JUMPI 00000060: PUSH2 0x00fe 00000063: JUMP 00000064: JUMPDEST 00000065: DUP1 00000066: PUSH4 0x6dce6c5e 0000006b: EQ 0000006c: PUSH2 0x025e 0000006f: JUMPI 00000070: DUP1 00000071: PUSH4 0x6f9fb98a 00000076: EQ 00000077: PUSH2 0x028f 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0x767c56a2 00000081: EQ 00000082: PUSH2 0x02a4 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xe1c18d87 0000008c: EQ 0000008d: PUSH2 0x02b9 00000090: JUMPI 00000091: PUSH2 0x00fe 00000094: JUMP 00000095: JUMPDEST 00000096: DUP1 00000097: PUSH4 0x46965ef6 0000009c: GT 0000009d: PUSH2 0x00d1 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0x46965ef6 000000a7: EQ 000000a8: PUSH2 0x01e4 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0x4faf2838 000000b2: EQ 000000b3: PUSH2 0x020b 000000b6: JUMPI 000000b7: DUP1 000000b8: PUSH4 0x58af85fa 000000bd: EQ 000000be: PUSH2 0x0234 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0x5ee6a97c 000000c8: EQ 000000c9: PUSH2 0x0249 000000cc: JUMPI 000000cd: PUSH2 0x00fe 000000d0: JUMP 000000d1: JUMPDEST 000000d2: DUP1 000000d3: PUSH4 0x034ea411 000000d8: EQ 000000d9: PUSH2 0x0103 000000dc: JUMPI 000000dd: DUP1 000000de: PUSH4 0x1eb05b0f 000000e3: EQ 000000e4: PUSH2 0x010d 000000e7: JUMPI 000000e8: DUP1 000000e9: PUSH4 0x20125176 000000ee: EQ 000000ef: PUSH2 0x0172 000000f2: JUMPI 000000f3: DUP1 000000f4: PUSH4 0x237297a4 000000f9: EQ 000000fa: PUSH2 0x01ab 000000fd: JUMPI 000000fe: JUMPDEST 000000ff: PUSH1 0x00 00000101: DUP1 00000102: REVERT 00000103: JUMPDEST 00000104: PUSH2 0x010b 00000107: PUSH2 0x0355 0000010a: JUMP 0000010b: JUMPDEST 0000010c: STOP 0000010d: JUMPDEST 0000010e: CALLVALUE 0000010f: DUP1 00000110: ISZERO 00000111: PUSH2 0x0119 00000114: JUMPI 00000115: PUSH1 0x00 00000117: DUP1 00000118: REVERT 00000119: JUMPDEST 0000011a: POP 0000011b: PUSH2 0x0122 0000011e: PUSH2 0x069c 00000121: JUMP 00000122: JUMPDEST 00000123: PUSH1 0x40 00000125: DUP1 00000126: MLOAD 00000127: PUSH1 0x20 00000129: DUP1 0000012a: DUP3 0000012b: MSTORE 0000012c: DUP4 0000012d: MLOAD 0000012e: DUP2 0000012f: DUP4 00000130: ADD 00000131: MSTORE 00000132: DUP4 00000133: MLOAD 00000134: SWAP2 00000135: SWAP3 00000136: DUP4 00000137: SWAP3 00000138: SWAP1 00000139: DUP4 0000013a: ADD 0000013b: SWAP2 0000013c: DUP6 0000013d: DUP2 0000013e: ADD 0000013f: SWAP2 00000140: MUL 00000141: DUP1 00000142: DUP4 00000143: DUP4 00000144: PUSH1 0x00 00000146: JUMPDEST 00000147: DUP4 00000148: DUP2 00000149: LT 0000014a: ISZERO 0000014b: PUSH2 0x015e 0000014e: JUMPI 0000014f: DUP2 00000150: DUP2 00000151: ADD 00000152: MLOAD 00000153: DUP4 00000154: DUP3 00000155: ADD 00000156: MSTORE 00000157: PUSH1 0x20 00000159: ADD 0000015a: PUSH2 0x0146 0000015d: JUMP 0000015e: JUMPDEST 0000015f: POP 00000160: POP 00000161: POP 00000162: POP 00000163: SWAP1 00000164: POP 00000165: ADD 00000166: SWAP3 00000167: POP 00000168: POP 00000169: POP 0000016a: PUSH1 0x40 0000016c: MLOAD 0000016d: DUP1 0000016e: SWAP2 0000016f: SUB 00000170: SWAP1 00000171: RETURN 00000172: JUMPDEST 00000173: CALLVALUE 00000174: DUP1 00000175: ISZERO 00000176: PUSH2 0x017e 00000179: JUMPI 0000017a: PUSH1 0x00 0000017c: DUP1 0000017d: REVERT 0000017e: JUMPDEST 0000017f: POP 00000180: PUSH2 0x010b 00000183: PUSH1 0x04 00000185: DUP1 00000186: CALLDATASIZE 00000187: SUB 00000188: PUSH1 0x40 0000018a: DUP2 0000018b: LT 0000018c: ISZERO 0000018d: PUSH2 0x0195 00000190: JUMPI 00000191: PUSH1 0x00 00000193: DUP1 00000194: REVERT 00000195: JUMPDEST 00000196: POP 00000197: DUP1 00000198: CALLDATALOAD 00000199: SWAP1 0000019a: PUSH1 0x20 0000019c: ADD 0000019d: CALLDATALOAD 0000019e: PUSH1 0x01 000001a0: PUSH1 0x01 000001a2: PUSH1 0xa0 000001a4: SHL 000001a5: SUB 000001a6: AND 000001a7: PUSH2 0x06fe 000001aa: JUMP 000001ab: JUMPDEST 000001ac: CALLVALUE 000001ad: DUP1 000001ae: ISZERO 000001af: PUSH2 0x01b7 000001b2: JUMPI 000001b3: PUSH1 0x00 000001b5: DUP1 000001b6: REVERT 000001b7: JUMPDEST 000001b8: POP 000001b9: PUSH2 0x01c0 000001bc: PUSH2 0x0a03 000001bf: JUMP 000001c0: JUMPDEST 000001c1: PUSH1 0x40 000001c3: MLOAD 000001c4: DUP1 000001c5: DUP3 000001c6: PUSH1 0x02 000001c8: DUP2 000001c9: GT 000001ca: ISZERO 000001cb: PUSH2 0x01d0 000001ce: JUMPI 000001cf: INVALID 000001d0: JUMPDEST 000001d1: PUSH1 0xff 000001d3: AND 000001d4: DUP2 000001d5: MSTORE 000001d6: PUSH1 0x20 000001d8: ADD 000001d9: SWAP2 000001da: POP 000001db: POP 000001dc: PUSH1 0x40 000001de: MLOAD 000001df: DUP1 000001e0: SWAP2 000001e1: SUB 000001e2: SWAP1 000001e3: RETURN 000001e4: JUMPDEST 000001e5: CALLVALUE 000001e6: DUP1 000001e7: ISZERO 000001e8: PUSH2 0x01f0 000001eb: JUMPI 000001ec: PUSH1 0x00 000001ee: DUP1 000001ef: REVERT 000001f0: JUMPDEST 000001f1: POP 000001f2: PUSH2 0x01f9 000001f5: PUSH2 0x0a13 000001f8: JUMP 000001f9: JUMPDEST 000001fa: PUSH1 0x40 000001fc: DUP1 000001fd: MLOAD 000001fe: SWAP2 000001ff: DUP3 00000200: MSTORE 00000201: MLOAD 00000202: SWAP1 00000203: DUP2 00000204: SWAP1 00000205: SUB 00000206: PUSH1 0x20 00000208: ADD 00000209: SWAP1 0000020a: RETURN 0000020b: JUMPDEST 0000020c: CALLVALUE 0000020d: DUP1 0000020e: ISZERO 0000020f: PUSH2 0x0217 00000212: JUMPI 00000213: PUSH1 0x00 00000215: DUP1 00000216: REVERT 00000217: JUMPDEST 00000218: POP 00000219: PUSH2 0x0220 0000021c: PUSH2 0x0a19 0000021f: JUMP 00000220: JUMPDEST 00000221: PUSH1 0x40 00000223: DUP1 00000224: MLOAD 00000225: SWAP2 00000226: ISZERO 00000227: ISZERO 00000228: DUP3 00000229: MSTORE 0000022a: MLOAD 0000022b: SWAP1 0000022c: DUP2 0000022d: SWAP1 0000022e: SUB 0000022f: PUSH1 0x20 00000231: ADD 00000232: SWAP1 00000233: RETURN 00000234: JUMPDEST 00000235: CALLVALUE 00000236: DUP1 00000237: ISZERO 00000238: PUSH2 0x0240 0000023b: JUMPI 0000023c: PUSH1 0x00 0000023e: DUP1 0000023f: REVERT 00000240: JUMPDEST 00000241: POP 00000242: PUSH2 0x01f9 00000245: PUSH2 0x0a22 00000248: JUMP 00000249: JUMPDEST 0000024a: CALLVALUE 0000024b: DUP1 0000024c: ISZERO 0000024d: PUSH2 0x0255 00000250: JUMPI 00000251: PUSH1 0x00 00000253: DUP1 00000254: REVERT 00000255: JUMPDEST 00000256: POP 00000257: PUSH2 0x010b 0000025a: PUSH2 0x0a28 0000025d: JUMP 0000025e: JUMPDEST 0000025f: CALLVALUE 00000260: DUP1 00000261: ISZERO 00000262: PUSH2 0x026a 00000265: JUMPI 00000266: PUSH1 0x00 00000268: DUP1 00000269: REVERT 0000026a: JUMPDEST 0000026b: POP 0000026c: PUSH2 0x0273 0000026f: PUSH2 0x0bb0 00000272: JUMP 00000273: JUMPDEST 00000274: PUSH1 0x40 00000276: DUP1 00000277: MLOAD 00000278: PUSH1 0x01 0000027a: PUSH1 0x01 0000027c: PUSH1 0xa0 0000027e: SHL 0000027f: SUB 00000280: SWAP1 00000281: SWAP3 00000282: AND 00000283: DUP3 00000284: MSTORE 00000285: MLOAD 00000286: SWAP1 00000287: DUP2 00000288: SWAP1 00000289: SUB 0000028a: PUSH1 0x20 0000028c: ADD 0000028d: SWAP1 0000028e: RETURN 0000028f: JUMPDEST 00000290: CALLVALUE 00000291: DUP1 00000292: ISZERO 00000293: PUSH2 0x029b 00000296: JUMPI 00000297: PUSH1 0x00 00000299: DUP1 0000029a: REVERT 0000029b: JUMPDEST 0000029c: POP 0000029d: PUSH2 0x01f9 000002a0: PUSH2 0x0bbf 000002a3: JUMP 000002a4: JUMPDEST 000002a5: CALLVALUE 000002a6: DUP1 000002a7: ISZERO 000002a8: PUSH2 0x02b0 000002ab: JUMPI 000002ac: PUSH1 0x00 000002ae: DUP1 000002af: REVERT 000002b0: JUMPDEST 000002b1: POP 000002b2: PUSH2 0x010b 000002b5: PUSH2 0x0bc3 000002b8: JUMP 000002b9: JUMPDEST 000002ba: CALLVALUE 000002bb: DUP1 000002bc: ISZERO 000002bd: PUSH2 0x02c5 000002c0: JUMPI 000002c1: PUSH1 0x00 000002c3: DUP1 000002c4: REVERT 000002c5: JUMPDEST 000002c6: POP 000002c7: PUSH2 0x01f9 000002ca: PUSH2 0x0cf0 000002cd: JUMP 000002ce: JUMPDEST 000002cf: CALLVALUE 000002d0: DUP1 000002d1: ISZERO 000002d2: PUSH2 0x02da 000002d5: JUMPI 000002d6: PUSH1 0x00 000002d8: DUP1 000002d9: REVERT 000002da: JUMPDEST 000002db: POP 000002dc: PUSH2 0x01f9 000002df: PUSH2 0x0cf6 000002e2: JUMP 000002e3: JUMPDEST 000002e4: CALLVALUE 000002e5: DUP1 000002e6: ISZERO 000002e7: PUSH2 0x02ef 000002ea: JUMPI 000002eb: PUSH1 0x00 000002ed: DUP1 000002ee: REVERT 000002ef: JUMPDEST 000002f0: POP 000002f1: PUSH2 0x0273 000002f4: PUSH2 0x0d20 000002f7: JUMP 000002f8: JUMPDEST 000002f9: CALLVALUE 000002fa: DUP1 000002fb: ISZERO 000002fc: PUSH2 0x0304 000002ff: JUMPI 00000300: PUSH1 0x00 00000302: DUP1 00000303: REVERT 00000304: JUMPDEST 00000305: POP 00000306: PUSH2 0x01f9 00000309: PUSH2 0x0d2f 0000030c: JUMP 0000030d: JUMPDEST 0000030e: CALLVALUE 0000030f: DUP1 00000310: ISZERO 00000311: PUSH2 0x0319 00000314: JUMPI 00000315: PUSH1 0x00 00000317: DUP1 00000318: REVERT 00000319: JUMPDEST 0000031a: POP 0000031b: PUSH2 0x01f9 0000031e: PUSH1 0x04 00000320: DUP1 00000321: CALLDATASIZE 00000322: SUB 00000323: PUSH1 0x20 00000325: DUP2 00000326: LT 00000327: ISZERO 00000328: PUSH2 0x0330 0000032b: JUMPI 0000032c: PUSH1 0x00 0000032e: DUP1 0000032f: REVERT 00000330: JUMPDEST 00000331: POP 00000332: CALLDATALOAD 00000333: PUSH1 0x01 00000335: PUSH1 0x01 00000337: PUSH1 0xa0 00000339: SHL 0000033a: SUB 0000033b: AND 0000033c: PUSH2 0x0d35 0000033f: JUMP 00000340: JUMPDEST 00000341: CALLVALUE 00000342: DUP1 00000343: ISZERO 00000344: PUSH2 0x034c 00000347: JUMPI 00000348: PUSH1 0x00 0000034a: DUP1 0000034b: REVERT 0000034c: JUMPDEST 0000034d: POP 0000034e: PUSH2 0x01f9 00000351: PUSH2 0x0d50 00000354: JUMP 00000355: JUMPDEST 00000356: PUSH1 0x01 00000358: SLOAD 00000359: PUSH1 0x40 0000035b: DUP1 0000035c: MLOAD 0000035d: PUSH4 0x70a08231 00000362: PUSH1 0xe0 00000364: SHL 00000365: DUP2 00000366: MSTORE 00000367: CALLER 00000368: PUSH1 0x04 0000036a: DUP3 0000036b: ADD 0000036c: MSTORE 0000036d: SWAP1 0000036e: MLOAD 0000036f: PUSH1 0x00 00000371: SWAP3 00000372: PUSH1 0x01 00000374: PUSH1 0x01 00000376: PUSH1 0xa0 00000378: SHL 00000379: SUB 0000037a: AND 0000037b: SWAP2 0000037c: PUSH4 0x70a08231 00000381: SWAP2 00000382: PUSH1 0x24 00000384: DUP1 00000385: DUP4 00000386: ADD 00000387: SWAP3 00000388: PUSH1 0x20 0000038a: SWAP3 0000038b: SWAP2 0000038c: SWAP1 0000038d: DUP3 0000038e: SWAP1 0000038f: SUB 00000390: ADD 00000391: DUP2 00000392: DUP7 00000393: DUP1 00000394: EXTCODESIZE 00000395: ISZERO 00000396: DUP1 00000397: ISZERO 00000398: PUSH2 0x03a0 0000039b: JUMPI 0000039c: PUSH1 0x00 0000039e: DUP1 0000039f: REVERT 000003a0: JUMPDEST 000003a1: POP 000003a2: GAS 000003a3: STATICCALL 000003a4: ISZERO 000003a5: DUP1 000003a6: ISZERO 000003a7: PUSH2 0x03b4 000003aa: JUMPI 000003ab: RETURNDATASIZE 000003ac: PUSH1 0x00 000003ae: DUP1 000003af: RETURNDATACOPY 000003b0: RETURNDATASIZE 000003b1: PUSH1 0x00 000003b3: REVERT 000003b4: JUMPDEST 000003b5: POP 000003b6: POP 000003b7: POP 000003b8: POP 000003b9: PUSH1 0x40 000003bb: MLOAD 000003bc: RETURNDATASIZE 000003bd: PUSH1 0x20 000003bf: DUP2 000003c0: LT 000003c1: ISZERO 000003c2: PUSH2 0x03ca 000003c5: JUMPI 000003c6: PUSH1 0x00 000003c8: DUP1 000003c9: REVERT 000003ca: JUMPDEST 000003cb: POP 000003cc: MLOAD 000003cd: GT 000003ce: PUSH2 0x0408 000003d1: JUMPI 000003d2: PUSH1 0x40 000003d4: MLOAD 000003d5: PUSH3 0x461bcd 000003d9: PUSH1 0xe5 000003db: SHL 000003dc: DUP2 000003dd: MSTORE 000003de: PUSH1 0x04 000003e0: ADD 000003e1: DUP1 000003e2: DUP1 000003e3: PUSH1 0x20 000003e5: ADD 000003e6: DUP3 000003e7: DUP2 000003e8: SUB 000003e9: DUP3 000003ea: MSTORE 000003eb: PUSH1 0x30 000003ed: DUP2 000003ee: MSTORE 000003ef: PUSH1 0x20 000003f1: ADD 000003f2: DUP1 000003f3: PUSH2 0x1099 000003f6: PUSH1 0x30 000003f8: SWAP2 000003f9: CODECOPY 000003fa: PUSH1 0x40 000003fc: ADD 000003fd: SWAP2 000003fe: POP 000003ff: POP 00000400: PUSH1 0x40 00000402: MLOAD 00000403: DUP1 00000404: SWAP2 00000405: SUB 00000406: SWAP1 00000407: REVERT 00000408: JUMPDEST 00000409: PUSH1 0x00 0000040b: CALLVALUE 0000040c: GT 0000040d: PUSH2 0x0447 00000410: JUMPI 00000411: PUSH1 0x40 00000413: MLOAD 00000414: PUSH3 0x461bcd 00000418: PUSH1 0xe5 0000041a: SHL 0000041b: DUP2 0000041c: MSTORE 0000041d: PUSH1 0x04 0000041f: ADD 00000420: DUP1 00000421: DUP1 00000422: PUSH1 0x20 00000424: ADD 00000425: DUP3 00000426: DUP2 00000427: SUB 00000428: DUP3 00000429: MSTORE 0000042a: PUSH1 0x26 0000042c: DUP2 0000042d: MSTORE 0000042e: PUSH1 0x20 00000430: ADD 00000431: DUP1 00000432: PUSH2 0x112f 00000435: PUSH1 0x26 00000437: SWAP2 00000438: CODECOPY 00000439: PUSH1 0x40 0000043b: ADD 0000043c: SWAP2 0000043d: POP 0000043e: POP 0000043f: PUSH1 0x40 00000441: MLOAD 00000442: DUP1 00000443: SWAP2 00000444: SUB 00000445: SWAP1 00000446: REVERT 00000447: JUMPDEST 00000448: PUSH1 0x05 0000044a: SLOAD 0000044b: PUSH1 0x01 0000044d: PUSH1 0x01 0000044f: PUSH1 0xa0 00000451: SHL 00000452: SUB 00000453: AND 00000454: PUSH2 0x048e 00000457: JUMPI 00000458: PUSH1 0x40 0000045a: MLOAD 0000045b: PUSH3 0x461bcd 0000045f: PUSH1 0xe5 00000461: SHL 00000462: DUP2 00000463: MSTORE 00000464: PUSH1 0x04 00000466: ADD 00000467: DUP1 00000468: DUP1 00000469: PUSH1 0x20 0000046b: ADD 0000046c: DUP3 0000046d: DUP2 0000046e: SUB 0000046f: DUP3 00000470: MSTORE 00000471: PUSH1 0x34 00000473: DUP2 00000474: MSTORE 00000475: PUSH1 0x20 00000477: ADD 00000478: DUP1 00000479: PUSH2 0x0fea 0000047c: PUSH1 0x34 0000047e: SWAP2 0000047f: CODECOPY 00000480: PUSH1 0x40 00000482: ADD 00000483: SWAP2 00000484: POP 00000485: POP 00000486: PUSH1 0x40 00000488: MLOAD 00000489: DUP1 0000048a: SWAP2 0000048b: SUB 0000048c: SWAP1 0000048d: REVERT 0000048e: JUMPDEST 0000048f: PUSH1 0x05 00000491: SLOAD 00000492: PUSH1 0x01 00000494: PUSH1 0x01 00000496: PUSH1 0xa0 00000498: SHL 00000499: SUB 0000049a: AND 0000049b: CALLER 0000049c: EQ 0000049d: ISZERO 0000049e: PUSH2 0x04d8 000004a1: JUMPI 000004a2: PUSH1 0x40 000004a4: MLOAD 000004a5: PUSH3 0x461bcd 000004a9: PUSH1 0xe5 000004ab: SHL 000004ac: DUP2 000004ad: MSTORE 000004ae: PUSH1 0x04 000004b0: ADD 000004b1: DUP1 000004b2: DUP1 000004b3: PUSH1 0x20 000004b5: ADD 000004b6: DUP3 000004b7: DUP2 000004b8: SUB 000004b9: DUP3 000004ba: MSTORE 000004bb: PUSH1 0x3a 000004bd: DUP2 000004be: MSTORE 000004bf: PUSH1 0x20 000004c1: ADD 000004c2: DUP1 000004c3: PUSH2 0x0f89 000004c6: PUSH1 0x3a 000004c8: SWAP2 000004c9: CODECOPY 000004ca: PUSH1 0x40 000004cc: ADD 000004cd: SWAP2 000004ce: POP 000004cf: POP 000004d0: PUSH1 0x40 000004d2: MLOAD 000004d3: DUP1 000004d4: SWAP2 000004d5: SUB 000004d6: SWAP1 000004d7: REVERT 000004d8: JUMPDEST 000004d9: PUSH1 0x07 000004db: SLOAD 000004dc: PUSH1 0xff 000004de: AND 000004df: ISZERO 000004e0: PUSH2 0x051a 000004e3: JUMPI 000004e4: PUSH1 0x40 000004e6: MLOAD 000004e7: PUSH3 0x461bcd 000004eb: PUSH1 0xe5 000004ed: SHL 000004ee: DUP2 000004ef: MSTORE 000004f0: PUSH1 0x04 000004f2: ADD 000004f3: DUP1 000004f4: DUP1 000004f5: PUSH1 0x20 000004f7: ADD 000004f8: DUP3 000004f9: DUP2 000004fa: SUB 000004fb: DUP3 000004fc: MSTORE 000004fd: PUSH1 0x2c 000004ff: DUP2 00000500: MSTORE 00000501: PUSH1 0x20 00000503: ADD 00000504: DUP1 00000505: PUSH2 0x101e 00000508: PUSH1 0x2c 0000050a: SWAP2 0000050b: CODECOPY 0000050c: PUSH1 0x40 0000050e: ADD 0000050f: SWAP2 00000510: POP 00000511: POP 00000512: PUSH1 0x40 00000514: MLOAD 00000515: DUP1 00000516: SWAP2 00000517: SUB 00000518: SWAP1 00000519: REVERT 0000051a: JUMPDEST 0000051b: PUSH1 0x02 0000051d: SLOAD 0000051e: TIMESTAMP 0000051f: LT 00000520: PUSH2 0x055a 00000523: JUMPI 00000524: PUSH1 0x40 00000526: MLOAD 00000527: PUSH3 0x461bcd 0000052b: PUSH1 0xe5 0000052d: SHL 0000052e: DUP2 0000052f: MSTORE 00000530: PUSH1 0x04 00000532: ADD 00000533: DUP1 00000534: DUP1 00000535: PUSH1 0x20 00000537: ADD 00000538: DUP3 00000539: DUP2 0000053a: SUB 0000053b: DUP3 0000053c: MSTORE 0000053d: PUSH1 0x29 0000053f: DUP2 00000540: MSTORE 00000541: PUSH1 0x20 00000543: ADD 00000544: DUP1 00000545: PUSH2 0x1070 00000548: PUSH1 0x29 0000054a: SWAP2 0000054b: CODECOPY 0000054c: PUSH1 0x40 0000054e: ADD 0000054f: SWAP2 00000550: POP 00000551: POP 00000552: PUSH1 0x40 00000554: MLOAD 00000555: DUP1 00000556: SWAP2 00000557: SUB 00000558: SWAP1 00000559: REVERT 0000055a: JUMPDEST 0000055b: PUSH2 0x0562 0000055e: PUSH2 0x0cf6 00000561: JUMP 00000562: JUMPDEST 00000563: PUSH1 0x08 00000565: SLOAD 00000566: CALLVALUE 00000567: ADD 00000568: GT 00000569: ISZERO 0000056a: PUSH2 0x05a4 0000056d: JUMPI 0000056e: PUSH1 0x40 00000570: MLOAD 00000571: PUSH3 0x461bcd 00000575: PUSH1 0xe5 00000577: SHL 00000578: DUP2 00000579: MSTORE 0000057a: PUSH1 0x04 0000057c: ADD 0000057d: DUP1 0000057e: DUP1 0000057f: PUSH1 0x20 00000581: ADD 00000582: DUP3 00000583: DUP2 00000584: SUB 00000585: DUP3 00000586: MSTORE 00000587: PUSH1 0x27 00000589: DUP2 0000058a: MSTORE 0000058b: PUSH1 0x20 0000058d: ADD 0000058e: DUP1 0000058f: PUSH2 0x11fd 00000592: PUSH1 0x27 00000594: SWAP2 00000595: CODECOPY 00000596: PUSH1 0x40 00000598: ADD 00000599: SWAP2 0000059a: POP 0000059b: POP 0000059c: PUSH1 0x40 0000059e: MLOAD 0000059f: DUP1 000005a0: SWAP2 000005a1: SUB 000005a2: SWAP1 000005a3: REVERT 000005a4: JUMPDEST 000005a5: CALLER 000005a6: PUSH1 0x00 000005a8: SWAP1 000005a9: DUP2 000005aa: MSTORE 000005ab: PUSH1 0x0a 000005ad: PUSH1 0x20 000005af: MSTORE 000005b0: PUSH1 0x40 000005b2: SWAP1 000005b3: KECCAK256 000005b4: SLOAD 000005b5: PUSH2 0x05fb 000005b8: JUMPI 000005b9: PUSH1 0x09 000005bb: DUP1 000005bc: SLOAD 000005bd: PUSH1 0x01 000005bf: DUP2 000005c0: ADD 000005c1: DUP3 000005c2: SSTORE 000005c3: PUSH1 0x00 000005c5: SWAP2 000005c6: SWAP1 000005c7: SWAP2 000005c8: MSTORE 000005c9: PUSH32 0x6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af 000005ea: ADD 000005eb: DUP1 000005ec: SLOAD 000005ed: PUSH1 0x01 000005ef: PUSH1 0x01 000005f1: PUSH1 0xa0 000005f3: SHL 000005f4: SUB 000005f5: NOT 000005f6: AND 000005f7: CALLER 000005f8: OR 000005f9: SWAP1 000005fa: SSTORE 000005fb: JUMPDEST 000005fc: CALLER 000005fd: PUSH1 0x00 000005ff: SWAP1 00000600: DUP2 00000601: MSTORE 00000602: PUSH1 0x0a 00000604: PUSH1 0x20 00000606: MSTORE 00000607: PUSH1 0x40 00000609: SWAP1 0000060a: KECCAK256 0000060b: SLOAD 0000060c: PUSH2 0x061b 0000060f: SWAP1 00000610: CALLVALUE 00000611: PUSH4 0xffffffff 00000616: PUSH2 0x0d56 00000619: AND 0000061a: JUMP 0000061b: JUMPDEST 0000061c: CALLER 0000061d: PUSH1 0x00 0000061f: SWAP1 00000620: DUP2 00000621: MSTORE 00000622: PUSH1 0x0a 00000624: PUSH1 0x20 00000626: MSTORE 00000627: PUSH1 0x40 00000629: SWAP1 0000062a: KECCAK256 0000062b: SSTORE 0000062c: PUSH1 0x08 0000062e: SLOAD 0000062f: PUSH2 0x063e 00000632: SWAP1 00000633: CALLVALUE 00000634: PUSH4 0xffffffff 00000639: PUSH2 0x0d56 0000063c: AND 0000063d: JUMP 0000063e: JUMPDEST 0000063f: PUSH1 0x08 00000641: SSTORE 00000642: PUSH1 0x40 00000644: MLOAD 00000645: CALLVALUE 00000646: SWAP1 00000647: CALLER 00000648: SWAP1 00000649: PUSH32 0x80fbd07d70e0d7ac483b3c1a1b9fd0cbddda15c9263cf2b6cd169d1900af1346 0000066a: SWAP1 0000066b: PUSH1 0x00 0000066d: SWAP1 0000066e: LOG3 0000066f: PUSH2 0x0676 00000672: PUSH2 0x0cf6 00000675: JUMP 00000676: JUMPDEST 00000677: PUSH1 0x08 00000679: SLOAD 0000067a: EQ 0000067b: ISZERO 0000067c: PUSH2 0x069a 0000067f: JUMPI 00000680: PUSH1 0x01 00000682: DUP1 00000683: SLOAD 00000684: PUSH1 0xff 00000686: PUSH1 0xa0 00000688: SHL 00000689: NOT 0000068a: AND 0000068b: PUSH1 0x01 0000068d: PUSH1 0xa1 0000068f: SHL 00000690: OR 00000691: SWAP1 00000692: SSTORE 00000693: PUSH2 0x069a 00000696: PUSH2 0x0bc3 00000699: JUMP 0000069a: JUMPDEST 0000069b: JUMP 0000069c: JUMPDEST 0000069d: PUSH1 0x60 0000069f: PUSH1 0x09 000006a1: DUP1 000006a2: SLOAD 000006a3: DUP1 000006a4: PUSH1 0x20 000006a6: MUL 000006a7: PUSH1 0x20 000006a9: ADD 000006aa: PUSH1 0x40 000006ac: MLOAD 000006ad: SWAP1 000006ae: DUP2 000006af: ADD 000006b0: PUSH1 0x40 000006b2: MSTORE 000006b3: DUP1 000006b4: SWAP3 000006b5: SWAP2 000006b6: SWAP1 000006b7: DUP2 000006b8: DUP2 000006b9: MSTORE 000006ba: PUSH1 0x20 000006bc: ADD 000006bd: DUP3 000006be: DUP1 000006bf: SLOAD 000006c0: DUP1 000006c1: ISZERO 000006c2: PUSH2 0x06f4 000006c5: JUMPI 000006c6: PUSH1 0x20 000006c8: MUL 000006c9: DUP3 000006ca: ADD 000006cb: SWAP2 000006cc: SWAP1 000006cd: PUSH1 0x00 000006cf: MSTORE 000006d0: PUSH1 0x20 000006d2: PUSH1 0x00 000006d4: KECCAK256 000006d5: SWAP1 000006d6: JUMPDEST 000006d7: DUP2 000006d8: SLOAD 000006d9: PUSH1 0x01 000006db: PUSH1 0x01 000006dd: PUSH1 0xa0 000006df: SHL 000006e0: SUB 000006e1: AND 000006e2: DUP2 000006e3: MSTORE 000006e4: PUSH1 0x01 000006e6: SWAP1 000006e7: SWAP2 000006e8: ADD 000006e9: SWAP1 000006ea: PUSH1 0x20 000006ec: ADD 000006ed: DUP1 000006ee: DUP4 000006ef: GT 000006f0: PUSH2 0x06d6 000006f3: JUMPI 000006f4: JUMPDEST 000006f5: POP 000006f6: POP 000006f7: POP 000006f8: POP 000006f9: POP 000006fa: SWAP1 000006fb: POP 000006fc: SWAP1 000006fd: JUMP 000006fe: JUMPDEST 000006ff: PUSH1 0x01 00000701: SLOAD 00000702: PUSH1 0x01 00000704: PUSH1 0x01 00000706: PUSH1 0xa0 00000708: SHL 00000709: SUB 0000070a: AND 0000070b: CALLER 0000070c: EQ 0000070d: PUSH2 0x0747 00000710: JUMPI 00000711: PUSH1 0x40 00000713: MLOAD 00000714: PUSH3 0x461bcd 00000718: PUSH1 0xe5 0000071a: SHL 0000071b: DUP2 0000071c: MSTORE 0000071d: PUSH1 0x04 0000071f: ADD 00000720: DUP1 00000721: DUP1 00000722: PUSH1 0x20 00000724: ADD 00000725: DUP3 00000726: DUP2 00000727: SUB 00000728: DUP3 00000729: MSTORE 0000072a: PUSH1 0x2c 0000072c: DUP2 0000072d: MSTORE 0000072e: PUSH1 0x20 00000730: ADD 00000731: DUP1 00000732: PUSH2 0x118e 00000735: PUSH1 0x2c 00000737: SWAP2 00000738: CODECOPY 00000739: PUSH1 0x40 0000073b: ADD 0000073c: SWAP2 0000073d: POP 0000073e: POP 0000073f: PUSH1 0x40 00000741: MLOAD 00000742: DUP1 00000743: SWAP2 00000744: SUB 00000745: SWAP1 00000746: REVERT 00000747: JUMPDEST 00000748: PUSH1 0x01 0000074a: DUP1 0000074b: SLOAD 0000074c: PUSH1 0x01 0000074e: PUSH1 0xa0 00000750: SHL 00000751: SWAP1 00000752: DIV 00000753: PUSH1 0xff 00000755: AND 00000756: PUSH1 0x02 00000758: DUP2 00000759: GT 0000075a: ISZERO 0000075b: PUSH2 0x0760 0000075e: JUMPI 0000075f: INVALID 00000760: JUMPDEST 00000761: EQ 00000762: DUP1 00000763: ISZERO 00000764: PUSH2 0x077b 00000767: JUMPI 00000768: POP 00000769: PUSH1 0x05 0000076b: SLOAD 0000076c: PUSH1 0x01 0000076e: PUSH1 0x01 00000770: PUSH1 0xa0 00000772: SHL 00000773: SUB 00000774: DUP3 00000775: DUP2 00000776: AND 00000777: SWAP2 00000778: AND 00000779: EQ 0000077a: ISZERO 0000077b: JUMPDEST 0000077c: ISZERO 0000077d: PUSH2 0x08b9 00000780: JUMPI 00000781: PUSH1 0x00 00000783: PUSH2 0x07af 00000786: PUSH8 0x0de0b6b3a7640000 0000078f: PUSH2 0x07a3 00000792: DUP6 00000793: PUSH1 0x04 00000795: SLOAD 00000796: PUSH2 0x0db9 00000799: SWAP1 0000079a: SWAP2 0000079b: SWAP1 0000079c: PUSH4 0xffffffff 000007a1: AND 000007a2: JUMP 000007a3: JUMPDEST 000007a4: SWAP1 000007a5: PUSH4 0xffffffff 000007aa: PUSH2 0x0e12 000007ad: AND 000007ae: JUMP 000007af: JUMPDEST 000007b0: PUSH1 0x01 000007b2: PUSH1 0x01 000007b4: PUSH1 0xa0 000007b6: SHL 000007b7: SUB 000007b8: DUP4 000007b9: AND 000007ba: PUSH1 0x00 000007bc: SWAP1 000007bd: DUP2 000007be: MSTORE 000007bf: PUSH1 0x0a 000007c1: PUSH1 0x20 000007c3: MSTORE 000007c4: PUSH1 0x40 000007c6: SWAP1 000007c7: KECCAK256 000007c8: SLOAD 000007c9: SWAP1 000007ca: SWAP2 000007cb: POP 000007cc: PUSH2 0x07dc 000007cf: SWAP1 000007d0: DUP3 000007d1: SWAP1 000007d2: PUSH4 0xffffffff 000007d7: PUSH2 0x0d56 000007da: AND 000007db: JUMP 000007dc: JUMPDEST 000007dd: PUSH1 0x01 000007df: PUSH1 0x01 000007e1: PUSH1 0xa0 000007e3: SHL 000007e4: SUB 000007e5: DUP4 000007e6: AND 000007e7: PUSH1 0x00 000007e9: DUP2 000007ea: DUP2 000007eb: MSTORE 000007ec: PUSH1 0x0a 000007ee: PUSH1 0x20 000007f0: MSTORE 000007f1: PUSH1 0x40 000007f3: DUP1 000007f4: DUP3 000007f5: KECCAK256 000007f6: DUP3 000007f7: SWAP1 000007f8: SSTORE 000007f9: MLOAD 000007fa: SWAP3 000007fb: SWAP4 000007fc: POP 000007fd: SWAP2 000007fe: DUP4 000007ff: SWAP1 00000800: DUP4 00000801: DUP2 00000802: DUP2 00000803: DUP2 00000804: DUP6 00000805: DUP8 00000806: GAS 00000807: CALL 00000808: SWAP3 00000809: POP 0000080a: POP 0000080b: POP 0000080c: RETURNDATASIZE 0000080d: DUP1 0000080e: PUSH1 0x00 00000810: DUP2 00000811: EQ 00000812: PUSH2 0x0837 00000815: JUMPI 00000816: PUSH1 0x40 00000818: MLOAD 00000819: SWAP2 0000081a: POP 0000081b: PUSH1 0x1f 0000081d: NOT 0000081e: PUSH1 0x3f 00000820: RETURNDATASIZE 00000821: ADD 00000822: AND 00000823: DUP3 00000824: ADD 00000825: PUSH1 0x40 00000827: MSTORE 00000828: RETURNDATASIZE 00000829: DUP3 0000082a: MSTORE 0000082b: RETURNDATASIZE 0000082c: PUSH1 0x00 0000082e: PUSH1 0x20 00000830: DUP5 00000831: ADD 00000832: RETURNDATACOPY 00000833: PUSH2 0x083c 00000836: JUMP 00000837: JUMPDEST 00000838: PUSH1 0x60 0000083a: SWAP2 0000083b: POP 0000083c: JUMPDEST 0000083d: POP 0000083e: POP 0000083f: SWAP1 00000840: POP 00000841: DUP1 00000842: PUSH2 0x087c 00000845: JUMPI 00000846: PUSH1 0x40 00000848: MLOAD 00000849: PUSH3 0x461bcd 0000084d: PUSH1 0xe5 0000084f: SHL 00000850: DUP2 00000851: MSTORE 00000852: PUSH1 0x04 00000854: ADD 00000855: DUP1 00000856: DUP1 00000857: PUSH1 0x20 00000859: ADD 0000085a: DUP3 0000085b: DUP2 0000085c: SUB 0000085d: DUP3 0000085e: MSTORE 0000085f: PUSH1 0x27 00000861: DUP2 00000862: MSTORE 00000863: PUSH1 0x20 00000865: ADD 00000866: DUP1 00000867: PUSH2 0x0fc3 0000086a: PUSH1 0x27 0000086c: SWAP2 0000086d: CODECOPY 0000086e: PUSH1 0x40 00000870: ADD 00000871: SWAP2 00000872: POP 00000873: POP 00000874: PUSH1 0x40 00000876: MLOAD 00000877: DUP1 00000878: SWAP2 00000879: SUB 0000087a: SWAP1 0000087b: REVERT 0000087c: JUMPDEST 0000087d: PUSH1 0x40 0000087f: MLOAD 00000880: DUP3 00000881: SWAP1 00000882: PUSH1 0x01 00000884: PUSH1 0x01 00000886: PUSH1 0xa0 00000888: SHL 00000889: SUB 0000088a: DUP6 0000088b: AND 0000088c: SWAP1 0000088d: PUSH32 0xedfe54e758e6dae751369919bd3c260baddfe62c3f49793bdad36629cb5ecd26 000008ae: SWAP1 000008af: PUSH1 0x00 000008b1: SWAP1 000008b2: LOG3 000008b3: POP 000008b4: POP 000008b5: PUSH2 0x09ff 000008b8: JUMP 000008b9: JUMPDEST 000008ba: PUSH1 0x02 000008bc: PUSH1 0x01 000008be: SLOAD 000008bf: PUSH1 0x01 000008c1: PUSH1 0xa0 000008c3: SHL 000008c4: SWAP1 000008c5: DIV 000008c6: PUSH1 0xff 000008c8: AND 000008c9: PUSH1 0x02 000008cb: DUP2 000008cc: GT 000008cd: ISZERO 000008ce: PUSH2 0x08d3 000008d1: JUMPI 000008d2: INVALID 000008d3: JUMPDEST 000008d4: EQ 000008d5: DUP1 000008d6: ISZERO 000008d7: PUSH2 0x08ed 000008da: JUMPI 000008db: POP 000008dc: PUSH1 0x05 000008de: SLOAD 000008df: PUSH1 0x01 000008e1: PUSH1 0x01 000008e3: PUSH1 0xa0 000008e5: SHL 000008e6: SUB 000008e7: DUP3 000008e8: DUP2 000008e9: AND 000008ea: SWAP2 000008eb: AND 000008ec: EQ 000008ed: JUMPDEST 000008ee: ISZERO 000008ef: PUSH2 0x09ff 000008f2: JUMPI 000008f3: PUSH1 0x00 000008f5: PUSH2 0x0917 000008f8: PUSH8 0x0de0b6b3a7640000 00000901: PUSH2 0x07a3 00000904: PUSH1 0x06 00000906: SLOAD 00000907: PUSH1 0x04 00000909: SLOAD 0000090a: PUSH2 0x0db9 0000090d: SWAP1 0000090e: SWAP2 0000090f: SWAP1 00000910: PUSH4 0xffffffff 00000915: AND 00000916: JUMP 00000917: JUMPDEST 00000918: SWAP1 00000919: POP 0000091a: PUSH2 0x092e 0000091d: PUSH1 0x03 0000091f: SLOAD 00000920: DUP3 00000921: PUSH2 0x0d56 00000924: SWAP1 00000925: SWAP2 00000926: SWAP1 00000927: PUSH4 0xffffffff 0000092c: AND 0000092d: JUMP 0000092e: JUMPDEST 0000092f: PUSH1 0x00 00000931: PUSH1 0x06 00000933: DUP2 00000934: SWAP1 00000935: SSTORE 00000936: PUSH1 0x40 00000938: MLOAD 00000939: SWAP2 0000093a: SWAP3 0000093b: POP 0000093c: SWAP1 0000093d: PUSH1 0x01 0000093f: PUSH1 0x01 00000941: PUSH1 0xa0 00000943: SHL 00000944: SUB 00000945: DUP5 00000946: AND 00000947: SWAP1 00000948: DUP4 00000949: SWAP1 0000094a: DUP4 0000094b: DUP2 0000094c: DUP2 0000094d: DUP2 0000094e: DUP6 0000094f: DUP8 00000950: GAS 00000951: CALL 00000952: SWAP3 00000953: POP 00000954: POP 00000955: POP 00000956: RETURNDATASIZE 00000957: DUP1 00000958: PUSH1 0x00 0000095a: DUP2 0000095b: EQ 0000095c: PUSH2 0x0981 0000095f: JUMPI 00000960: PUSH1 0x40 00000962: MLOAD 00000963: SWAP2 00000964: POP 00000965: PUSH1 0x1f 00000967: NOT 00000968: PUSH1 0x3f 0000096a: RETURNDATASIZE 0000096b: ADD 0000096c: AND 0000096d: DUP3 0000096e: ADD 0000096f: PUSH1 0x40 00000971: MSTORE 00000972: RETURNDATASIZE 00000973: DUP3 00000974: MSTORE 00000975: RETURNDATASIZE 00000976: PUSH1 0x00 00000978: PUSH1 0x20 0000097a: DUP5 0000097b: ADD 0000097c: RETURNDATACOPY 0000097d: PUSH2 0x0986 00000980: JUMP 00000981: JUMPDEST 00000982: PUSH1 0x60 00000984: SWAP2 00000985: POP 00000986: JUMPDEST 00000987: POP 00000988: POP 00000989: SWAP1 0000098a: POP 0000098b: DUP1 0000098c: PUSH2 0x09c6 0000098f: JUMPI 00000990: PUSH1 0x40 00000992: MLOAD 00000993: PUSH3 0x461bcd 00000997: PUSH1 0xe5 00000999: SHL 0000099a: DUP2 0000099b: MSTORE 0000099c: PUSH1 0x04 0000099e: ADD 0000099f: DUP1 000009a0: DUP1 000009a1: PUSH1 0x20 000009a3: ADD 000009a4: DUP3 000009a5: DUP2 000009a6: SUB 000009a7: DUP3 000009a8: MSTORE 000009a9: PUSH1 0x27 000009ab: DUP2 000009ac: MSTORE 000009ad: PUSH1 0x20 000009af: ADD 000009b0: DUP1 000009b1: PUSH2 0x0fc3 000009b4: PUSH1 0x27 000009b6: SWAP2 000009b7: CODECOPY 000009b8: PUSH1 0x40 000009ba: ADD 000009bb: SWAP2 000009bc: POP 000009bd: POP 000009be: PUSH1 0x40 000009c0: MLOAD 000009c1: DUP1 000009c2: SWAP2 000009c3: SUB 000009c4: SWAP1 000009c5: REVERT 000009c6: JUMPDEST 000009c7: PUSH1 0x40 000009c9: MLOAD 000009ca: DUP3 000009cb: SWAP1 000009cc: PUSH1 0x01 000009ce: PUSH1 0x01 000009d0: PUSH1 0xa0 000009d2: SHL 000009d3: SUB 000009d4: DUP6 000009d5: AND 000009d6: SWAP1 000009d7: PUSH32 0xedfe54e758e6dae751369919bd3c260baddfe62c3f49793bdad36629cb5ecd26 000009f8: SWAP1 000009f9: PUSH1 0x00 000009fb: SWAP1 000009fc: LOG3 000009fd: POP 000009fe: POP 000009ff: JUMPDEST 00000a00: POP 00000a01: POP 00000a02: JUMP 00000a03: JUMPDEST 00000a04: PUSH1 0x01 00000a06: SLOAD 00000a07: PUSH1 0x01 00000a09: PUSH1 0xa0 00000a0b: SHL 00000a0c: SWAP1 00000a0d: DIV 00000a0e: PUSH1 0xff 00000a10: AND 00000a11: SWAP1 00000a12: JUMP 00000a13: JUMPDEST 00000a14: PUSH1 0x08 00000a16: SLOAD 00000a17: SWAP1 00000a18: JUMP 00000a19: JUMPDEST 00000a1a: PUSH1 0x07 00000a1c: SLOAD 00000a1d: PUSH1 0xff 00000a1f: AND 00000a20: SWAP1 00000a21: JUMP 00000a22: JUMPDEST 00000a23: PUSH1 0x04 00000a25: SLOAD 00000a26: SWAP1 00000a27: JUMP 00000a28: JUMPDEST 00000a29: PUSH1 0x07 00000a2b: SLOAD 00000a2c: PUSH1 0xff 00000a2e: AND 00000a2f: DUP1 00000a30: ISZERO 00000a31: PUSH2 0x0a51 00000a34: JUMPI 00000a35: POP 00000a36: PUSH1 0x02 00000a38: PUSH1 0x01 00000a3a: SLOAD 00000a3b: PUSH1 0x01 00000a3d: PUSH1 0xa0 00000a3f: SHL 00000a40: SWAP1 00000a41: DIV 00000a42: PUSH1 0xff 00000a44: AND 00000a45: PUSH1 0x02 00000a47: DUP2 00000a48: GT 00000a49: ISZERO 00000a4a: PUSH2 0x0a4f 00000a4d: JUMPI 00000a4e: INVALID 00000a4f: JUMPDEST 00000a50: EQ 00000a51: JUMPDEST 00000a52: PUSH2 0x0a8c 00000a55: JUMPI 00000a56: PUSH1 0x40 00000a58: MLOAD 00000a59: PUSH3 0x461bcd 00000a5d: PUSH1 0xe5 00000a5f: SHL 00000a60: DUP2 00000a61: MSTORE 00000a62: PUSH1 0x04 00000a64: ADD 00000a65: DUP1 00000a66: DUP1 00000a67: PUSH1 0x20 00000a69: ADD 00000a6a: DUP3 00000a6b: DUP2 00000a6c: SUB 00000a6d: DUP3 00000a6e: MSTORE 00000a6f: PUSH1 0x45 00000a71: DUP2 00000a72: MSTORE 00000a73: PUSH1 0x20 00000a75: ADD 00000a76: DUP1 00000a77: PUSH2 0x10c9 00000a7a: PUSH1 0x45 00000a7c: SWAP2 00000a7d: CODECOPY 00000a7e: PUSH1 0x60 00000a80: ADD 00000a81: SWAP2 00000a82: POP 00000a83: POP 00000a84: PUSH1 0x40 00000a86: MLOAD 00000a87: DUP1 00000a88: SWAP2 00000a89: SUB 00000a8a: SWAP1 00000a8b: REVERT 00000a8c: JUMPDEST 00000a8d: CALLER 00000a8e: PUSH1 0x00 00000a90: SWAP1 00000a91: DUP2 00000a92: MSTORE 00000a93: PUSH1 0x0a 00000a95: PUSH1 0x20 00000a97: MSTORE 00000a98: PUSH1 0x40 00000a9a: SWAP1 00000a9b: KECCAK256 00000a9c: SLOAD 00000a9d: PUSH2 0x0ad7 00000aa0: JUMPI 00000aa1: PUSH1 0x40 00000aa3: MLOAD 00000aa4: PUSH3 0x461bcd 00000aa8: PUSH1 0xe5 00000aaa: SHL 00000aab: DUP2 00000aac: MSTORE 00000aad: PUSH1 0x04 00000aaf: ADD 00000ab0: DUP1 00000ab1: DUP1 00000ab2: PUSH1 0x20 00000ab4: ADD 00000ab5: DUP3 00000ab6: DUP2 00000ab7: SUB 00000ab8: DUP3 00000ab9: MSTORE 00000aba: PUSH1 0x43 00000abc: DUP2 00000abd: MSTORE 00000abe: PUSH1 0x20 00000ac0: ADD 00000ac1: DUP1 00000ac2: PUSH2 0x11ba 00000ac5: PUSH1 0x43 00000ac7: SWAP2 00000ac8: CODECOPY 00000ac9: PUSH1 0x60 00000acb: ADD 00000acc: SWAP2 00000acd: POP 00000ace: POP 00000acf: PUSH1 0x40 00000ad1: MLOAD 00000ad2: DUP1 00000ad3: SWAP2 00000ad4: SUB 00000ad5: SWAP1 00000ad6: REVERT 00000ad7: JUMPDEST 00000ad8: PUSH1 0x08 00000ada: SLOAD 00000adb: CALLER 00000adc: PUSH1 0x00 00000ade: SWAP1 00000adf: DUP2 00000ae0: MSTORE 00000ae1: PUSH1 0x0a 00000ae3: PUSH1 0x20 00000ae5: MSTORE 00000ae6: PUSH1 0x40 00000ae8: DUP2 00000ae9: KECCAK256 00000aea: SLOAD 00000aeb: SWAP1 00000aec: SWAP2 00000aed: PUSH2 0x0b08 00000af0: SWAP2 00000af1: PUSH2 0x07a3 00000af4: SWAP1 00000af5: PUSH8 0x0de0b6b3a7640000 00000afe: PUSH4 0xffffffff 00000b03: PUSH2 0x0db9 00000b06: AND 00000b07: JUMP 00000b08: JUMPDEST 00000b09: CALLER 00000b0a: PUSH1 0x00 00000b0c: SWAP1 00000b0d: DUP2 00000b0e: MSTORE 00000b0f: PUSH1 0x0a 00000b11: PUSH1 0x20 00000b13: MSTORE 00000b14: PUSH1 0x40 00000b16: DUP2 00000b17: KECCAK256 00000b18: DUP2 00000b19: SWAP1 00000b1a: SSTORE 00000b1b: PUSH1 0x06 00000b1d: SLOAD 00000b1e: SWAP2 00000b1f: SWAP3 00000b20: POP 00000b21: SWAP1 00000b22: PUSH2 0x0b40 00000b25: SWAP1 00000b26: PUSH8 0x0de0b6b3a7640000 00000b2f: SWAP1 00000b30: PUSH2 0x07a3 00000b33: SWAP1 00000b34: DUP6 00000b35: SWAP1 00000b36: PUSH4 0xffffffff 00000b3b: PUSH2 0x0db9 00000b3e: AND 00000b3f: JUMP 00000b40: JUMPDEST 00000b41: PUSH1 0x00 00000b43: DUP1 00000b44: SLOAD 00000b45: PUSH1 0x40 00000b47: DUP1 00000b48: MLOAD 00000b49: PUSH4 0x0f020c77 00000b4e: PUSH1 0xe3 00000b50: SHL 00000b51: DUP2 00000b52: MSTORE 00000b53: CALLER 00000b54: PUSH1 0x04 00000b56: DUP3 00000b57: ADD 00000b58: MSTORE 00000b59: PUSH1 0x24 00000b5b: DUP2 00000b5c: ADD 00000b5d: DUP6 00000b5e: SWAP1 00000b5f: MSTORE 00000b60: SWAP1 00000b61: MLOAD 00000b62: SWAP4 00000b63: SWAP5 00000b64: POP 00000b65: PUSH1 0x01 00000b67: PUSH1 0x01 00000b69: PUSH1 0xa0 00000b6b: SHL 00000b6c: SUB 00000b6d: SWAP1 00000b6e: SWAP2 00000b6f: AND 00000b70: SWAP3 00000b71: PUSH4 0x781063b8 00000b76: SWAP3 00000b77: PUSH1 0x44 00000b79: DUP1 00000b7a: DUP5 00000b7b: ADD 00000b7c: SWAP4 00000b7d: SWAP2 00000b7e: SWAP3 00000b7f: SWAP2 00000b80: DUP3 00000b81: SWAP1 00000b82: SUB 00000b83: ADD 00000b84: DUP2 00000b85: DUP4 00000b86: DUP8 00000b87: DUP1 00000b88: EXTCODESIZE 00000b89: ISZERO 00000b8a: DUP1 00000b8b: ISZERO 00000b8c: PUSH2 0x0b94 00000b8f: JUMPI 00000b90: PUSH1 0x00 00000b92: DUP1 00000b93: REVERT 00000b94: JUMPDEST 00000b95: POP 00000b96: GAS 00000b97: CALL 00000b98: ISZERO 00000b99: DUP1 00000b9a: ISZERO 00000b9b: PUSH2 0x0ba8 00000b9e: JUMPI 00000b9f: RETURNDATASIZE 00000ba0: PUSH1 0x00 00000ba2: DUP1 00000ba3: RETURNDATACOPY 00000ba4: RETURNDATASIZE 00000ba5: PUSH1 0x00 00000ba7: REVERT 00000ba8: JUMPDEST 00000ba9: POP 00000baa: POP 00000bab: POP 00000bac: POP 00000bad: POP 00000bae: POP 00000baf: JUMP 00000bb0: JUMPDEST 00000bb1: PUSH1 0x05 00000bb3: SLOAD 00000bb4: PUSH1 0x01 00000bb6: PUSH1 0x01 00000bb8: PUSH1 0xa0 00000bba: SHL 00000bbb: SUB 00000bbc: AND 00000bbd: SWAP1 00000bbe: JUMP 00000bbf: JUMPDEST 00000bc0: SELFBALANCE 00000bc1: SWAP1 00000bc2: JUMP 00000bc3: JUMPDEST 00000bc4: PUSH1 0x07 00000bc6: SLOAD 00000bc7: PUSH1 0xff 00000bc9: AND 00000bca: ISZERO 00000bcb: PUSH2 0x0c05 00000bce: JUMPI 00000bcf: PUSH1 0x40 00000bd1: MLOAD 00000bd2: PUSH3 0x461bcd 00000bd6: PUSH1 0xe5 00000bd8: SHL 00000bd9: DUP2 00000bda: MSTORE 00000bdb: PUSH1 0x04 00000bdd: ADD 00000bde: DUP1 00000bdf: DUP1 00000be0: PUSH1 0x20 00000be2: ADD 00000be3: DUP3 00000be4: DUP2 00000be5: SUB 00000be6: DUP3 00000be7: MSTORE 00000be8: PUSH1 0x26 00000bea: DUP2 00000beb: MSTORE 00000bec: PUSH1 0x20 00000bee: ADD 00000bef: DUP1 00000bf0: PUSH2 0x104a 00000bf3: PUSH1 0x26 00000bf5: SWAP2 00000bf6: CODECOPY 00000bf7: PUSH1 0x40 00000bf9: ADD 00000bfa: SWAP2 00000bfb: POP 00000bfc: POP 00000bfd: PUSH1 0x40 00000bff: MLOAD 00000c00: DUP1 00000c01: SWAP2 00000c02: SUB 00000c03: SWAP1 00000c04: REVERT 00000c05: JUMPDEST 00000c06: PUSH1 0x02 00000c08: PUSH1 0x01 00000c0a: SLOAD 00000c0b: PUSH1 0x01 00000c0d: PUSH1 0xa0 00000c0f: SHL 00000c10: SWAP1 00000c11: DIV 00000c12: PUSH1 0xff 00000c14: AND 00000c15: PUSH1 0x02 00000c17: DUP2 00000c18: GT 00000c19: ISZERO 00000c1a: PUSH2 0x0c1f 00000c1d: JUMPI 00000c1e: INVALID 00000c1f: JUMPDEST 00000c20: EQ 00000c21: DUP1 00000c22: PUSH2 0x0c4d 00000c25: JUMPI 00000c26: POP 00000c27: PUSH1 0x01 00000c29: DUP1 00000c2a: SLOAD 00000c2b: PUSH1 0x01 00000c2d: PUSH1 0xa0 00000c2f: SHL 00000c30: SWAP1 00000c31: DIV 00000c32: PUSH1 0xff 00000c34: AND 00000c35: PUSH1 0x02 00000c37: DUP2 00000c38: GT 00000c39: ISZERO 00000c3a: PUSH2 0x0c3f 00000c3d: JUMPI 00000c3e: INVALID 00000c3f: JUMPDEST 00000c40: EQ 00000c41: DUP1 00000c42: ISZERO 00000c43: PUSH2 0x0c4d 00000c46: JUMPI 00000c47: POP 00000c48: PUSH1 0x02 00000c4a: SLOAD 00000c4b: TIMESTAMP 00000c4c: GT 00000c4d: JUMPDEST 00000c4e: PUSH2 0x0c88 00000c51: JUMPI 00000c52: PUSH1 0x40 00000c54: MLOAD 00000c55: PUSH3 0x461bcd 00000c59: PUSH1 0xe5 00000c5b: SHL 00000c5c: DUP2 00000c5d: MSTORE 00000c5e: PUSH1 0x04 00000c60: ADD 00000c61: DUP1 00000c62: DUP1 00000c63: PUSH1 0x20 00000c65: ADD 00000c66: DUP3 00000c67: DUP2 00000c68: SUB 00000c69: DUP3 00000c6a: MSTORE 00000c6b: PUSH1 0x39 00000c6d: DUP2 00000c6e: MSTORE 00000c6f: PUSH1 0x20 00000c71: ADD 00000c72: DUP1 00000c73: PUSH2 0x1155 00000c76: PUSH1 0x39 00000c78: SWAP2 00000c79: CODECOPY 00000c7a: PUSH1 0x40 00000c7c: ADD 00000c7d: SWAP2 00000c7e: POP 00000c7f: POP 00000c80: PUSH1 0x40 00000c82: MLOAD 00000c83: DUP1 00000c84: SWAP2 00000c85: SUB 00000c86: SWAP1 00000c87: REVERT 00000c88: JUMPDEST 00000c89: PUSH1 0x07 00000c8b: DUP1 00000c8c: SLOAD 00000c8d: PUSH1 0xff 00000c8f: NOT 00000c90: AND 00000c91: PUSH1 0x01 00000c93: OR 00000c94: SWAP1 00000c95: SSTORE 00000c96: PUSH1 0x00 00000c98: DUP1 00000c99: SLOAD 00000c9a: PUSH1 0x40 00000c9c: DUP1 00000c9d: MLOAD 00000c9e: PUSH4 0x3b3e2b51 00000ca3: PUSH1 0xe1 00000ca5: SHL 00000ca6: DUP2 00000ca7: MSTORE 00000ca8: SWAP1 00000ca9: MLOAD 00000caa: PUSH1 0x01 00000cac: PUSH1 0x01 00000cae: PUSH1 0xa0 00000cb0: SHL 00000cb1: SUB 00000cb2: SWAP1 00000cb3: SWAP3 00000cb4: AND 00000cb5: SWAP3 00000cb6: PUSH4 0x767c56a2 00000cbb: SWAP3 00000cbc: PUSH1 0x04 00000cbe: DUP1 00000cbf: DUP5 00000cc0: ADD 00000cc1: SWAP4 00000cc2: DUP3 00000cc3: SWAP1 00000cc4: SUB 00000cc5: ADD 00000cc6: DUP2 00000cc7: DUP4 00000cc8: DUP8 00000cc9: DUP1 00000cca: EXTCODESIZE 00000ccb: ISZERO 00000ccc: DUP1 00000ccd: ISZERO 00000cce: PUSH2 0x0cd6 00000cd1: JUMPI 00000cd2: PUSH1 0x00 00000cd4: DUP1 00000cd5: REVERT 00000cd6: JUMPDEST 00000cd7: POP 00000cd8: GAS 00000cd9: CALL 00000cda: ISZERO 00000cdb: DUP1 00000cdc: ISZERO 00000cdd: PUSH2 0x0cea 00000ce0: JUMPI 00000ce1: RETURNDATASIZE 00000ce2: PUSH1 0x00 00000ce4: DUP1 00000ce5: RETURNDATACOPY 00000ce6: RETURNDATASIZE 00000ce7: PUSH1 0x00 00000ce9: REVERT 00000cea: JUMPDEST 00000ceb: POP 00000cec: POP 00000ced: POP 00000cee: POP 00000cef: JUMP 00000cf0: JUMPDEST 00000cf1: PUSH1 0x06 00000cf3: SLOAD 00000cf4: SWAP1 00000cf5: JUMP 00000cf6: JUMPDEST 00000cf7: PUSH1 0x00 00000cf9: PUSH2 0x0d1b 00000cfc: PUSH8 0x0de0b6b3a7640000 00000d05: PUSH2 0x07a3 00000d08: PUSH1 0x06 00000d0a: SLOAD 00000d0b: PUSH1 0x04 00000d0d: SLOAD 00000d0e: PUSH2 0x0db9 00000d11: SWAP1 00000d12: SWAP2 00000d13: SWAP1 00000d14: PUSH4 0xffffffff 00000d19: AND 00000d1a: JUMP 00000d1b: JUMPDEST 00000d1c: SWAP1 00000d1d: POP 00000d1e: SWAP1 00000d1f: JUMP 00000d20: JUMPDEST 00000d21: PUSH1 0x00 00000d23: SLOAD 00000d24: PUSH1 0x01 00000d26: PUSH1 0x01 00000d28: PUSH1 0xa0 00000d2a: SHL 00000d2b: SUB 00000d2c: AND 00000d2d: SWAP1 00000d2e: JUMP 00000d2f: JUMPDEST 00000d30: PUSH1 0x02 00000d32: SLOAD 00000d33: SWAP1 00000d34: JUMP 00000d35: JUMPDEST 00000d36: PUSH1 0x01 00000d38: PUSH1 0x01 00000d3a: PUSH1 0xa0 00000d3c: SHL 00000d3d: SUB 00000d3e: AND 00000d3f: PUSH1 0x00 00000d41: SWAP1 00000d42: DUP2 00000d43: MSTORE 00000d44: PUSH1 0x0a 00000d46: PUSH1 0x20 00000d48: MSTORE 00000d49: PUSH1 0x40 00000d4b: SWAP1 00000d4c: KECCAK256 00000d4d: SLOAD 00000d4e: SWAP1 00000d4f: JUMP 00000d50: JUMPDEST 00000d51: PUSH1 0x03 00000d53: SLOAD 00000d54: SWAP1 00000d55: JUMP 00000d56: JUMPDEST 00000d57: PUSH1 0x00 00000d59: DUP3 00000d5a: DUP3 00000d5b: ADD 00000d5c: DUP4 00000d5d: DUP2 00000d5e: LT 00000d5f: ISZERO 00000d60: PUSH2 0x0db0 00000d63: JUMPI 00000d64: PUSH1 0x40 00000d66: DUP1 00000d67: MLOAD 00000d68: PUSH3 0x461bcd 00000d6c: PUSH1 0xe5 00000d6e: SHL 00000d6f: DUP2 00000d70: MSTORE 00000d71: PUSH1 0x20 00000d73: PUSH1 0x04 00000d75: DUP3 00000d76: ADD 00000d77: MSTORE 00000d78: PUSH1 0x1b 00000d7a: PUSH1 0x24 00000d7c: DUP3 00000d7d: ADD 00000d7e: MSTORE 00000d7f: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00000da0: PUSH1 0x44 00000da2: DUP3 00000da3: ADD 00000da4: MSTORE 00000da5: SWAP1 00000da6: MLOAD 00000da7: SWAP1 00000da8: DUP2 00000da9: SWAP1 00000daa: SUB 00000dab: PUSH1 0x64 00000dad: ADD 00000dae: SWAP1 00000daf: REVERT 00000db0: JUMPDEST 00000db1: SWAP1 00000db2: POP 00000db3: JUMPDEST 00000db4: SWAP3 00000db5: SWAP2 00000db6: POP 00000db7: POP 00000db8: JUMP 00000db9: JUMPDEST 00000dba: PUSH1 0x00 00000dbc: DUP3 00000dbd: PUSH2 0x0dc8 00000dc0: JUMPI 00000dc1: POP 00000dc2: PUSH1 0x00 00000dc4: PUSH2 0x0db3 00000dc7: JUMP 00000dc8: JUMPDEST 00000dc9: DUP3 00000dca: DUP3 00000dcb: MUL 00000dcc: DUP3 00000dcd: DUP5 00000dce: DUP3 00000dcf: DUP2 00000dd0: PUSH2 0x0dd5 00000dd3: JUMPI 00000dd4: INVALID 00000dd5: JUMPDEST 00000dd6: DIV 00000dd7: EQ 00000dd8: PUSH2 0x0db0 00000ddb: JUMPI 00000ddc: PUSH1 0x40 00000dde: MLOAD 00000ddf: PUSH3 0x461bcd 00000de3: PUSH1 0xe5 00000de5: SHL 00000de6: DUP2 00000de7: MSTORE 00000de8: PUSH1 0x04 00000dea: ADD 00000deb: DUP1 00000dec: DUP1 00000ded: PUSH1 0x20 00000def: ADD 00000df0: DUP3 00000df1: DUP2 00000df2: SUB 00000df3: DUP3 00000df4: MSTORE 00000df5: PUSH1 0x21 00000df7: DUP2 00000df8: MSTORE 00000df9: PUSH1 0x20 00000dfb: ADD 00000dfc: DUP1 00000dfd: PUSH2 0x110e 00000e00: PUSH1 0x21 00000e02: SWAP2 00000e03: CODECOPY 00000e04: PUSH1 0x40 00000e06: ADD 00000e07: SWAP2 00000e08: POP 00000e09: POP 00000e0a: PUSH1 0x40 00000e0c: MLOAD 00000e0d: DUP1 00000e0e: SWAP2 00000e0f: SUB 00000e10: SWAP1 00000e11: REVERT 00000e12: JUMPDEST 00000e13: PUSH1 0x00 00000e15: PUSH2 0x0db0 00000e18: DUP4 00000e19: DUP4 00000e1a: PUSH1 0x40 00000e1c: MLOAD 00000e1d: DUP1 00000e1e: PUSH1 0x40 00000e20: ADD 00000e21: PUSH1 0x40 00000e23: MSTORE 00000e24: DUP1 00000e25: PUSH1 0x1a 00000e27: DUP2 00000e28: MSTORE 00000e29: PUSH1 0x20 00000e2b: ADD 00000e2c: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00000e4d: DUP2 00000e4e: MSTORE 00000e4f: POP 00000e50: PUSH1 0x00 00000e52: DUP2 00000e53: DUP4 00000e54: PUSH2 0x0edb 00000e57: JUMPI 00000e58: PUSH1 0x40 00000e5a: MLOAD 00000e5b: PUSH3 0x461bcd 00000e5f: PUSH1 0xe5 00000e61: SHL 00000e62: DUP2 00000e63: MSTORE 00000e64: PUSH1 0x04 00000e66: ADD 00000e67: DUP1 00000e68: DUP1 00000e69: PUSH1 0x20 00000e6b: ADD 00000e6c: DUP3 00000e6d: DUP2 00000e6e: SUB 00000e6f: DUP3 00000e70: MSTORE 00000e71: DUP4 00000e72: DUP2 00000e73: DUP2 00000e74: MLOAD 00000e75: DUP2 00000e76: MSTORE 00000e77: PUSH1 0x20 00000e79: ADD 00000e7a: SWAP2 00000e7b: POP 00000e7c: DUP1 00000e7d: MLOAD 00000e7e: SWAP1 00000e7f: PUSH1 0x20 00000e81: ADD 00000e82: SWAP1 00000e83: DUP1 00000e84: DUP4 00000e85: DUP4 00000e86: PUSH1 0x00 00000e88: JUMPDEST 00000e89: DUP4 00000e8a: DUP2 00000e8b: LT 00000e8c: ISZERO 00000e8d: PUSH2 0x0ea0 00000e90: JUMPI 00000e91: DUP2 00000e92: DUP2 00000e93: ADD 00000e94: MLOAD 00000e95: DUP4 00000e96: DUP3 00000e97: ADD 00000e98: MSTORE 00000e99: PUSH1 0x20 00000e9b: ADD 00000e9c: PUSH2 0x0e88 00000e9f: JUMP 00000ea0: JUMPDEST 00000ea1: POP 00000ea2: POP 00000ea3: POP 00000ea4: POP 00000ea5: SWAP1 00000ea6: POP 00000ea7: SWAP1 00000ea8: DUP2 00000ea9: ADD 00000eaa: SWAP1 00000eab: PUSH1 0x1f 00000ead: AND 00000eae: DUP1 00000eaf: ISZERO 00000eb0: PUSH2 0x0ecd 00000eb3: JUMPI 00000eb4: DUP1 00000eb5: DUP3 00000eb6: SUB 00000eb7: DUP1 00000eb8: MLOAD 00000eb9: PUSH1 0x01 00000ebb: DUP4 00000ebc: PUSH1 0x20 00000ebe: SUB 00000ebf: PUSH2 0x0100 00000ec2: EXP 00000ec3: SUB 00000ec4: NOT 00000ec5: AND 00000ec6: DUP2 00000ec7: MSTORE 00000ec8: PUSH1 0x20 00000eca: ADD 00000ecb: SWAP2 00000ecc: POP 00000ecd: JUMPDEST 00000ece: POP 00000ecf: SWAP3 00000ed0: POP 00000ed1: POP 00000ed2: POP 00000ed3: PUSH1 0x40 00000ed5: MLOAD 00000ed6: DUP1 00000ed7: SWAP2 00000ed8: SUB 00000ed9: SWAP1 00000eda: REVERT 00000edb: JUMPDEST 00000edc: POP 00000edd: PUSH1 0x00 00000edf: DUP4 00000ee0: DUP6 00000ee1: DUP2 00000ee2: PUSH2 0x0ee7 00000ee5: JUMPI 00000ee6: INVALID 00000ee7: JUMPDEST 00000ee8: DIV 00000ee9: SWAP6 00000eea: SWAP5 00000eeb: POP 00000eec: POP 00000eed: POP 00000eee: POP 00000eef: POP 00000ef0: JUMP 00000ef1: JUMPDEST 00000ef2: PUSH1 0x00 00000ef4: PUSH2 0x0db0 00000ef7: DUP4 00000ef8: DUP4 00000ef9: PUSH1 0x40 00000efb: MLOAD 00000efc: DUP1 00000efd: PUSH1 0x40 00000eff: ADD 00000f00: PUSH1 0x40 00000f02: MSTORE 00000f03: DUP1 00000f04: PUSH1 0x1e 00000f06: DUP2 00000f07: MSTORE 00000f08: PUSH1 0x20 00000f0a: ADD 00000f0b: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00000f2c: DUP2 00000f2d: MSTORE 00000f2e: POP 00000f2f: PUSH1 0x00 00000f31: DUP2 00000f32: DUP5 00000f33: DUP5 00000f34: GT 00000f35: ISZERO 00000f36: PUSH2 0x0f80 00000f39: JUMPI 00000f3a: PUSH1 0x40 00000f3c: MLOAD 00000f3d: PUSH3 0x461bcd 00000f41: PUSH1 0xe5 00000f43: SHL 00000f44: DUP2 00000f45: MSTORE 00000f46: PUSH1 0x20 00000f48: PUSH1 0x04 00000f4a: DUP3 00000f4b: ADD 00000f4c: DUP2 00000f4d: DUP2 00000f4e: MSTORE 00000f4f: DUP4 00000f50: MLOAD 00000f51: PUSH1 0x24 00000f53: DUP5 00000f54: ADD 00000f55: MSTORE 00000f56: DUP4 00000f57: MLOAD 00000f58: SWAP1 00000f59: SWAP3 00000f5a: DUP4 00000f5b: SWAP3 00000f5c: PUSH1 0x44 00000f5e: SWAP1 00000f5f: SWAP2 00000f60: ADD 00000f61: SWAP2 00000f62: SWAP1 00000f63: DUP6 00000f64: ADD 00000f65: SWAP1 00000f66: DUP1 00000f67: DUP4 00000f68: DUP4 00000f69: PUSH1 0x00 00000f6b: DUP4 00000f6c: ISZERO 00000f6d: PUSH2 0x0ea0 00000f70: JUMPI 00000f71: DUP2 00000f72: DUP2 00000f73: ADD 00000f74: MLOAD 00000f75: DUP4 00000f76: DUP3 00000f77: ADD 00000f78: MSTORE 00000f79: PUSH1 0x20 00000f7b: ADD 00000f7c: PUSH2 0x0e88 00000f7f: JUMP 00000f80: JUMPDEST 00000f81: POP 00000f82: POP 00000f83: POP 00000f84: SWAP1 00000f85: SUB 00000f86: SWAP1 00000f87: JUMP 00000f88: INVALID 00000f89: JUMPDEST 00000f8a: PUSH4 0x6f756e74 00000f8f: PUSH6 0x72436f6d6d69 00000f96: PUSH21 0x45746865725d20496e697469616c20636c61696d61 00000fac: PUSH15 0x742063616e6e6f7420636f756e7465 00000fbc: PUSH19 0x636f6d6d69745b636f6c6c6563744574686572 00000fd0: POP 00000fd1: PUSH19 0x6f63656564735d205472616e73666572206661 00000fe5: PUSH10 0x6c65642e5b636f756e74 00000ff0: PUSH6 0x72436f6d6d69 00000ff7: PUSH21 0x45746865725d20496e697469616c20636c61696d61 0000100d: PUSH15 0x7420646f6573206e6f742065786973 0000101d: PUSH21 0x5b636f756e746572436f6d6d697445746865725d20 00001033: MSTORE8 00001034: PUSH9 0x6f7467756e20616c72 0000103e: PUSH6 0x61647920656e 00001045: PUSH2 0x6374 00001048: PUSH6 0x645b656e6163 0000104f: PUSH21 0x53686f7467756e5d2053686f7467756e20616c7265 00001065: PUSH2 0x6479 00001068: KECCAK256 00001069: PUSH6 0x6e6163746564 00001070: JUMPDEST 00001071: PUSH4 0x6f756e74 00001076: PUSH6 0x72436f6d6d69 0000107d: PUSH21 0x45746865725d20446561646c696e65206861732065 00001093: PUSH25 0x70697265645b636f756e746572436f6d6d697445746865725d 000010ad: KECCAK256 000010ae: COINBASE 000010af: PUSH4 0x636f756e 000010b4: PUSH21 0x20646f6573206e6f74206f776e205368617264735b 000010ca: PUSH4 0x6f6c6c65 000010cf: PUSH4 0x74536861 000010d4: PUSH19 0x6450726f63656564735d2053686f7467756e20 000010e8: PUSH9 0x6173206e6f74206265 000010f2: PUSH6 0x6e20656e6163 000010f9: PUSH21 0x6564206f7220696e76616c69642077696e6e657253 0000110f: PUSH2 0x6665 00001112: UNKNOWN(0x4D) 00001113: PUSH2 0x7468 00001116: GASPRICE 00001117: KECCAK256 00001118: PUSH14 0x756c7469706c69636174696f6e20 00001127: PUSH16 0x766572666c6f775b636f756e74657243 00001138: PUSH16 0x6d6d697445746865725d204574686572 00001149: KECCAK256 0000114a: PUSH10 0x73207265717569726564 00001155: JUMPDEST 00001156: PUSH6 0x6e6163745368 0000115d: PUSH16 0x7467756e5d20436f6e646974696f6e73 0000116e: KECCAK256 0000116f: PUSH15 0x6f74206d657420746f20656e616374 0000117f: KECCAK256 00001180: MSTORE8 00001181: PUSH9 0x6f7467756e20436c61 0000118b: PUSH22 0x73655b636f6c6c656374457468657250726f63656564 000011a2: PUSH20 0x5d2043616c6c6572206e6f7420617574686f7269 000011b7: PUSH27 0x65645b636f6c6c656374536861726450726f63656564735d204163 000011d3: PUSH4 0x6f756e74 000011d8: KECCAK256 000011d9: PUSH9 0x6173206e6f74207061 000011e3: PUSH19 0x74696369706174656420696e20636f756e7465 000011f7: PUSH19 0x636c61696d5b636f756e746572436f6d6d6974 0000120b: GASLIMIT 0000120c: PUSH21 0x6865725d204574686572206578636565647320676f 00001222: PUSH2 0x6ca2 00001225: PUSH6 0x627a7a723158 0000122c: KECCAK256 0000122d: PUSH20 0xc3b89a9c0f974b088a2d48ee180ea663379db93f 00001242: CODESIZE 00001243: PUSH26
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf
call_targets:
0xb035e18ee8d98e6f54810c9337ab6524caeef875
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xb035e18ee8d98e6f54810c9337ab6524caeef875"
],
"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": "0xebe7f760",
"selector": "0xebe7f760",
"calldata_variants": [
"0xebe7f760",
"0xebe7f7600000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf372872d",
"selector": "0xf372872d",
"calldata_variants": [
"0xf372872d",
"0xf372872d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6d8414f",
"selector": "0xf6d8414f",
"calldata_variants": [
"0xf6d8414f",
"0xf6d8414f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9d820d0",
"selector": "0xf9d820d0",
"calldata_variants": [
"0xf9d820d0",
"0xf9d820d00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb342221",
"selector": "0xfb342221",
"calldata_variants": [
"0xfb342221",
"0xfb3422210000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6dce6c5e",
"selector": "0x6dce6c5e",
"calldata_variants": [
"0x6dce6c5e",
"0x6dce6c5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6f9fb98a",
"selector": "0x6f9fb98a",
"calldata_variants": [
"0x6f9fb98a",
"0x6f9fb98a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x767c56a2",
"selector": "0x767c56a2",
"calldata_variants": [
"0x767c56a2",
"0x767c56a20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2055,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2385,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2967,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [],
"untrusted_call_count": 4
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf
call_targets:
0xb035e18ee8d98e6f54810c9337ab6524caeef875
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x159829506231c7d816c84bf7c2e5814128b7a94031067352788ba764e5e8a5bf",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xb035e18ee8d98e6f54810c9337ab6524caeef875"
],
"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": "0xebe7f760",
"selector": "0xebe7f760",
"calldata_variants": [
"0xebe7f760",
"0xebe7f7600000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf372872d",
"selector": "0xf372872d",
"calldata_variants": [
"0xf372872d",
"0xf372872d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6d8414f",
"selector": "0xf6d8414f",
"calldata_variants": [
"0xf6d8414f",
"0xf6d8414f0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf9d820d0",
"selector": "0xf9d820d0",
"calldata_variants": [
"0xf9d820d0",
"0xf9d820d00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfb342221",
"selector": "0xfb342221",
"calldata_variants": [
"0xfb342221",
"0xfb3422210000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6dce6c5e",
"selector": "0x6dce6c5e",
"calldata_variants": [
"0x6dce6c5e",
"0x6dce6c5e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6f9fb98a",
"selector": "0x6f9fb98a",
"calldata_variants": [
"0x6f9fb98a",
"0x6f9fb98a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x767c56a2",
"selector": "0x767c56a2",
"calldata_variants": [
"0x767c56a2",
"0x767c56a20000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2055,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2385,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 2967,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": []
}
|
| medium | other | codex | Computed external CALLs with possible ETH transfer; target/access control unclear | 75 | no | — |
viewevidence_json{
"evidence": "Detector findings report 4 CALL sites with computed target/value and no guards detected (untrusted_call_count=4, eth_value_calls=4). Example callsites at pc 2055, 2385, 2967, 3289. Validation suggests constant target equal to 0xb035e18ee8d98e6f54810c9337ab6524caeef875, but confirmation is false and target inference is best-effort.",
"locations": [
"pc:2055",
"pc:2385",
"pc:2967",
"pc:3289"
],
"recommendation": "Confirm whether these CALLs are intentionally self-calls or otherwise constrained. If they are meant to be privileged or restricted, add explicit access control and validate/whitelist targets and value. Consider emitting events for outbound calls and enforcing strict success checks.",
"exploit_scenario": "If any public entrypoint allows a user to influence the CALL target or value, an attacker could direct the contract to call arbitrary addresses (including sending ETH), potentially draining funds or invoking unexpected external logic. If the target is actually fixed to address(this), impact is lower but still warrants review of intended behavior."
}
|