019bab3c-cabb-72fc-a916-554f86904ec9
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 |
|---|---|---|---|---|
| 39011 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 39012 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 39013 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 39014 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 39015 | capability.graph | complete | 1 / 3 | 3 months ago |
| 39016 | detector.run | complete | 1 / 3 | 3 months ago |
| 39017 | validation.fork | complete | 1 / 3 | 3 months ago |
| 39239 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Detected delegatecall(s) to computed targets with no confirmed trust boundary; if the target address is user-influenced, this enables arbitrary code execution in the contract’s storage context.","findings":[{"severity":"medium","category":"other","title":"Computed DELEGATECALL target reachable (potentially untrusted)","exploit_scenario":"If an attacker can influence the storage/mapping used to resolve the delegatecall target (e.g., a facet/implementation address), they can point it to malicious code and gain arbitrary storage writes, asset drains, or ownership takeover via delegatecall. The bytecode analysis does not confirm who controls the target, so impact depends on access control in the (unknown) setter paths.","recommendation":"Ensure delegatecall targets are immutable or only changeable by a well-guarded admin. Consider explicit allowlists or codehash checks for implementations/facets, and emit events on upgrades. If this is intended as a proxy/diamond pattern, clearly gate upgrade or selector-to-facet management functions.","evidence":"Detector flagged 2 DELEGATECALL sites with computed targets and no validated guard; evidence_json shows untrusted_delegatecall_count=2 with target_expression_category=computed. Callsites at pc 8790 and 9330. Storage reads occur immediately around delegatecall path (e.g., SLOAD at pc 9313 slot 0x7050c9e0... and pc 9386 slot 0x10d6a54a...), indicating the target may be derived from storage. Guard detection only saw msg.sender==0xffff.. (likely unsatisfiable), so access control is unclear.","locations":["pc:0x2256","pc:0x2472"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-a54kxd0u
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bac2a-ecd8-7081-bb3d-5b2ebe656b71
--------
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
**Reading BYTECODE_BUNDLE.json**
exec
/bin/bash -lc ls in /tmp/codex-a54kxd0u succeeded in 5ms:
BYTECODE_BUNDLE.json
codex-output-schema.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-a54kxd0u succeeded in 34ms:
{
"analysis_artifact": {
"address": "0x3463c6572bf1ea4c719fc229bd0d4956b0585a2c",
"artifact_hash": "0x6e3d3c6ecb050ee0f4514ff867763223e11fb30cd6488f9407f41c77dc11c6c4",
"artifact_json": {
"auth": {
"guards": [
{
"pc": 4665,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6728,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8639,
"type": "msg_sender_eq_const",
thinking
**Planning evidence extraction approach**
exec
/bin/bash -lc "python - <<'PY'
import json
import sys
path='BYTECODE_BUNDLE.json'
with open(path) as f:
data=json.load(f)
print(data.keys())
PY" in /tmp/codex-a54kxd0u succeeded in 45ms:
dict_keys(['analysis_artifact', 'analysis_run', 'artifact', 'capability_graph', 'detector_findings', 'heuristics_summary'])
thinking
**Inspecting artifact**
exec
/bin/bash -lc "python - <<'PY'
import json
path='BYTECODE_BUNDLE.json'
with open(path) as f:
data=json.load(f)
print(data['artifact'].keys())
PY" in /tmp/codex-a54kxd0u succeeded in 79ms:
dict_keys(['codehash', 'compiler_json', 'implementation_address', 'is_proxy', 'runtime_bytecode', 'verified_source'])
thinking
**Checking proxy status**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
print('is_proxy', data['artifact'].get('is_proxy'))
print('implementation_address', data['artifact'].get('implementation_address'))
PY" in /tmp/codex-a54kxd0u succeeded in 34ms:
is_proxy False
implementation_address None
thinking
**Comparing artifact types**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
print(data['capability_graph'].keys())
PY" in /tmp/codex-a54kxd0u succeeded in 40ms:
dict_keys(['address', 'block_number', 'chain_id', 'codehash', 'created_at', 'graph_hash', 'graph_json', 'id', 'updated_at', 'version'])
thinking
**Inspecting analysis_run for evidence_bundle**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
print(data['analysis_run'].keys())
PY" in /tmp/codex-a54kxd0u succeeded in 72ms:
dict_keys(['address', 'block_number', 'chain_id', 'child_links', 'created_at', 'id', 'parent_links', 'status', 'updated_at'])
thinking
**Inspecting graph_json structure**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
print(data['capability_graph']['graph_json'].keys())
PY" in /tmp/codex-a54kxd0u succeeded in 34ms:
dict_keys(['edges', 'nodes', 'version'])
thinking
**Investigating storage and callsite data**
exec
/bin/bash -lc 'rg -n "storage" BYTECODE_BUNDLE.json | head' in /tmp/codex-a54kxd0u succeeded in 18ms:
13256: "storage": {
13636: "storage": {
14016: "storage": {
14396: "storage": {
14776: "storage": {
15156: "storage": {
15536: "storage": {
15916: "storage": {
16296: "storage": {
16676: "storage": {
thinking
**Inspecting storage info in file**
exec
/bin/bash -lc "sed -n '13240,13290p' BYTECODE_BUNDLE.json" in /tmp/codex-a54kxd0u succeeded in 8ms:
},
{
"pc": 9162,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
]
},
"entry_pc": 4187942029,
"selector": "0xf99eec8d",
"sinks": {
"call": 0,
"delegatecall": 2,
"selfdestruct": 0,
"staticcall": 2
},
"storage": {
"reads": 105,
"slots": [
{
thinking
**Analyzing delegatecall usage in graph data**
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import Counter
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
# find callsites in analysis_artifact artifact_json
nodes = data['analysis_artifact']['artifact_json'].get('nodes', [])
# in earlier output we saw callsites; let's list them with extra info if present
calls=[n for n in nodes if n.get('type')=='callsite']
print('callsites', len(calls))
print(calls[:5])
PY" in /tmp/codex-a54kxd0u succeeded in 37ms:
callsites 0
[]
thinking
**Investigating callsites location**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
nodes = data['capability_graph']['graph_json'].get('nodes', [])
# find callsites
calls=[n for n in nodes if n.get('type')=='callsite']
print('callsites', len(calls))
print(calls[:10])
PY" in /tmp/codex-a54kxd0u succeeded in 38ms:
callsites 4
[{'id': 'call:4387', 'opcode': 'STATICCALL', 'pc': 4387, 'type': 'callsite'}, {'id': 'call:5164', 'opcode': 'STATICCALL', 'pc': 5164, 'type': 'callsite'}, {'id': 'call:8790', 'opcode': 'DELEGATECALL', 'pc': 8790, 'type': 'callsite'}, {'id': 'call:9330', 'opcode': 'DELEGATECALL', 'pc': 9330, 'type': 'callsite'}]
thinking
**Investigating call graph edges**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
edges=data['capability_graph']['graph_json'].get('edges', [])
# filter edges involving call:8790 or call:9330
for call_id in ['call:8790','call:9330']:
rel=[e for e in edges if e.get('src')==call_id or e.get('dst')==call_id]
print(call_id, 'edges', len(rel))
print(rel[:10])
PY" in /tmp/codex-a54kxd0u succeeded in 35ms:
call:8790 edges 0
[]
call:9330 edges 0
[]
thinking
**Inspecting function nodes with storage sinks**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
funcs=[n for n in data['capability_graph']['graph_json'].get('nodes', []) if n.get('type')=='function']
print('functions', len(funcs))
# list functions with delegatecall sink
with_delegate=[f for f in funcs if f.get('sinks',{}).get('delegatecall',0)>0]
print('with delegatecall', len(with_delegate))
for f in with_delegate[:10]:
print(f.get('selector'), f.get('entry_pc'), f.get('sinks'))
PY" in /tmp/codex-a54kxd0u succeeded in 36ms:
functions 73
with delegatecall 0
thinking
**Examining functions for sink attributes**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
# find any nodes with sinks
nodes = data['capability_graph']['graph_json'].get('nodes', [])
with_sinks=[n for n in nodes if 'sinks' in n]
print('nodes with sinks', len(with_sinks))
print(with_sinks[:3])
PY" in /tmp/codex-a54kxd0u succeeded in 47ms:
nodes with sinks 0
[]
thinking
**Investigating snippet origin in file**
exec
/bin/bash -lc "sed -n '13180,13220p' BYTECODE_BUNDLE.json" in /tmp/codex-a54kxd0u succeeded in 15ms:
},
{
"entry_pc": null,
"selector": "0x3131be90"
},
{
"entry_pc": 400409976,
"selector": "0x17ddc578"
},
{
"entry_pc": 499052412,
"selector": "0x1a454ea6"
},
{
"entry_pc": null,
"selector": "0x1dbeef7c"
},
{
"entry_pc": 343336448,
"selector": "0x13d3d00e"
thinking
**Examining function list boundaries**
exec
/bin/bash -lc "sed -n '13220,13260p' BYTECODE_BUNDLE.json" in /tmp/codex-a54kxd0u succeeded in 8ms:
}
],
"functions": [
{
"auth": {
"guards": [
{
"pc": 4665,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6728,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8639,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
thinking
**Searching JSON for functions with sinks**
exec
/bin/bash -lc "python - <<'PY'
import json
from collections import deque
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
# find paths to list of dicts where dict has 'sinks'
paths=[]
def walk(obj, path):
if isinstance(obj, dict):
if 'functions' in obj and isinstance(obj['functions'], list):
# check if any function has 'sinks'
if any(isinstance(fn, dict) and 'sinks' in fn for fn in obj['functions']):
paths.append(path + ['functions'])
for k,v in obj.items():
walk(v, path+[k])
elif isinstance(obj, list):
for i,v in enumerate(obj):
walk(v, path+[i])
walk(data, [])
print(paths)
PY" in /tmp/codex-a54kxd0u succeeded in 53ms:
[['analysis_artifact', 'artifact_json', 'functions']]
thinking
**Parsing functions for delegatecall**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
funcs=data['analysis_artifact']['artifact_json'].get('functions', [])
print('functions', len(funcs))
with_del=[f for f in funcs if f.get('sinks',{}).get('delegatecall',0)>0]
print('with delegatecall', len(with_del))
for f in with_del:
print(f.get('selector'), f.get('entry_pc'), f.get('sinks'))
PY" in /tmp/codex-a54kxd0u succeeded in 35ms:
functions 73
with delegatecall 73
0xf99eec8d 4187942029 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xfa845ca9 4227030854 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xfbf35f46 None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xf2fde38b 4132801280 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xf6558b00 None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xec556889 3965020297 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xf09a4016 4053881761 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xf1a153a1 None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xe2a4157c 3906930557 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xe8df077d None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xd8e9f45d 3639211101 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xdb3d1ccf 3699852620 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xdc87454c None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xd7615d37 3621415766 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xd7da6b56 None {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xbdbcb576 3286906229 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xc3ea3575 3466034114 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
0xce977bc2 3590869410 {'call': 0, 'delegatecall': 2, 'selfdestruct': 0, 'staticcall': 2}
thinking
**Analyzing delegatecall targets and storage slots**
I'm examining delegatecall usage suggesting a proxy or modular pattern, focusing on computed delegatecall targets flagged as untrusted. To trace these targets, I plan to scan storage slot accesses near the delegatecall instruction PCs (8790 and 9330) by parsing the storage slots list for operations like SLOAD around those PCs. I'll write a Python script to identify relevant storage slots linked to the delegatecall target computation.
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
funcs=data['analysis_artifact']['artifact_json'].get('functions', [])
# take first function
f=funcs[0]
slots=f.get('storage',{}).get('slots',[])
near=[s for s in slots if 8700 <= s.get('pc',0) <= 9400]
print('near count', len(near))
print(near[:20])
PY" in /tmp/codex-a54kxd0u succeeded in 36ms:
near count 5
[{'op': 'SLOAD', 'pc': 8921, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000008'}, {'op': 'SLOAD', 'pc': 8951, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000008'}, {'op': 'SLOAD', 'pc': 9106, 'slot': '0x0000000000000000000000000000000000000000000000000000000000000007'}, {'op': 'SLOAD', 'pc': 9313, 'slot': '0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3'}, {'op': 'SLOAD', 'pc': 9386, 'slot': '0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b'}]
thinking
**Analyzing delegatecall storage and access control**
exec
/bin/bash -lc "python - <<'PY'
import json
impl_slot='0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'.lower()
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
funcs=data['analysis_artifact']['artifact_json'].get('functions', [])
slots=set()
for f in funcs:
for s in f.get('storage',{}).get('slots', []):
slots.add(s['slot'].lower())
print('impl slot present?', impl_slot in slots)
PY" in /tmp/codex-a54kxd0u succeeded in 53ms:
impl slot present? False
thinking
**Checking diamond storage slot constants**
exec
/bin/bash -lc "python - <<'PY'
import hashlib
s=b\"diamond.standard.diamond.storage\"
print('0x'+hashlib.sha3_256(s).hexdigest())
PY" in /tmp/codex-a54kxd0u succeeded in 19ms:
0x650878ab38e4aea3c87642c8ba3a0d0e8e0bd09875b345697afc775f64dda33c
thinking
**Investigating proxy storage slots**
exec
/bin/bash -lc "python - <<'PY'
import json
slots=set()
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
for f in data['analysis_artifact']['artifact_json'].get('functions', []):
for s in f.get('storage',{}).get('slots', []):
slots.add(s['slot'].lower())
for name,slot in [('impl','0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'),('admin','0xb53127684a568b3173ae13b9f8a6016e0198bfb5d4f64fa5b409f9e1e6b3adfb'),('beacon','0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50')]:
print(name, slot.lower() in slots)
PY" in /tmp/codex-a54kxd0u succeeded in 56ms:
impl False
admin False
beacon False
thinking
**Investigating delegatecall and selector mappings**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
selectors=[f.get('selector') for f in data['analysis_artifact']['artifact_json'].get('functions', [])]
print('diamondCut present', '0x1f931c1c' in selectors)
print('facets 0x7a0ed627 present', '0x7a0ed627' in selectors)
print('supportsInterface 0x01ffc9a7 present', '0x01ffc9a7' in selectors)
PY" in /tmp/codex-a54kxd0u succeeded in 37ms:
diamondCut present False
facets 0x7a0ed627 present False
supportsInterface 0x01ffc9a7 present False
thinking
**Analyzing ownership and storage slots**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
slots=set()
for f in data['analysis_artifact']['artifact_json'].get('functions', []):
for s in f.get('storage',{}).get('slots', []):
slots.add(s['slot'].lower())
# show small numeric slots
low=[s for s in slots if int(s,16) < 0x40]
print(sorted(low)[:20])
print('count low', len(low))
PY" in /tmp/codex-a54kxd0u succeeded in 39ms:
['0x0000000000000000000000000000000000000000000000000000000000000000', '0x0000000000000000000000000000000000000000000000000000000000000001', '0x0000000000000000000000000000000000000000000000000000000000000002', '0x0000000000000000000000000000000000000000000000000000000000000003', '0x0000000000000000000000000000000000000000000000000000000000000004', '0x0000000000000000000000000000000000000000000000000000000000000005', '0x0000000000000000000000000000000000000000000000000000000000000006', '0x0000000000000000000000000000000000000000000000000000000000000007', '0x0000000000000000000000000000000000000000000000000000000000000008', '0x0000000000000000000000000000000000000000000000000000000000000009', '0x000000000000000000000000000000000000000000000000000000000000000a', '0x000000000000000000000000000000000000000000000000000000000000000b', '0x000000000000000000000000000000000000000000000000000000000000000c', '0x000000000000000000000000000000000000000000000000000000000000000d', '0x000000000000000000000000000000000000000000000000000000000000000e', '0x000000000000000000000000000000000000000000000000000000000000000f', '0x0000000000000000000000000000000000000000000000000000000000000010', '0x0000000000000000000000000000000000000000000000000000000000000011', '0x0000000000000000000000000000000000000000000000000000000000000014', '0x0000000000000000000000000000000000000000000000000000000000000015']
count low 32
thinking
**Summarizing delegatecall findings with uncertainty**
I’m analyzing untrusted delegatecall evidence showing two callsites with computed targets and unclear access control due to a likely unsatisfiable guard (msg.sender == 0xffff…). This suggests a medium severity risk related to upgradeability or other dangerous delegatecalls, but with some uncertainty since the proxy flag is false and access control can’t be confirmed. I’ll include locations, evidence from storage loads near delegatecall PCs, and emphasize cautious interpretation in the JSON output per schema.
codex
{"no_findings":false,"summary":"Detected delegatecall(s) to computed targets with no confirmed trust boundary; if the target address is user-influenced, this enables arbitrary code execution in the contract’s storage context.","findings":[{"severity":"medium","category":"other","title":"Computed DELEGATECALL target reachable (potentially untrusted)","exploit_scenario":"If an attacker can influence the storage/mapping used to resolve the delegatecall target (e.g., a facet/implementation address), they can point it to malicious code and gain arbitrary storage writes, asset drains, or ownership takeover via delegatecall. The bytecode analysis does not confirm who controls the target, so impact depends on access control in the (unknown) setter paths.","recommendation":"Ensure delegatecall targets are immutable or only changeable by a well-guarded admin. Consider explicit allowlists or codehash checks for implementations/facets, and emit events on upgrades. If this is intended as a proxy/diamond pattern, clearly gate upgrade or selector-to-facet management functions.","evidence":"Detector flagged 2 DELEGATECALL sites with computed targets and no validated guard; evidence_json shows untrusted_delegatecall_count=2 with target_expression_category=computed. Callsites at pc 8790 and 9330. Storage reads occur immediately around delegatecall path (e.g., SLOAD at pc 9313 slot 0x7050c9e0... and pc 9386 slot 0x10d6a54a...), indicating the target may be derived from storage. Guard detection only saw msg.sender==0xffff.. (likely unsatisfiable), so access control is unclear.","locations":["pc:0x2256","pc:0x2472"]}]}
tokens used
66,610
{
"codex": {
"ran_at": "2026-01-11T08:30:35.754348+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 20864,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Detected delegatecall(s) to computed targets with no confirmed trust boundary; if the target address is user-influenced, this enables arbitrary code execution in the contract\u2019s storage context.",
"raw_final": {
"summary": "Detected delegatecall(s) to computed targets with no confirmed trust boundary; if the target address is user-influenced, this enables arbitrary code execution in the contract\u2019s storage context.",
"findings": [
{
"title": "Computed DELEGATECALL target reachable (potentially untrusted)",
"category": "other",
"evidence": "Detector flagged 2 DELEGATECALL sites with computed targets and no validated guard; evidence_json shows untrusted_delegatecall_count=2 with target_expression_category=computed. Callsites at pc 8790 and 9330. Storage reads occur immediately around delegatecall path (e.g., SLOAD at pc 9313 slot 0x7050c9e0... and pc 9386 slot 0x10d6a54a...), indicating the target may be derived from storage. Guard detection only saw msg.sender==0xffff.. (likely unsatisfiable), so access control is unclear.",
"severity": "medium",
"locations": [
"pc:0x2256",
"pc:0x2472"
],
"recommendation": "Ensure delegatecall targets are immutable or only changeable by a well-guarded admin. Consider explicit allowlists or codehash checks for implementations/facets, and emit events on upgrades. If this is intended as a proxy/diamond pattern, clearly gate upgrade or selector-to-facet management functions.",
"exploit_scenario": "If an attacker can influence the storage/mapping used to resolve the delegatecall target (e.g., a facet/implementation address), they can point it to malicious code and gain arbitrary storage writes, asset drains, or ownership takeover via delegatecall. The bytecode analysis does not confirm who controls the target, so impact depends on access control in the (unknown) setter paths."
}
],
"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 0x04b6 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x864e35c1 00000019: GT 0000001a: PUSH2 0x0279 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xbdbcb576 00000024: GT 00000025: PUSH2 0x015e 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe2a4157c 0000002f: GT 00000030: PUSH2 0x00d6 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xf2fde38b 0000003a: GT 0000003b: PUSH2 0x008a 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xf99eec8d 00000045: GT 00000046: PUSH2 0x006f 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf99eec8d 00000050: EQ 00000051: PUSH2 0x0efb 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xfa845ca9 0000005b: EQ 0000005c: PUSH2 0x0fda 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xfbf35f46 00000066: EQ 00000067: PUSH2 0x101a 0000006a: JUMPI 0000006b: PUSH2 0x04b6 0000006e: JUMP 0000006f: JUMPDEST 00000070: DUP1 00000071: PUSH4 0xf2fde38b 00000076: EQ 00000077: PUSH2 0x0e82 0000007a: JUMPI 0000007b: DUP1 0000007c: PUSH4 0xf6558b00 00000081: EQ 00000082: PUSH2 0x0ec2 00000085: JUMPI 00000086: PUSH2 0x04b6 00000089: JUMP 0000008a: JUMPDEST 0000008b: DUP1 0000008c: PUSH4 0xec556889 00000091: GT 00000092: PUSH2 0x00bb 00000095: JUMPI 00000096: DUP1 00000097: PUSH4 0xec556889 0000009c: EQ 0000009d: PUSH2 0x0dfb 000000a0: JUMPI 000000a1: DUP1 000000a2: PUSH4 0xf09a4016 000000a7: EQ 000000a8: PUSH2 0x0e10 000000ab: JUMPI 000000ac: DUP1 000000ad: PUSH4 0xf1a153a1 000000b2: EQ 000000b3: PUSH2 0x0e58 000000b6: JUMPI 000000b7: PUSH2 0x04b6 000000ba: JUMP 000000bb: JUMPDEST 000000bc: DUP1 000000bd: PUSH4 0xe2a4157c 000000c2: EQ 000000c3: PUSH2 0x0dd1 000000c6: JUMPI 000000c7: DUP1 000000c8: PUSH4 0xe8df077d 000000cd: EQ 000000ce: PUSH2 0x0de6 000000d1: JUMPI 000000d2: PUSH2 0x04b6 000000d5: JUMP 000000d6: JUMPDEST 000000d7: DUP1 000000d8: PUSH4 0xd7615d37 000000dd: GT 000000de: PUSH2 0x012d 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0xd8e9f45d 000000e8: GT 000000e9: PUSH2 0x0112 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0xd8e9f45d 000000f3: EQ 000000f4: PUSH2 0x0d92 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0xdb3d1ccf 000000fe: EQ 000000ff: PUSH2 0x0da7 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0xdc87454c 00000109: EQ 0000010a: PUSH2 0x0dbc 0000010d: JUMPI 0000010e: PUSH2 0x04b6 00000111: JUMP 00000112: JUMPDEST 00000113: DUP1 00000114: PUSH4 0xd7615d37 00000119: EQ 0000011a: PUSH2 0x0d68 0000011d: JUMPI 0000011e: DUP1 0000011f: PUSH4 0xd7da6b56 00000124: EQ 00000125: PUSH2 0x0d7d 00000128: JUMPI 00000129: PUSH2 0x04b6 0000012c: JUMP 0000012d: JUMPDEST 0000012e: DUP1 0000012f: PUSH4 0xbdbcb576 00000134: EQ 00000135: PUSH2 0x0cb2 00000138: JUMPI 00000139: DUP1 0000013a: PUSH4 0xc3ea3575 0000013f: EQ 00000140: PUSH2 0x0cf8 00000143: JUMPI 00000144: DUP1 00000145: PUSH4 0xce977bc2 0000014a: EQ 0000014b: PUSH2 0x0d0d 0000014e: JUMPI 0000014f: DUP1 00000150: PUSH4 0xd60851a2 00000155: EQ 00000156: PUSH2 0x0d53 00000159: JUMPI 0000015a: PUSH2 0x04b6 0000015d: JUMP 0000015e: JUMPDEST 0000015f: DUP1 00000160: PUSH4 0xa8b6b2b6 00000165: GT 00000166: PUSH2 0x01f1 00000169: JUMPI 0000016a: DUP1 0000016b: PUSH4 0xb1ace0b0 00000170: GT 00000171: PUSH2 0x01c0 00000174: JUMPI 00000175: DUP1 00000176: PUSH4 0xb693c3be 0000017b: GT 0000017c: PUSH2 0x01a5 0000017f: JUMPI 00000180: DUP1 00000181: PUSH4 0xb693c3be 00000186: EQ 00000187: PUSH2 0x0c73 0000018a: JUMPI 0000018b: DUP1 0000018c: PUSH4 0xb7ac4ff3 00000191: EQ 00000192: PUSH2 0x0c88 00000195: JUMPI 00000196: DUP1 00000197: PUSH4 0xba20715a 0000019c: EQ 0000019d: PUSH2 0x0c9d 000001a0: JUMPI 000001a1: PUSH2 0x04b6 000001a4: JUMP 000001a5: JUMPDEST 000001a6: DUP1 000001a7: PUSH4 0xb1ace0b0 000001ac: EQ 000001ad: PUSH2 0x05b9 000001b0: JUMPI 000001b1: DUP1 000001b2: PUSH4 0xb5050ea8 000001b7: EQ 000001b8: PUSH2 0x0c5e 000001bb: JUMPI 000001bc: PUSH2 0x04b6 000001bf: JUMP 000001c0: JUMPDEST 000001c1: DUP1 000001c2: PUSH4 0xa8b6b2b6 000001c7: EQ 000001c8: PUSH2 0x05b9 000001cb: JUMPI 000001cc: DUP1 000001cd: PUSH4 0xa940646d 000001d2: EQ 000001d3: PUSH2 0x0bd9 000001d6: JUMPI 000001d7: DUP1 000001d8: PUSH4 0xa9e74344 000001dd: EQ 000001de: PUSH2 0x0c03 000001e1: JUMPI 000001e2: DUP1 000001e3: PUSH4 0xae2f89c2 000001e8: EQ 000001e9: PUSH2 0x0c49 000001ec: JUMPI 000001ed: PUSH2 0x04b6 000001f0: JUMP 000001f1: JUMPDEST 000001f2: DUP1 000001f3: PUSH4 0x9244adcd 000001f8: GT 000001f9: PUSH2 0x0248 000001fc: JUMPI 000001fd: DUP1 000001fe: PUSH4 0x9a8a2145 00000203: GT 00000204: PUSH2 0x022d 00000207: JUMPI 00000208: DUP1 00000209: PUSH4 0x9a8a2145 0000020e: EQ 0000020f: PUSH2 0x0b6f 00000212: JUMPI 00000213: DUP1 00000214: PUSH4 0x9f712f2f 00000219: EQ 0000021a: PUSH2 0x0b84 0000021d: JUMPI 0000021e: DUP1 0000021f: PUSH4 0xa7a53243 00000224: EQ 00000225: PUSH2 0x0bc4 00000228: JUMPI 00000229: PUSH2 0x04b6 0000022c: JUMP 0000022d: JUMPDEST 0000022e: DUP1 0000022f: PUSH4 0x9244adcd 00000234: EQ 00000235: PUSH2 0x0ab4 00000238: JUMPI 00000239: DUP1 0000023a: PUSH4 0x933dbf85 0000023f: EQ 00000240: PUSH2 0x0b5a 00000243: JUMPI 00000244: PUSH2 0x04b6 00000247: JUMP 00000248: JUMPDEST 00000249: DUP1 0000024a: PUSH4 0x864e35c1 0000024f: EQ 00000250: PUSH2 0x0a35 00000253: JUMPI 00000254: DUP1 00000255: PUSH4 0x8a177973 0000025a: EQ 0000025b: PUSH2 0x0a75 0000025e: JUMPI 0000025f: DUP1 00000260: PUSH4 0x8da5cb5b 00000265: EQ 00000266: PUSH2 0x0a8a 00000269: JUMPI 0000026a: DUP1 0000026b: PUSH4 0x8f32d59b 00000270: EQ 00000271: PUSH2 0x0a9f 00000274: JUMPI 00000275: PUSH2 0x04b6 00000278: JUMP 00000279: JUMPDEST 0000027a: DUP1 0000027b: PUSH4 0x467f0e06 00000280: GT 00000281: PUSH2 0x039f 00000284: JUMPI 00000285: DUP1 00000286: PUSH4 0x63b7bf20 0000028b: GT 0000028c: PUSH2 0x0317 0000028f: JUMPI 00000290: DUP1 00000291: PUSH4 0x751a2238 00000296: GT 00000297: PUSH2 0x02e6 0000029a: JUMPI 0000029b: DUP1 0000029c: PUSH4 0x7cd9fb1c 000002a1: GT 000002a2: PUSH2 0x02cb 000002a5: JUMPI 000002a6: DUP1 000002a7: PUSH4 0x7cd9fb1c 000002ac: EQ 000002ad: PUSH2 0x09b6 000002b0: JUMPI 000002b1: DUP1 000002b2: PUSH4 0x821f9824 000002b7: EQ 000002b8: PUSH2 0x09e0 000002bb: JUMPI 000002bc: DUP1 000002bd: PUSH4 0x83ae86cb 000002c2: EQ 000002c3: PUSH2 0x0a20 000002c6: JUMPI 000002c7: PUSH2 0x04b6 000002ca: JUMP 000002cb: JUMPDEST 000002cc: DUP1 000002cd: PUSH4 0x751a2238 000002d2: EQ 000002d3: PUSH2 0x098c 000002d6: JUMPI 000002d7: DUP1 000002d8: PUSH4 0x789bc8e2 000002dd: EQ 000002de: PUSH2 0x09a1 000002e1: JUMPI 000002e2: PUSH2 0x04b6 000002e5: JUMP 000002e6: JUMPDEST 000002e7: DUP1 000002e8: PUSH4 0x63b7bf20 000002ed: EQ 000002ee: PUSH2 0x0938 000002f1: JUMPI 000002f2: DUP1 000002f3: PUSH4 0x675fb9c4 000002f8: EQ 000002f9: PUSH2 0x094d 000002fc: JUMPI 000002fd: DUP1 000002fe: PUSH4 0x715018a6 00000303: EQ 00000304: PUSH2 0x0962 00000307: JUMPI 00000308: DUP1 00000309: PUSH4 0x7496780f 0000030e: EQ 0000030f: PUSH2 0x0977 00000312: JUMPI 00000313: PUSH2 0x04b6 00000316: JUMP 00000317: JUMPDEST 00000318: DUP1 00000319: PUSH4 0x573c8409 0000031e: GT 0000031f: PUSH2 0x036e 00000322: JUMPI 00000323: DUP1 00000324: PUSH4 0x5e068da5 00000329: GT 0000032a: PUSH2 0x0353 0000032d: JUMPI 0000032e: DUP1 0000032f: PUSH4 0x5e068da5 00000334: EQ 00000335: PUSH2 0x0884 00000338: JUMPI 00000339: DUP1 0000033a: PUSH4 0x5f2e5b46 0000033f: EQ 00000340: PUSH2 0x090e 00000343: JUMPI 00000344: DUP1 00000345: PUSH4 0x5f88967b 0000034a: EQ 0000034b: PUSH2 0x0923 0000034e: JUMPI 0000034f: PUSH2 0x04b6 00000352: JUMP 00000353: JUMPDEST 00000354: DUP1 00000355: PUSH4 0x573c8409 0000035a: EQ 0000035b: PUSH2 0x07fe 0000035e: JUMPI 0000035f: DUP1 00000360: PUSH4 0x5825b04c 00000365: EQ 00000366: PUSH2 0x0844 00000369: JUMPI 0000036a: PUSH2 0x04b6 0000036d: JUMP 0000036e: JUMPDEST 0000036f: DUP1 00000370: PUSH4 0x467f0e06 00000375: EQ 00000376: PUSH2 0x0795 00000379: JUMPI 0000037a: DUP1 0000037b: PUSH4 0x48ea7638 00000380: EQ 00000381: PUSH2 0x07aa 00000384: JUMPI 00000385: DUP1 00000386: PUSH4 0x4f2094a1 0000038b: EQ 0000038c: PUSH2 0x07bf 0000038f: JUMPI 00000390: DUP1 00000391: PUSH4 0x56f7e7ff 00000396: EQ 00000397: PUSH2 0x07d4 0000039a: JUMPI 0000039b: PUSH2 0x04b6 0000039e: JUMP 0000039f: JUMPDEST 000003a0: DUP1 000003a1: PUSH4 0x25f842c5 000003a6: GT 000003a7: PUSH2 0x0432 000003aa: JUMPI 000003ab: DUP1 000003ac: PUSH4 0x32952b66 000003b1: GT 000003b2: PUSH2 0x0401 000003b5: JUMPI 000003b6: DUP1 000003b7: PUSH4 0x3e47158c 000003bc: GT 000003bd: PUSH2 0x03e6 000003c0: JUMPI 000003c1: DUP1 000003c2: PUSH4 0x3e47158c 000003c7: EQ 000003c8: PUSH2 0x0725 000003cb: JUMPI 000003cc: DUP1 000003cd: PUSH4 0x404c568f 000003d2: EQ 000003d3: PUSH2 0x073a 000003d6: JUMPI 000003d7: DUP1 000003d8: PUSH4 0x44841f4f 000003dd: EQ 000003de: PUSH2 0x0780 000003e1: JUMPI 000003e2: PUSH2 0x04b6 000003e5: JUMP 000003e6: JUMPDEST 000003e7: DUP1 000003e8: PUSH4 0x32952b66 000003ed: EQ 000003ee: PUSH2 0x0676 000003f1: JUMPI 000003f2: DUP1 000003f3: PUSH4 0x392e53cd 000003f8: EQ 000003f9: PUSH2 0x0710 000003fc: JUMPI 000003fd: PUSH2 0x04b6 00000400: JUMP 00000401: JUMPDEST 00000402: DUP1 00000403: PUSH4 0x25f842c5 00000408: EQ 00000409: PUSH2 0x05e3 0000040c: JUMPI 0000040d: DUP1 0000040e: PUSH4 0x2893f5cc 00000413: EQ 00000414: PUSH2 0x05f8 00000417: JUMPI 00000418: DUP1 00000419: PUSH4 0x2f884710 0000041e: EQ 0000041f: PUSH2 0x064c 00000422: JUMPI 00000423: DUP1 00000424: PUSH4 0x3131be90 00000429: EQ 0000042a: PUSH2 0x0661 0000042d: JUMPI 0000042e: PUSH2 0x04b6 00000431: JUMP 00000432: JUMPDEST 00000433: DUP1 00000434: PUSH4 0x13d3d00e 00000439: GT 0000043a: PUSH2 0x0489 0000043d: JUMPI 0000043e: DUP1 0000043f: PUSH4 0x17ddc578 00000444: GT 00000445: PUSH2 0x046e 00000448: JUMPI 00000449: DUP1 0000044a: PUSH4 0x17ddc578 0000044f: EQ 00000450: PUSH2 0x05a4 00000453: JUMPI 00000454: DUP1 00000455: PUSH4 0x1a454ea6 0000045a: EQ 0000045b: PUSH2 0x05b9 0000045e: JUMPI 0000045f: DUP1 00000460: PUSH4 0x1dbeef7c 00000465: EQ 00000466: PUSH2 0x05ce 00000469: JUMPI 0000046a: PUSH2 0x04b6 0000046d: JUMP 0000046e: JUMPDEST 0000046f: DUP1 00000470: PUSH4 0x13d3d00e 00000475: EQ 00000476: PUSH2 0x057a 00000479: JUMPI 0000047a: DUP1 0000047b: PUSH4 0x1476e600 00000480: EQ 00000481: PUSH2 0x058f 00000484: JUMPI 00000485: PUSH2 0x04b6 00000488: JUMP 00000489: JUMPDEST 0000048a: DUP1 0000048b: PUSH4 0x057fe949 00000490: EQ 00000491: PUSH2 0x04c0 00000494: JUMPI 00000495: DUP1 00000496: PUSH4 0x06d34c60 0000049b: EQ 0000049c: PUSH2 0x04fe 0000049f: JUMPI 000004a0: DUP1 000004a1: PUSH4 0x0bafd60e 000004a6: EQ 000004a7: PUSH2 0x0550 000004aa: JUMPI 000004ab: DUP1 000004ac: PUSH4 0x0c870f91 000004b1: EQ 000004b2: PUSH2 0x0565 000004b5: JUMPI 000004b6: JUMPDEST 000004b7: PUSH2 0x04be 000004ba: PUSH2 0x102f 000004bd: JUMP 000004be: JUMPDEST 000004bf: STOP 000004c0: JUMPDEST 000004c1: CALLVALUE 000004c2: DUP1 000004c3: ISZERO 000004c4: PUSH2 0x04cc 000004c7: JUMPI 000004c8: PUSH1 0x00 000004ca: DUP1 000004cb: REVERT 000004cc: JUMPDEST 000004cd: POP 000004ce: PUSH2 0x04d5 000004d1: PUSH2 0x1049 000004d4: JUMP 000004d5: JUMPDEST 000004d6: PUSH1 0x40 000004d8: DUP1 000004d9: MLOAD 000004da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000004ef: SWAP1 000004f0: SWAP3 000004f1: AND 000004f2: DUP3 000004f3: MSTORE 000004f4: MLOAD 000004f5: SWAP1 000004f6: DUP2 000004f7: SWAP1 000004f8: SUB 000004f9: PUSH1 0x20 000004fb: ADD 000004fc: SWAP1 000004fd: RETURN 000004fe: JUMPDEST 000004ff: CALLVALUE 00000500: DUP1 00000501: ISZERO 00000502: PUSH2 0x050a 00000505: JUMPI 00000506: PUSH1 0x00 00000508: DUP1 00000509: REVERT 0000050a: JUMPDEST 0000050b: POP 0000050c: PUSH2 0x053e 0000050f: PUSH1 0x04 00000511: DUP1 00000512: CALLDATASIZE 00000513: SUB 00000514: PUSH1 0x20 00000516: DUP2 00000517: LT 00000518: ISZERO 00000519: PUSH2 0x0521 0000051c: JUMPI 0000051d: PUSH1 0x00 0000051f: DUP1 00000520: REVERT 00000521: JUMPDEST 00000522: POP 00000523: CALLDATALOAD 00000524: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000539: AND 0000053a: PUSH2 0x1065 0000053d: JUMP 0000053e: JUMPDEST 0000053f: PUSH1 0x40 00000541: DUP1 00000542: MLOAD 00000543: SWAP2 00000544: DUP3 00000545: MSTORE 00000546: MLOAD 00000547: SWAP1 00000548: DUP2 00000549: SWAP1 0000054a: SUB 0000054b: PUSH1 0x20 0000054d: ADD 0000054e: SWAP1 0000054f: RETURN 00000550: JUMPDEST 00000551: CALLVALUE 00000552: DUP1 00000553: ISZERO 00000554: PUSH2 0x055c 00000557: JUMPI 00000558: PUSH1 0x00 0000055a: DUP1 0000055b: REVERT 0000055c: JUMPDEST 0000055d: POP 0000055e: PUSH2 0x04d5 00000561: PUSH2 0x1188 00000564: JUMP 00000565: JUMPDEST 00000566: CALLVALUE 00000567: DUP1 00000568: ISZERO 00000569: PUSH2 0x0571 0000056c: JUMPI 0000056d: PUSH1 0x00 0000056f: DUP1 00000570: REVERT 00000571: JUMPDEST 00000572: POP 00000573: PUSH2 0x04d5 00000576: PUSH2 0x11aa 00000579: JUMP 0000057a: JUMPDEST 0000057b: CALLVALUE 0000057c: DUP1 0000057d: ISZERO 0000057e: PUSH2 0x0586 00000581: JUMPI 00000582: PUSH1 0x00 00000584: DUP1 00000585: REVERT 00000586: JUMPDEST 00000587: POP 00000588: PUSH2 0x053e 0000058b: PUSH2 0x11ba 0000058e: JUMP 0000058f: JUMPDEST 00000590: CALLVALUE 00000591: DUP1 00000592: ISZERO 00000593: PUSH2 0x059b 00000596: JUMPI 00000597: PUSH1 0x00 00000599: DUP1 0000059a: REVERT 0000059b: JUMPDEST 0000059c: POP 0000059d: PUSH2 0x053e 000005a0: PUSH2 0x11c0 000005a3: JUMP 000005a4: JUMPDEST 000005a5: CALLVALUE 000005a6: DUP1 000005a7: ISZERO 000005a8: PUSH2 0x05b0 000005ab: JUMPI 000005ac: PUSH1 0x00 000005ae: DUP1 000005af: REVERT 000005b0: JUMPDEST 000005b1: POP 000005b2: PUSH2 0x053e 000005b5: PUSH2 0x11cc 000005b8: JUMP 000005b9: JUMPDEST 000005ba: CALLVALUE 000005bb: DUP1 000005bc: ISZERO 000005bd: PUSH2 0x05c5 000005c0: JUMPI 000005c1: PUSH1 0x00 000005c3: DUP1 000005c4: REVERT 000005c5: JUMPDEST 000005c6: POP 000005c7: PUSH2 0x053e 000005ca: PUSH2 0x11d2 000005cd: JUMP 000005ce: JUMPDEST 000005cf: CALLVALUE 000005d0: DUP1 000005d1: ISZERO 000005d2: PUSH2 0x05da 000005d5: JUMPI 000005d6: PUSH1 0x00 000005d8: DUP1 000005d9: REVERT 000005da: JUMPDEST 000005db: POP 000005dc: PUSH2 0x053e 000005df: PUSH2 0x11d7 000005e2: JUMP 000005e3: JUMPDEST 000005e4: CALLVALUE 000005e5: DUP1 000005e6: ISZERO 000005e7: PUSH2 0x05ef 000005ea: JUMPI 000005eb: PUSH1 0x00 000005ed: DUP1 000005ee: REVERT 000005ef: JUMPDEST 000005f0: POP 000005f1: PUSH2 0x053e 000005f4: PUSH2 0x11dd 000005f7: JUMP 000005f8: JUMPDEST 000005f9: CALLVALUE 000005fa: DUP1 000005fb: ISZERO 000005fc: PUSH2 0x0604 000005ff: JUMPI 00000600: PUSH1 0x00 00000602: DUP1 00000603: REVERT 00000604: JUMPDEST 00000605: POP 00000606: PUSH2 0x0638 00000609: PUSH1 0x04 0000060b: DUP1 0000060c: CALLDATASIZE 0000060d: SUB 0000060e: PUSH1 0x20 00000610: DUP2 00000611: LT 00000612: ISZERO 00000613: PUSH2 0x061b 00000616: JUMPI 00000617: PUSH1 0x00 00000619: DUP1 0000061a: REVERT 0000061b: JUMPDEST 0000061c: POP 0000061d: CALLDATALOAD 0000061e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000633: AND 00000634: PUSH2 0x11e3 00000637: JUMP 00000638: JUMPDEST 00000639: PUSH1 0x40 0000063b: DUP1 0000063c: MLOAD 0000063d: SWAP2 0000063e: ISZERO 0000063f: ISZERO 00000640: DUP3 00000641: MSTORE 00000642: MLOAD 00000643: SWAP1 00000644: DUP2 00000645: SWAP1 00000646: SUB 00000647: PUSH1 0x20 00000649: ADD 0000064a: SWAP1 0000064b: RETURN 0000064c: JUMPDEST 0000064d: CALLVALUE 0000064e: DUP1 0000064f: ISZERO 00000650: PUSH2 0x0658 00000653: JUMPI 00000654: PUSH1 0x00 00000656: DUP1 00000657: REVERT 00000658: JUMPDEST 00000659: POP 0000065a: PUSH2 0x053e 0000065d: PUSH2 0x11f8 00000660: JUMP 00000661: JUMPDEST 00000662: CALLVALUE 00000663: DUP1 00000664: ISZERO 00000665: PUSH2 0x066d 00000668: JUMPI 00000669: PUSH1 0x00 0000066b: DUP1 0000066c: REVERT 0000066d: JUMPDEST 0000066e: POP 0000066f: PUSH2 0x04d5 00000672: PUSH2 0x11fe 00000675: JUMP 00000676: JUMPDEST 00000677: CALLVALUE 00000678: DUP1 00000679: ISZERO 0000067a: PUSH2 0x0682 0000067d: JUMPI 0000067e: PUSH1 0x00 00000680: DUP1 00000681: REVERT 00000682: JUMPDEST 00000683: POP 00000684: PUSH2 0x04be 00000687: PUSH1 0x04 00000689: DUP1 0000068a: CALLDATASIZE 0000068b: SUB 0000068c: PUSH1 0x40 0000068e: DUP2 0000068f: LT 00000690: ISZERO 00000691: PUSH2 0x0699 00000694: JUMPI 00000695: PUSH1 0x00 00000697: DUP1 00000698: REVERT 00000699: JUMPDEST 0000069a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000006af: DUP3 000006b0: CALLDATALOAD 000006b1: AND 000006b2: SWAP2 000006b3: SWAP1 000006b4: DUP2 000006b5: ADD 000006b6: SWAP1 000006b7: PUSH1 0x40 000006b9: DUP2 000006ba: ADD 000006bb: PUSH1 0x20 000006bd: DUP3 000006be: ADD 000006bf: CALLDATALOAD 000006c0: PUSH5 0x0100000000 000006c6: DUP2 000006c7: GT 000006c8: ISZERO 000006c9: PUSH2 0x06d1 000006cc: JUMPI 000006cd: PUSH1 0x00 000006cf: DUP1 000006d0: REVERT 000006d1: JUMPDEST 000006d2: DUP3 000006d3: ADD 000006d4: DUP4 000006d5: PUSH1 0x20 000006d7: DUP3 000006d8: ADD 000006d9: GT 000006da: ISZERO 000006db: PUSH2 0x06e3 000006de: JUMPI 000006df: PUSH1 0x00 000006e1: DUP1 000006e2: REVERT 000006e3: JUMPDEST 000006e4: DUP1 000006e5: CALLDATALOAD 000006e6: SWAP1 000006e7: PUSH1 0x20 000006e9: ADD 000006ea: SWAP2 000006eb: DUP5 000006ec: PUSH1 0x01 000006ee: DUP4 000006ef: MUL 000006f0: DUP5 000006f1: ADD 000006f2: GT 000006f3: PUSH5 0x0100000000 000006f9: DUP4 000006fa: GT 000006fb: OR 000006fc: ISZERO 000006fd: PUSH2 0x0705 00000700: JUMPI 00000701: PUSH1 0x00 00000703: DUP1 00000704: REVERT 00000705: JUMPDEST 00000706: POP 00000707: SWAP1 00000708: SWAP3 00000709: POP 0000070a: SWAP1 0000070b: POP 0000070c: PUSH2 0x121a 0000070f: JUMP 00000710: JUMPDEST 00000711: CALLVALUE 00000712: DUP1 00000713: ISZERO 00000714: PUSH2 0x071c 00000717: JUMPI 00000718: PUSH1 0x00 0000071a: DUP1 0000071b: REVERT 0000071c: JUMPDEST 0000071d: POP 0000071e: PUSH2 0x0638 00000721: PUSH2 0x12a7 00000724: JUMP 00000725: JUMPDEST 00000726: CALLVALUE 00000727: DUP1 00000728: ISZERO 00000729: PUSH2 0x0731 0000072c: JUMPI 0000072d: PUSH1 0x00 0000072f: DUP1 00000730: REVERT 00000731: JUMPDEST 00000732: POP 00000733: PUSH2 0x04d5 00000736: PUSH2 0x12ca 00000739: JUMP 0000073a: JUMPDEST 0000073b: CALLVALUE 0000073c: DUP1 0000073d: ISZERO 0000073e: PUSH2 0x0746 00000741: JUMPI 00000742: PUSH1 0x00 00000744: DUP1 00000745: REVERT 00000746: JUMPDEST 00000747: POP 00000748: PUSH2 0x04d5 0000074b: PUSH1 0x04 0000074d: DUP1 0000074e: CALLDATASIZE 0000074f: SUB 00000750: PUSH1 0x40 00000752: DUP2 00000753: LT 00000754: ISZERO 00000755: PUSH2 0x075d 00000758: JUMPI 00000759: PUSH1 0x00 0000075b: DUP1 0000075c: REVERT 0000075d: JUMPDEST 0000075e: POP 0000075f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000774: DUP2 00000775: CALLDATALOAD 00000776: AND 00000777: SWAP1 00000778: PUSH1 0x20 0000077a: ADD 0000077b: CALLDATALOAD 0000077c: PUSH2 0x12d4 0000077f: JUMP 00000780: JUMPDEST 00000781: CALLVALUE 00000782: DUP1 00000783: ISZERO 00000784: PUSH2 0x078c 00000787: JUMPI 00000788: PUSH1 0x00 0000078a: DUP1 0000078b: REVERT 0000078c: JUMPDEST 0000078d: POP 0000078e: PUSH2 0x053e 00000791: PUSH2 0x1316 00000794: JUMP 00000795: JUMPDEST 00000796: CALLVALUE 00000797: DUP1 00000798: ISZERO 00000799: PUSH2 0x07a1 0000079c: JUMPI 0000079d: PUSH1 0x00 0000079f: DUP1 000007a0: REVERT 000007a1: JUMPDEST 000007a2: POP 000007a3: PUSH2 0x04d5 000007a6: PUSH2 0x131c 000007a9: JUMP 000007aa: JUMPDEST 000007ab: CALLVALUE 000007ac: DUP1 000007ad: ISZERO 000007ae: PUSH2 0x07b6 000007b1: JUMPI 000007b2: PUSH1 0x00 000007b4: DUP1 000007b5: REVERT 000007b6: JUMPDEST 000007b7: POP 000007b8: PUSH2 0x053e 000007bb: PUSH2 0x1338 000007be: JUMP 000007bf: JUMPDEST 000007c0: CALLVALUE 000007c1: DUP1 000007c2: ISZERO 000007c3: PUSH2 0x07cb 000007c6: JUMPI 000007c7: PUSH1 0x00 000007c9: DUP1 000007ca: REVERT 000007cb: JUMPDEST 000007cc: POP 000007cd: PUSH2 0x053e 000007d0: PUSH2 0x133e 000007d3: JUMP 000007d4: JUMPDEST 000007d5: CALLVALUE 000007d6: DUP1 000007d7: ISZERO 000007d8: PUSH2 0x07e0 000007db: JUMPI 000007dc: PUSH1 0x00 000007de: DUP1 000007df: REVERT 000007e0: JUMPDEST 000007e1: POP 000007e2: PUSH2 0x053e 000007e5: PUSH1 0x04 000007e7: DUP1 000007e8: CALLDATASIZE 000007e9: SUB 000007ea: PUSH1 0x20 000007ec: DUP2 000007ed: LT 000007ee: ISZERO 000007ef: PUSH2 0x07f7 000007f2: JUMPI 000007f3: PUSH1 0x00 000007f5: DUP1 000007f6: REVERT 000007f7: JUMPDEST 000007f8: POP 000007f9: CALLDATALOAD 000007fa: PUSH2 0x1345 000007fd: JUMP 000007fe: JUMPDEST 000007ff: CALLVALUE 00000800: DUP1 00000801: ISZERO 00000802: PUSH2 0x080a 00000805: JUMPI 00000806: PUSH1 0x00 00000808: DUP1 00000809: REVERT 0000080a: JUMPDEST 0000080b: POP 0000080c: PUSH2 0x0638 0000080f: PUSH1 0x04 00000811: DUP1 00000812: CALLDATASIZE 00000813: SUB 00000814: PUSH1 0x40 00000816: DUP2 00000817: LT 00000818: ISZERO 00000819: PUSH2 0x0821 0000081c: JUMPI 0000081d: PUSH1 0x00 0000081f: DUP1 00000820: REVERT 00000821: JUMPDEST 00000822: POP 00000823: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000838: DUP2 00000839: CALLDATALOAD 0000083a: AND 0000083b: SWAP1 0000083c: PUSH1 0x20 0000083e: ADD 0000083f: CALLDATALOAD 00000840: PUSH2 0x1359 00000843: JUMP 00000844: JUMPDEST 00000845: CALLVALUE 00000846: DUP1 00000847: ISZERO 00000848: PUSH2 0x0850 0000084b: JUMPI 0000084c: PUSH1 0x00 0000084e: DUP1 0000084f: REVERT 00000850: JUMPDEST 00000851: POP 00000852: PUSH2 0x053e 00000855: PUSH1 0x04 00000857: DUP1 00000858: CALLDATASIZE 00000859: SUB 0000085a: PUSH1 0x20 0000085c: DUP2 0000085d: LT 0000085e: ISZERO 0000085f: PUSH2 0x0867 00000862: JUMPI 00000863: PUSH1 0x00 00000865: DUP1 00000866: REVERT 00000867: JUMPDEST 00000868: POP 00000869: CALLDATALOAD 0000086a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000087f: AND 00000880: PUSH2 0x14a0 00000883: JUMP 00000884: JUMPDEST 00000885: CALLVALUE 00000886: DUP1 00000887: ISZERO 00000888: PUSH2 0x0890 0000088b: JUMPI 0000088c: PUSH1 0x00 0000088e: DUP1 0000088f: REVERT 00000890: JUMPDEST 00000891: POP 00000892: PUSH2 0x0899 00000895: PUSH2 0x1584 00000898: JUMP 00000899: JUMPDEST 0000089a: PUSH1 0x40 0000089c: DUP1 0000089d: MLOAD 0000089e: PUSH1 0x20 000008a0: DUP1 000008a1: DUP3 000008a2: MSTORE 000008a3: DUP4 000008a4: MLOAD 000008a5: DUP2 000008a6: DUP4 000008a7: ADD 000008a8: MSTORE 000008a9: DUP4 000008aa: MLOAD 000008ab: SWAP2 000008ac: SWAP3 000008ad: DUP4 000008ae: SWAP3 000008af: SWAP1 000008b0: DUP4 000008b1: ADD 000008b2: SWAP2 000008b3: DUP6 000008b4: ADD 000008b5: SWAP1 000008b6: DUP1 000008b7: DUP4 000008b8: DUP4 000008b9: PUSH1 0x00 000008bb: JUMPDEST 000008bc: DUP4 000008bd: DUP2 000008be: LT 000008bf: ISZERO 000008c0: PUSH2 0x08d3 000008c3: JUMPI 000008c4: DUP2 000008c5: DUP2 000008c6: ADD 000008c7: MLOAD 000008c8: DUP4 000008c9: DUP3 000008ca: ADD 000008cb: MSTORE 000008cc: PUSH1 0x20 000008ce: ADD 000008cf: PUSH2 0x08bb 000008d2: JUMP 000008d3: JUMPDEST 000008d4: POP 000008d5: POP 000008d6: POP 000008d7: POP 000008d8: SWAP1 000008d9: POP 000008da: SWAP1 000008db: DUP2 000008dc: ADD 000008dd: SWAP1 000008de: PUSH1 0x1f 000008e0: AND 000008e1: DUP1 000008e2: ISZERO 000008e3: PUSH2 0x0900 000008e6: JUMPI 000008e7: DUP1 000008e8: DUP3 000008e9: SUB 000008ea: DUP1 000008eb: MLOAD 000008ec: PUSH1 0x01 000008ee: DUP4 000008ef: PUSH1 0x20 000008f1: SUB 000008f2: PUSH2 0x0100 000008f5: EXP 000008f6: SUB 000008f7: NOT 000008f8: AND 000008f9: DUP2 000008fa: MSTORE 000008fb: PUSH1 0x20 000008fd: ADD 000008fe: SWAP2 000008ff: POP 00000900: JUMPDEST 00000901: POP 00000902: SWAP3 00000903: POP 00000904: POP 00000905: POP 00000906: PUSH1 0x40 00000908: MLOAD 00000909: DUP1 0000090a: SWAP2 0000090b: SUB 0000090c: SWAP1 0000090d: RETURN 0000090e: JUMPDEST 0000090f: CALLVALUE 00000910: DUP1 00000911: ISZERO 00000912: PUSH2 0x091a 00000915: JUMPI 00000916: PUSH1 0x00 00000918: DUP1 00000919: REVERT 0000091a: JUMPDEST 0000091b: POP 0000091c: PUSH2 0x053e 0000091f: PUSH2 0x1638 00000922: JUMP 00000923: JUMPDEST 00000924: CALLVALUE 00000925: DUP1 00000926: ISZERO 00000927: PUSH2 0x092f 0000092a: JUMPI 0000092b: PUSH1 0x00 0000092d: DUP1 0000092e: REVERT 0000092f: JUMPDEST 00000930: POP 00000931: PUSH2 0x0638 00000934: PUSH2 0x163e 00000937: JUMP 00000938: JUMPDEST 00000939: CALLVALUE 0000093a: DUP1 0000093b: ISZERO 0000093c: PUSH2 0x0944 0000093f: JUMPI 00000940: PUSH1 0x00 00000942: DUP1 00000943: REVERT 00000944: JUMPDEST 00000945: POP 00000946: PUSH2 0x053e 00000949: PUSH2 0x164c 0000094c: JUMP 0000094d: JUMPDEST 0000094e: CALLVALUE 0000094f: DUP1 00000950: ISZERO 00000951: PUSH2 0x0959 00000954: JUMPI 00000955: PUSH1 0x00 00000957: DUP1 00000958: REVERT 00000959: JUMPDEST 0000095a: POP 0000095b: PUSH2 0x053e 0000095e: PUSH2 0x1652 00000961: JUMP 00000962: JUMPDEST 00000963: CALLVALUE 00000964: DUP1 00000965: ISZERO 00000966: PUSH2 0x096e 00000969: JUMPI 0000096a: PUSH1 0x00 0000096c: DUP1 0000096d: REVERT 0000096e: JUMPDEST 0000096f: POP 00000970: PUSH2 0x04be 00000973: PUSH2 0x165e 00000976: JUMP 00000977: JUMPDEST 00000978: CALLVALUE 00000979: DUP1 0000097a: ISZERO 0000097b: PUSH2 0x0983 0000097e: JUMPI 0000097f: PUSH1 0x00 00000981: DUP1 00000982: REVERT 00000983: JUMPDEST 00000984: POP 00000985: PUSH2 0x053e 00000988: PUSH2 0x1740 0000098b: JUMP 0000098c: JUMPDEST 0000098d: CALLVALUE 0000098e: DUP1 0000098f: ISZERO 00000990: PUSH2 0x0998 00000993: JUMPI 00000994: PUSH1 0x00 00000996: DUP1 00000997: REVERT 00000998: JUMPDEST 00000999: POP 0000099a: PUSH2 0x053e 0000099d: PUSH2 0x174c 000009a0: JUMP 000009a1: JUMPDEST 000009a2: CALLVALUE 000009a3: DUP1 000009a4: ISZERO 000009a5: PUSH2 0x09ad 000009a8: JUMPI 000009a9: PUSH1 0x00 000009ab: DUP1 000009ac: REVERT 000009ad: JUMPDEST 000009ae: POP 000009af: PUSH2 0x053e 000009b2: PUSH2 0x1752 000009b5: JUMP 000009b6: JUMPDEST 000009b7: CALLVALUE 000009b8: DUP1 000009b9: ISZERO 000009ba: PUSH2 0x09c2 000009bd: JUMPI 000009be: PUSH1 0x00 000009c0: DUP1 000009c1: REVERT 000009c2: JUMPDEST 000009c3: POP 000009c4: PUSH2 0x053e 000009c7: PUSH1 0x04 000009c9: DUP1 000009ca: CALLDATASIZE 000009cb: SUB 000009cc: PUSH1 0x20 000009ce: DUP2 000009cf: LT 000009d0: ISZERO 000009d1: PUSH2 0x09d9 000009d4: JUMPI 000009d5: PUSH1 0x00 000009d7: DUP1 000009d8: REVERT 000009d9: JUMPDEST 000009da: POP 000009db: CALLDATALOAD 000009dc: PUSH2 0x1757 000009df: JUMP 000009e0: JUMPDEST 000009e1: CALLVALUE 000009e2: DUP1 000009e3: ISZERO 000009e4: PUSH2 0x09ec 000009e7: JUMPI 000009e8: PUSH1 0x00 000009ea: DUP1 000009eb: REVERT 000009ec: JUMPDEST 000009ed: POP 000009ee: PUSH2 0x053e 000009f1: PUSH1 0x04 000009f3: DUP1 000009f4: CALLDATASIZE 000009f5: SUB 000009f6: PUSH1 0x20 000009f8: DUP2 000009f9: LT 000009fa: ISZERO 000009fb: PUSH2 0x0a03 000009fe: JUMPI 000009ff: PUSH1 0x00 00000a01: DUP1 00000a02: REVERT 00000a03: JUMPDEST 00000a04: POP 00000a05: CALLDATALOAD 00000a06: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a1b: AND 00000a1c: PUSH2 0x180d 00000a1f: JUMP 00000a20: JUMPDEST 00000a21: CALLVALUE 00000a22: DUP1 00000a23: ISZERO 00000a24: PUSH2 0x0a2c 00000a27: JUMPI 00000a28: PUSH1 0x00 00000a2a: DUP1 00000a2b: REVERT 00000a2c: JUMPDEST 00000a2d: POP 00000a2e: PUSH2 0x053e 00000a31: PUSH2 0x18f1 00000a34: JUMP 00000a35: JUMPDEST 00000a36: CALLVALUE 00000a37: DUP1 00000a38: ISZERO 00000a39: PUSH2 0x0a41 00000a3c: JUMPI 00000a3d: PUSH1 0x00 00000a3f: DUP1 00000a40: REVERT 00000a41: JUMPDEST 00000a42: POP 00000a43: PUSH2 0x0638 00000a46: PUSH1 0x04 00000a48: DUP1 00000a49: CALLDATASIZE 00000a4a: SUB 00000a4b: PUSH1 0x20 00000a4d: DUP2 00000a4e: LT 00000a4f: ISZERO 00000a50: PUSH2 0x0a58 00000a53: JUMPI 00000a54: PUSH1 0x00 00000a56: DUP1 00000a57: REVERT 00000a58: JUMPDEST 00000a59: POP 00000a5a: CALLDATALOAD 00000a5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000a70: AND 00000a71: PUSH2 0x18f7 00000a74: JUMP 00000a75: JUMPDEST 00000a76: CALLVALUE 00000a77: DUP1 00000a78: ISZERO 00000a79: PUSH2 0x0a81 00000a7c: JUMPI 00000a7d: PUSH1 0x00 00000a7f: DUP1 00000a80: REVERT 00000a81: JUMPDEST 00000a82: POP 00000a83: PUSH2 0x04d5 00000a86: PUSH2 0x190c 00000a89: JUMP 00000a8a: JUMPDEST 00000a8b: CALLVALUE 00000a8c: DUP1 00000a8d: ISZERO 00000a8e: PUSH2 0x0a96 00000a91: JUMPI 00000a92: PUSH1 0x00 00000a94: DUP1 00000a95: REVERT 00000a96: JUMPDEST 00000a97: POP 00000a98: PUSH2 0x04d5 00000a9b: PUSH2 0x1928 00000a9e: JUMP 00000a9f: JUMPDEST 00000aa0: CALLVALUE 00000aa1: DUP1 00000aa2: ISZERO 00000aa3: PUSH2 0x0aab 00000aa6: JUMPI 00000aa7: PUSH1 0x00 00000aa9: DUP1 00000aaa: REVERT 00000aab: JUMPDEST 00000aac: POP 00000aad: PUSH2 0x0638 00000ab0: PUSH2 0x1944 00000ab3: JUMP 00000ab4: JUMPDEST 00000ab5: CALLVALUE 00000ab6: DUP1 00000ab7: ISZERO 00000ab8: PUSH2 0x0ac0 00000abb: JUMPI 00000abc: PUSH1 0x00 00000abe: DUP1 00000abf: REVERT 00000ac0: JUMPDEST 00000ac1: POP 00000ac2: PUSH2 0x0afa 00000ac5: PUSH1 0x04 00000ac7: DUP1 00000ac8: CALLDATASIZE 00000ac9: SUB 00000aca: PUSH1 0x40 00000acc: DUP2 00000acd: LT 00000ace: ISZERO 00000acf: PUSH2 0x0ad7 00000ad2: JUMPI 00000ad3: PUSH1 0x00 00000ad5: DUP1 00000ad6: REVERT 00000ad7: JUMPDEST 00000ad8: POP 00000ad9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000aee: DUP2 00000aef: CALLDATALOAD 00000af0: AND 00000af1: SWAP1 00000af2: PUSH1 0x20 00000af4: ADD 00000af5: CALLDATALOAD 00000af6: PUSH2 0x1982 00000af9: JUMP 00000afa: JUMPDEST 00000afb: PUSH1 0x40 00000afd: DUP1 00000afe: MLOAD 00000aff: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b14: SWAP1 00000b15: SWAP11 00000b16: AND 00000b17: DUP11 00000b18: MSTORE 00000b19: PUSH1 0x20 00000b1b: DUP11 00000b1c: ADD 00000b1d: SWAP9 00000b1e: SWAP1 00000b1f: SWAP9 00000b20: MSTORE 00000b21: DUP9 00000b22: DUP9 00000b23: ADD 00000b24: SWAP7 00000b25: SWAP1 00000b26: SWAP7 00000b27: MSTORE 00000b28: PUSH1 0x60 00000b2a: DUP9 00000b2b: ADD 00000b2c: SWAP5 00000b2d: SWAP1 00000b2e: SWAP5 00000b2f: MSTORE 00000b30: PUSH1 0x80 00000b32: DUP8 00000b33: ADD 00000b34: SWAP3 00000b35: SWAP1 00000b36: SWAP3 00000b37: MSTORE 00000b38: PUSH1 0xa0 00000b3a: DUP7 00000b3b: ADD 00000b3c: MSTORE 00000b3d: PUSH1 0xc0 00000b3f: DUP6 00000b40: ADD 00000b41: MSTORE 00000b42: PUSH1 0xe0 00000b44: DUP5 00000b45: ADD 00000b46: MSTORE 00000b47: ISZERO 00000b48: ISZERO 00000b49: PUSH2 0x0100 00000b4c: DUP4 00000b4d: ADD 00000b4e: MSTORE 00000b4f: MLOAD 00000b50: SWAP1 00000b51: DUP2 00000b52: SWAP1 00000b53: SUB 00000b54: PUSH2 0x0120 00000b57: ADD 00000b58: SWAP1 00000b59: RETURN 00000b5a: JUMPDEST 00000b5b: CALLVALUE 00000b5c: DUP1 00000b5d: ISZERO 00000b5e: PUSH2 0x0b66 00000b61: JUMPI 00000b62: PUSH1 0x00 00000b64: DUP1 00000b65: REVERT 00000b66: JUMPDEST 00000b67: POP 00000b68: PUSH2 0x053e 00000b6b: PUSH2 0x1a01 00000b6e: JUMP 00000b6f: JUMPDEST 00000b70: CALLVALUE 00000b71: DUP1 00000b72: ISZERO 00000b73: PUSH2 0x0b7b 00000b76: JUMPI 00000b77: PUSH1 0x00 00000b79: DUP1 00000b7a: REVERT 00000b7b: JUMPDEST 00000b7c: POP 00000b7d: PUSH2 0x04d5 00000b80: PUSH2 0x1a0d 00000b83: JUMP 00000b84: JUMPDEST 00000b85: CALLVALUE 00000b86: DUP1 00000b87: ISZERO 00000b88: PUSH2 0x0b90 00000b8b: JUMPI 00000b8c: PUSH1 0x00 00000b8e: DUP1 00000b8f: REVERT 00000b90: JUMPDEST 00000b91: POP 00000b92: PUSH2 0x04be 00000b95: PUSH1 0x04 00000b97: DUP1 00000b98: CALLDATASIZE 00000b99: SUB 00000b9a: PUSH1 0x20 00000b9c: DUP2 00000b9d: LT 00000b9e: ISZERO 00000b9f: PUSH2 0x0ba7 00000ba2: JUMPI 00000ba3: PUSH1 0x00 00000ba5: DUP1 00000ba6: REVERT 00000ba7: JUMPDEST 00000ba8: POP 00000ba9: CALLDATALOAD 00000baa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bbf: AND 00000bc0: PUSH2 0x1a29 00000bc3: JUMP 00000bc4: JUMPDEST 00000bc5: CALLVALUE 00000bc6: DUP1 00000bc7: ISZERO 00000bc8: PUSH2 0x0bd0 00000bcb: JUMPI 00000bcc: PUSH1 0x00 00000bce: DUP1 00000bcf: REVERT 00000bd0: JUMPDEST 00000bd1: POP 00000bd2: PUSH2 0x053e 00000bd5: PUSH2 0x1b41 00000bd8: JUMP 00000bd9: JUMPDEST 00000bda: CALLVALUE 00000bdb: DUP1 00000bdc: ISZERO 00000bdd: PUSH2 0x0be5 00000be0: JUMPI 00000be1: PUSH1 0x00 00000be3: DUP1 00000be4: REVERT 00000be5: JUMPDEST 00000be6: POP 00000be7: PUSH2 0x053e 00000bea: PUSH1 0x04 00000bec: DUP1 00000bed: CALLDATASIZE 00000bee: SUB 00000bef: PUSH1 0x20 00000bf1: DUP2 00000bf2: LT 00000bf3: ISZERO 00000bf4: PUSH2 0x0bfc 00000bf7: JUMPI 00000bf8: PUSH1 0x00 00000bfa: DUP1 00000bfb: REVERT 00000bfc: JUMPDEST 00000bfd: POP 00000bfe: CALLDATALOAD 00000bff: PUSH2 0x1b4d 00000c02: JUMP 00000c03: JUMPDEST 00000c04: CALLVALUE 00000c05: DUP1 00000c06: ISZERO 00000c07: PUSH2 0x0c0f 00000c0a: JUMPI 00000c0b: PUSH1 0x00 00000c0d: DUP1 00000c0e: REVERT 00000c0f: JUMPDEST 00000c10: POP 00000c11: PUSH2 0x0638 00000c14: PUSH1 0x04 00000c16: DUP1 00000c17: CALLDATASIZE 00000c18: SUB 00000c19: PUSH1 0x40 00000c1b: DUP2 00000c1c: LT 00000c1d: ISZERO 00000c1e: PUSH2 0x0c26 00000c21: JUMPI 00000c22: PUSH1 0x00 00000c24: DUP1 00000c25: REVERT 00000c26: JUMPDEST 00000c27: POP 00000c28: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c3d: DUP2 00000c3e: CALLDATALOAD 00000c3f: AND 00000c40: SWAP1 00000c41: PUSH1 0x20 00000c43: ADD 00000c44: CALLDATALOAD 00000c45: PUSH2 0x1c03 00000c48: JUMP 00000c49: JUMPDEST 00000c4a: CALLVALUE 00000c4b: DUP1 00000c4c: ISZERO 00000c4d: PUSH2 0x0c55 00000c50: JUMPI 00000c51: PUSH1 0x00 00000c53: DUP1 00000c54: REVERT 00000c55: JUMPDEST 00000c56: POP 00000c57: PUSH2 0x053e 00000c5a: PUSH2 0x1c23 00000c5d: JUMP 00000c5e: JUMPDEST 00000c5f: CALLVALUE 00000c60: DUP1 00000c61: ISZERO 00000c62: PUSH2 0x0c6a 00000c65: JUMPI 00000c66: PUSH1 0x00 00000c68: DUP1 00000c69: REVERT 00000c6a: JUMPDEST 00000c6b: POP 00000c6c: PUSH2 0x053e 00000c6f: PUSH2 0x1c29 00000c72: JUMP 00000c73: JUMPDEST 00000c74: CALLVALUE 00000c75: DUP1 00000c76: ISZERO 00000c77: PUSH2 0x0c7f 00000c7a: JUMPI 00000c7b: PUSH1 0x00 00000c7d: DUP1 00000c7e: REVERT 00000c7f: JUMPDEST 00000c80: POP 00000c81: PUSH2 0x04d5 00000c84: PUSH2 0x1c2e 00000c87: JUMP 00000c88: JUMPDEST 00000c89: CALLVALUE 00000c8a: DUP1 00000c8b: ISZERO 00000c8c: PUSH2 0x0c94 00000c8f: JUMPI 00000c90: PUSH1 0x00 00000c92: DUP1 00000c93: REVERT 00000c94: JUMPDEST 00000c95: POP 00000c96: PUSH2 0x0638 00000c99: PUSH2 0x1c4a 00000c9c: JUMP 00000c9d: JUMPDEST 00000c9e: CALLVALUE 00000c9f: DUP1 00000ca0: ISZERO 00000ca1: PUSH2 0x0ca9 00000ca4: JUMPI 00000ca5: PUSH1 0x00 00000ca7: DUP1 00000ca8: REVERT 00000ca9: JUMPDEST 00000caa: POP 00000cab: PUSH2 0x053e 00000cae: PUSH2 0x1c6c 00000cb1: JUMP 00000cb2: JUMPDEST 00000cb3: CALLVALUE 00000cb4: DUP1 00000cb5: ISZERO 00000cb6: PUSH2 0x0cbe 00000cb9: JUMPI 00000cba: PUSH1 0x00 00000cbc: DUP1 00000cbd: REVERT 00000cbe: JUMPDEST 00000cbf: POP 00000cc0: PUSH2 0x053e 00000cc3: PUSH1 0x04 00000cc5: DUP1 00000cc6: CALLDATASIZE 00000cc7: SUB 00000cc8: PUSH1 0x40 00000cca: DUP2 00000ccb: LT 00000ccc: ISZERO 00000ccd: PUSH2 0x0cd5 00000cd0: JUMPI 00000cd1: PUSH1 0x00 00000cd3: DUP1 00000cd4: REVERT 00000cd5: JUMPDEST 00000cd6: POP 00000cd7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000cec: DUP2 00000ced: CALLDATALOAD 00000cee: AND 00000cef: SWAP1 00000cf0: PUSH1 0x20 00000cf2: ADD 00000cf3: CALLDATALOAD 00000cf4: PUSH2 0x1c72 00000cf7: JUMP 00000cf8: JUMPDEST 00000cf9: CALLVALUE 00000cfa: DUP1 00000cfb: ISZERO 00000cfc: PUSH2 0x0d04 00000cff: JUMPI 00000d00: PUSH1 0x00 00000d02: DUP1 00000d03: REVERT 00000d04: JUMPDEST 00000d05: POP 00000d06: PUSH2 0x04d5 00000d09: PUSH2 0x1d75 00000d0c: JUMP 00000d0d: JUMPDEST 00000d0e: CALLVALUE 00000d0f: DUP1 00000d10: ISZERO 00000d11: PUSH2 0x0d19 00000d14: JUMPI 00000d15: PUSH1 0x00 00000d17: DUP1 00000d18: REVERT 00000d19: JUMPDEST 00000d1a: POP 00000d1b: PUSH2 0x0638 00000d1e: PUSH1 0x04 00000d20: DUP1 00000d21: CALLDATASIZE 00000d22: SUB 00000d23: PUSH1 0x40 00000d25: DUP2 00000d26: LT 00000d27: ISZERO 00000d28: PUSH2 0x0d30 00000d2b: JUMPI 00000d2c: PUSH1 0x00 00000d2e: DUP1 00000d2f: REVERT 00000d30: JUMPDEST 00000d31: POP 00000d32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d47: DUP2 00000d48: CALLDATALOAD 00000d49: AND 00000d4a: SWAP1 00000d4b: PUSH1 0x20 00000d4d: ADD 00000d4e: CALLDATALOAD 00000d4f: PUSH2 0x1d91 00000d52: JUMP 00000d53: JUMPDEST 00000d54: CALLVALUE 00000d55: DUP1 00000d56: ISZERO 00000d57: PUSH2 0x0d5f 00000d5a: JUMPI 00000d5b: PUSH1 0x00 00000d5d: DUP1 00000d5e: REVERT 00000d5f: JUMPDEST 00000d60: POP 00000d61: PUSH2 0x053e 00000d64: PUSH2 0x1e9a 00000d67: JUMP 00000d68: JUMPDEST 00000d69: CALLVALUE 00000d6a: DUP1 00000d6b: ISZERO 00000d6c: PUSH2 0x0d74 00000d6f: JUMPI 00000d70: PUSH1 0x00 00000d72: DUP1 00000d73: REVERT 00000d74: JUMPDEST 00000d75: POP 00000d76: PUSH2 0x04d5 00000d79: PUSH2 0x1ea0 00000d7c: JUMP 00000d7d: JUMPDEST 00000d7e: CALLVALUE 00000d7f: DUP1 00000d80: ISZERO 00000d81: PUSH2 0x0d89 00000d84: JUMPI 00000d85: PUSH1 0x00 00000d87: DUP1 00000d88: REVERT 00000d89: JUMPDEST 00000d8a: POP 00000d8b: PUSH2 0x053e 00000d8e: PUSH2 0x1ebc 00000d91: JUMP 00000d92: JUMPDEST 00000d93: CALLVALUE 00000d94: DUP1 00000d95: ISZERO 00000d96: PUSH2 0x0d9e 00000d99: JUMPI 00000d9a: PUSH1 0x00 00000d9c: DUP1 00000d9d: REVERT 00000d9e: JUMPDEST 00000d9f: POP 00000da0: PUSH2 0x053e 00000da3: PUSH2 0x1ec2 00000da6: JUMP 00000da7: JUMPDEST 00000da8: CALLVALUE 00000da9: DUP1 00000daa: ISZERO 00000dab: PUSH2 0x0db3 00000dae: JUMPI 00000daf: PUSH1 0x00 00000db1: DUP1 00000db2: REVERT 00000db3: JUMPDEST 00000db4: POP 00000db5: PUSH2 0x04d5 00000db8: PUSH2 0x1ec8 00000dbb: JUMP 00000dbc: JUMPDEST 00000dbd: CALLVALUE 00000dbe: DUP1 00000dbf: ISZERO 00000dc0: PUSH2 0x0dc8 00000dc3: JUMPI 00000dc4: PUSH1 0x00 00000dc6: DUP1 00000dc7: REVERT 00000dc8: JUMPDEST 00000dc9: POP 00000dca: PUSH2 0x04d5 00000dcd: PUSH2 0x1ee4 00000dd0: JUMP 00000dd1: JUMPDEST 00000dd2: CALLVALUE 00000dd3: DUP1 00000dd4: ISZERO 00000dd5: PUSH2 0x0ddd 00000dd8: JUMPI 00000dd9: PUSH1 0x00 00000ddb: DUP1 00000ddc: REVERT 00000ddd: JUMPDEST 00000dde: POP 00000ddf: PUSH2 0x0638 00000de2: PUSH2 0x1f00 00000de5: JUMP 00000de6: JUMPDEST 00000de7: CALLVALUE 00000de8: DUP1 00000de9: ISZERO 00000dea: PUSH2 0x0df2 00000ded: JUMPI 00000dee: PUSH1 0x00 00000df0: DUP1 00000df1: REVERT 00000df2: JUMPDEST 00000df3: POP 00000df4: PUSH2 0x0638 00000df7: PUSH2 0x1f21 00000dfa: JUMP 00000dfb: JUMPDEST 00000dfc: CALLVALUE 00000dfd: DUP1 00000dfe: ISZERO 00000dff: PUSH2 0x0e07 00000e02: JUMPI 00000e03: PUSH1 0x00 00000e05: DUP1 00000e06: REVERT 00000e07: JUMPDEST 00000e08: POP 00000e09: PUSH2 0x04d5 00000e0c: PUSH2 0x1f2a 00000e0f: JUMP 00000e10: JUMPDEST 00000e11: CALLVALUE 00000e12: DUP1 00000e13: ISZERO 00000e14: PUSH2 0x0e1c 00000e17: JUMPI 00000e18: PUSH1 0x00 00000e1a: DUP1 00000e1b: REVERT 00000e1c: JUMPDEST 00000e1d: POP 00000e1e: PUSH2 0x04be 00000e21: PUSH1 0x04 00000e23: DUP1 00000e24: CALLDATASIZE 00000e25: SUB 00000e26: PUSH1 0x40 00000e28: DUP2 00000e29: LT 00000e2a: ISZERO 00000e2b: PUSH2 0x0e33 00000e2e: JUMPI 00000e2f: PUSH1 0x00 00000e31: DUP1 00000e32: REVERT 00000e33: JUMPDEST 00000e34: POP 00000e35: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e4a: DUP2 00000e4b: CALLDATALOAD 00000e4c: DUP2 00000e4d: AND 00000e4e: SWAP2 00000e4f: PUSH1 0x20 00000e51: ADD 00000e52: CALLDATALOAD 00000e53: AND 00000e54: PUSH2 0x1f46 00000e57: JUMP 00000e58: JUMPDEST 00000e59: CALLVALUE 00000e5a: DUP1 00000e5b: ISZERO 00000e5c: PUSH2 0x0e64 00000e5f: JUMPI 00000e60: PUSH1 0x00 00000e62: DUP1 00000e63: REVERT 00000e64: JUMPDEST 00000e65: POP 00000e66: PUSH2 0x053e 00000e69: PUSH1 0x04 00000e6b: DUP1 00000e6c: CALLDATASIZE 00000e6d: SUB 00000e6e: PUSH1 0x20 00000e70: DUP2 00000e71: LT 00000e72: ISZERO 00000e73: PUSH2 0x0e7b 00000e76: JUMPI 00000e77: PUSH1 0x00 00000e79: DUP1 00000e7a: REVERT 00000e7b: JUMPDEST 00000e7c: POP 00000e7d: CALLDATALOAD 00000e7e: PUSH2 0x2065 00000e81: JUMP 00000e82: JUMPDEST 00000e83: CALLVALUE 00000e84: DUP1 00000e85: ISZERO 00000e86: PUSH2 0x0e8e 00000e89: JUMPI 00000e8a: PUSH1 0x00 00000e8c: DUP1 00000e8d: REVERT 00000e8e: JUMPDEST 00000e8f: POP 00000e90: PUSH2 0x04be 00000e93: PUSH1 0x04 00000e95: DUP1 00000e96: CALLDATASIZE 00000e97: SUB 00000e98: PUSH1 0x20 00000e9a: DUP2 00000e9b: LT 00000e9c: ISZERO 00000e9d: PUSH2 0x0ea5 00000ea0: JUMPI 00000ea1: PUSH1 0x00 00000ea3: DUP1 00000ea4: REVERT 00000ea5: JUMPDEST 00000ea6: POP 00000ea7: CALLDATALOAD 00000ea8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ebd: AND 00000ebe: PUSH2 0x211b 00000ec1: JUMP 00000ec2: JUMPDEST 00000ec3: CALLVALUE 00000ec4: DUP1 00000ec5: ISZERO 00000ec6: PUSH2 0x0ece 00000ec9: JUMPI 00000eca: PUSH1 0x00 00000ecc: DUP1 00000ecd: REVERT 00000ece: JUMPDEST 00000ecf: POP 00000ed0: PUSH2 0x0ed7 00000ed3: PUSH2 0x2197 00000ed6: JUMP 00000ed7: JUMPDEST 00000ed8: PUSH1 0x40 00000eda: MLOAD 00000edb: DUP1 00000edc: DUP3 00000edd: PUSH1 0x01 00000edf: DUP2 00000ee0: GT 00000ee1: ISZERO 00000ee2: PUSH2 0x0ee7 00000ee5: JUMPI 00000ee6: INVALID 00000ee7: JUMPDEST 00000ee8: PUSH1 0xff 00000eea: AND 00000eeb: DUP2 00000eec: MSTORE 00000eed: PUSH1 0x20 00000eef: ADD 00000ef0: SWAP2 00000ef1: POP 00000ef2: POP 00000ef3: PUSH1 0x40 00000ef5: MLOAD 00000ef6: DUP1 00000ef7: SWAP2 00000ef8: SUB 00000ef9: SWAP1 00000efa: RETURN 00000efb: JUMPDEST 00000efc: PUSH2 0x04be 00000eff: PUSH1 0x04 00000f01: DUP1 00000f02: CALLDATASIZE 00000f03: SUB 00000f04: PUSH1 0x60 00000f06: DUP2 00000f07: LT 00000f08: ISZERO 00000f09: PUSH2 0x0f11 00000f0c: JUMPI 00000f0d: PUSH1 0x00 00000f0f: DUP1 00000f10: REVERT 00000f11: JUMPDEST 00000f12: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f27: DUP3 00000f28: CALLDATALOAD 00000f29: AND 00000f2a: SWAP2 00000f2b: SWAP1 00000f2c: DUP2 00000f2d: ADD 00000f2e: SWAP1 00000f2f: PUSH1 0x40 00000f31: DUP2 00000f32: ADD 00000f33: PUSH1 0x20 00000f35: DUP3 00000f36: ADD 00000f37: CALLDATALOAD 00000f38: PUSH5 0x0100000000 00000f3e: DUP2 00000f3f: GT 00000f40: ISZERO 00000f41: PUSH2 0x0f49 00000f44: JUMPI 00000f45: PUSH1 0x00 00000f47: DUP1 00000f48: REVERT 00000f49: JUMPDEST 00000f4a: DUP3 00000f4b: ADD 00000f4c: DUP4 00000f4d: PUSH1 0x20 00000f4f: DUP3 00000f50: ADD 00000f51: GT 00000f52: ISZERO 00000f53: PUSH2 0x0f5b 00000f56: JUMPI 00000f57: PUSH1 0x00 00000f59: DUP1 00000f5a: REVERT 00000f5b: JUMPDEST 00000f5c: DUP1 00000f5d: CALLDATALOAD 00000f5e: SWAP1 00000f5f: PUSH1 0x20 00000f61: ADD 00000f62: SWAP2 00000f63: DUP5 00000f64: PUSH1 0x01 00000f66: DUP4 00000f67: MUL 00000f68: DUP5 00000f69: ADD 00000f6a: GT 00000f6b: PUSH5 0x0100000000 00000f71: DUP4 00000f72: GT 00000f73: OR 00000f74: ISZERO 00000f75: PUSH2 0x0f7d 00000f78: JUMPI 00000f79: PUSH1 0x00 00000f7b: DUP1 00000f7c: REVERT 00000f7d: JUMPDEST 00000f7e: SWAP2 00000f7f: SWAP4 00000f80: SWAP1 00000f81: SWAP3 00000f82: SWAP1 00000f83: SWAP2 00000f84: PUSH1 0x20 00000f86: DUP2 00000f87: ADD 00000f88: SWAP1 00000f89: CALLDATALOAD 00000f8a: PUSH5 0x0100000000 00000f90: DUP2 00000f91: GT 00000f92: ISZERO 00000f93: PUSH2 0x0f9b 00000f96: JUMPI 00000f97: PUSH1 0x00 00000f99: DUP1 00000f9a: REVERT 00000f9b: JUMPDEST 00000f9c: DUP3 00000f9d: ADD 00000f9e: DUP4 00000f9f: PUSH1 0x20 00000fa1: DUP3 00000fa2: ADD 00000fa3: GT 00000fa4: ISZERO 00000fa5: PUSH2 0x0fad 00000fa8: JUMPI 00000fa9: PUSH1 0x00 00000fab: DUP1 00000fac: REVERT 00000fad: JUMPDEST 00000fae: DUP1 00000faf: CALLDATALOAD 00000fb0: SWAP1 00000fb1: PUSH1 0x20 00000fb3: ADD 00000fb4: SWAP2 00000fb5: DUP5 00000fb6: PUSH1 0x01 00000fb8: DUP4 00000fb9: MUL 00000fba: DUP5 00000fbb: ADD 00000fbc: GT 00000fbd: PUSH5 0x0100000000 00000fc3: DUP4 00000fc4: GT 00000fc5: OR 00000fc6: ISZERO 00000fc7: PUSH2 0x0fcf 00000fca: JUMPI 00000fcb: PUSH1 0x00 00000fcd: DUP1 00000fce: REVERT 00000fcf: JUMPDEST 00000fd0: POP 00000fd1: SWAP1 00000fd2: SWAP3 00000fd3: POP 00000fd4: SWAP1 00000fd5: POP 00000fd6: PUSH2 0x21a0 00000fd9: JUMP 00000fda: JUMPDEST 00000fdb: CALLVALUE 00000fdc: DUP1 00000fdd: ISZERO 00000fde: PUSH2 0x0fe6 00000fe1: JUMPI 00000fe2: PUSH1 0x00 00000fe4: DUP1 00000fe5: REVERT 00000fe6: JUMPDEST 00000fe7: POP 00000fe8: PUSH2 0x053e 00000feb: PUSH1 0x04 00000fed: DUP1 00000fee: CALLDATASIZE 00000fef: SUB 00000ff0: PUSH1 0x20 00000ff2: DUP2 00000ff3: LT 00000ff4: ISZERO 00000ff5: PUSH2 0x0ffd 00000ff8: JUMPI 00000ff9: PUSH1 0x00 00000ffb: DUP1 00000ffc: REVERT 00000ffd: JUMPDEST 00000ffe: POP 00000fff: CALLDATALOAD 00001000: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001015: AND 00001016: PUSH2 0x22ad 00001019: JUMP 0000101a: JUMPDEST 0000101b: CALLVALUE 0000101c: DUP1 0000101d: ISZERO 0000101e: PUSH2 0x1026 00001021: JUMPI 00001022: PUSH1 0x00 00001024: DUP1 00001025: REVERT 00001026: JUMPDEST 00001027: POP 00001028: PUSH2 0x04d5 0000102b: PUSH2 0x238f 0000102e: JUMP 0000102f: JUMPDEST 00001030: PUSH2 0x1037 00001033: PUSH2 0x23ab 00001036: JUMP 00001037: JUMPDEST 00001038: PUSH2 0x1047 0000103b: PUSH2 0x1042 0000103e: PUSH2 0x243f 00001041: JUMP 00001042: JUMPDEST 00001043: PUSH2 0x2464 00001046: JUMP 00001047: JUMPDEST 00001048: JUMP 00001049: JUMPDEST 0000104a: PUSH1 0x2d 0000104c: SLOAD 0000104d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001062: AND 00001063: DUP2 00001064: JUMP 00001065: JUMPDEST 00001066: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000107b: DUP2 0000107c: AND 0000107d: PUSH1 0x00 0000107f: SWAP1 00001080: DUP2 00001081: MSTORE 00001082: PUSH1 0x2a 00001084: PUSH1 0x20 00001086: MSTORE 00001087: PUSH1 0x40 00001089: DUP2 0000108a: KECCAK256 0000108b: SLOAD 0000108c: PUSH2 0x115b 0000108f: JUMPI 00001090: PUSH1 0x08 00001092: SLOAD 00001093: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010a8: AND 000010a9: ISZERO 000010aa: PUSH2 0x1151 000010ad: JUMPI 000010ae: PUSH1 0x08 000010b0: SLOAD 000010b1: PUSH1 0x40 000010b3: DUP1 000010b4: MLOAD 000010b5: PUSH32 0x06d34c6000000000000000000000000000000000000000000000000000000000 000010d6: DUP2 000010d7: MSTORE 000010d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010ed: DUP6 000010ee: DUP2 000010ef: AND 000010f0: PUSH1 0x04 000010f2: DUP4 000010f3: ADD 000010f4: MSTORE 000010f5: SWAP2 000010f6: MLOAD 000010f7: SWAP2 000010f8: SWAP1 000010f9: SWAP3 000010fa: AND 000010fb: SWAP2 000010fc: PUSH4 0x06d34c60 00001101: SWAP2 00001102: PUSH1 0x24 00001104: DUP1 00001105: DUP4 00001106: ADD 00001107: SWAP3 00001108: PUSH1 0x20 0000110a: SWAP3 0000110b: SWAP2 0000110c: SWAP1 0000110d: DUP3 0000110e: SWAP1 0000110f: SUB 00001110: ADD 00001111: DUP2 00001112: DUP7 00001113: DUP1 00001114: EXTCODESIZE 00001115: ISZERO 00001116: DUP1 00001117: ISZERO 00001118: PUSH2 0x1120 0000111b: JUMPI 0000111c: PUSH1 0x00 0000111e: DUP1 0000111f: REVERT 00001120: JUMPDEST 00001121: POP 00001122: GAS 00001123: STATICCALL 00001124: ISZERO 00001125: DUP1 00001126: ISZERO 00001127: PUSH2 0x1134 0000112a: JUMPI 0000112b: RETURNDATASIZE 0000112c: PUSH1 0x00 0000112e: DUP1 0000112f: RETURNDATACOPY 00001130: RETURNDATASIZE 00001131: PUSH1 0x00 00001133: REVERT 00001134: JUMPDEST 00001135: POP 00001136: POP 00001137: POP 00001138: POP 00001139: PUSH1 0x40 0000113b: MLOAD 0000113c: RETURNDATASIZE 0000113d: PUSH1 0x20 0000113f: DUP2 00001140: LT 00001141: ISZERO 00001142: PUSH2 0x114a 00001145: JUMPI 00001146: PUSH1 0x00 00001148: DUP1 00001149: REVERT 0000114a: JUMPDEST 0000114b: POP 0000114c: MLOAD 0000114d: PUSH2 0x1154 00001150: JUMP 00001151: JUMPDEST 00001152: PUSH1 0x00 00001154: JUMPDEST 00001155: SWAP1 00001156: POP 00001157: PUSH2 0x1183 0000115a: JUMP 0000115b: JUMPDEST 0000115c: POP 0000115d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001172: DUP2 00001173: AND 00001174: PUSH1 0x00 00001176: SWAP1 00001177: DUP2 00001178: MSTORE 00001179: PUSH1 0x2a 0000117b: PUSH1 0x20 0000117d: MSTORE 0000117e: PUSH1 0x40 00001180: SWAP1 00001181: KECCAK256 00001182: SLOAD 00001183: JUMPDEST 00001184: SWAP2 00001185: SWAP1 00001186: POP 00001187: JUMP 00001188: JUMPDEST 00001189: PUSH1 0x23 0000118b: SLOAD 0000118c: PUSH3 0x010000 00001190: SWAP1 00001191: DIV 00001192: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011a7: AND 000011a8: DUP2 000011a9: JUMP 000011aa: JUMPDEST 000011ab: PUSH1 0x00 000011ad: PUSH2 0x11b4 000011b0: PUSH2 0x243f 000011b3: JUMP 000011b4: JUMPDEST 000011b5: SWAP1 000011b6: POP 000011b7: JUMPDEST 000011b8: SWAP1 000011b9: JUMP 000011ba: JUMPDEST 000011bb: PUSH1 0x10 000011bd: SLOAD 000011be: DUP2 000011bf: JUMP 000011c0: JUMPDEST 000011c1: PUSH8 0x03782dace9d90000 000011ca: DUP2 000011cb: JUMP 000011cc: JUMPDEST 000011cd: PUSH1 0x27 000011cf: SLOAD 000011d0: DUP2 000011d1: JUMP 000011d2: JUMPDEST 000011d3: PUSH1 0x00 000011d5: DUP2 000011d6: JUMP 000011d7: JUMPDEST 000011d8: PUSH1 0x17 000011da: SLOAD 000011db: DUP2 000011dc: JUMP 000011dd: JUMPDEST 000011de: PUSH1 0x0e 000011e0: SLOAD 000011e1: DUP2 000011e2: JUMP 000011e3: JUMPDEST 000011e4: PUSH1 0x22 000011e6: PUSH1 0x20 000011e8: MSTORE 000011e9: PUSH1 0x00 000011eb: SWAP1 000011ec: DUP2 000011ed: MSTORE 000011ee: PUSH1 0x40 000011f0: SWAP1 000011f1: KECCAK256 000011f2: SLOAD 000011f3: PUSH1 0xff 000011f5: AND 000011f6: DUP2 000011f7: JUMP 000011f8: JUMPDEST 000011f9: PUSH1 0x09 000011fb: SLOAD 000011fc: DUP2 000011fd: JUMP 000011fe: JUMPDEST 000011ff: PUSH1 0x2e 00001201: SLOAD 00001202: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001217: AND 00001218: DUP2 00001219: JUMP 0000121a: JUMPDEST 0000121b: PUSH2 0x1222 0000121e: PUSH2 0x2488 00001221: JUMP 00001222: JUMPDEST 00001223: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001238: AND 00001239: CALLER 0000123a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000124f: AND 00001250: EQ 00001251: ISZERO 00001252: PUSH2 0x129a 00001255: JUMPI 00001256: PUSH2 0x1295 00001259: DUP4 0000125a: DUP4 0000125b: DUP4 0000125c: DUP1 0000125d: DUP1 0000125e: PUSH1 0x1f 00001260: ADD 00001261: PUSH1 0x20 00001263: DUP1 00001264: SWAP2 00001265: DIV 00001266: MUL 00001267: PUSH1 0x20 00001269: ADD 0000126a: PUSH1 0x40 0000126c: MLOAD 0000126d: SWAP1 0000126e: DUP2 0000126f: ADD 00001270: PUSH1 0x40 00001272: MSTORE 00001273: DUP1 00001274: SWAP4 00001275: SWAP3 00001276: SWAP2 00001277: SWAP1 00001278: DUP2 00001279: DUP2 0000127a: MSTORE 0000127b: PUSH1 0x20 0000127d: ADD 0000127e: DUP4 0000127f: DUP4 00001280: DUP1 00001281: DUP3 00001282: DUP5 00001283: CALLDATACOPY 00001284: PUSH1 0x00 00001286: SWAP3 00001287: ADD 00001288: SWAP2 00001289: SWAP1 0000128a: SWAP2 0000128b: MSTORE 0000128c: POP 0000128d: PUSH2 0x24ad 00001290: SWAP3 00001291: POP 00001292: POP 00001293: POP 00001294: JUMP 00001295: JUMPDEST 00001296: PUSH2 0x12a2 00001299: JUMP 0000129a: JUMPDEST 0000129b: PUSH2 0x12a2 0000129e: PUSH2 0x102f 000012a1: JUMP 000012a2: JUMPDEST 000012a3: POP 000012a4: POP 000012a5: POP 000012a6: JUMP 000012a7: JUMPDEST 000012a8: PUSH1 0x00 000012aa: SLOAD 000012ab: PUSH23 0x0100000000000000000000000000000000000000000000 000012c3: SWAP1 000012c4: DIV 000012c5: PUSH1 0xff 000012c7: AND 000012c8: DUP2 000012c9: JUMP 000012ca: JUMPDEST 000012cb: PUSH1 0x00 000012cd: PUSH2 0x11b4 000012d0: PUSH2 0x2488 000012d3: JUMP 000012d4: JUMPDEST 000012d5: PUSH1 0x1d 000012d7: PUSH1 0x20 000012d9: MSTORE 000012da: DUP2 000012db: PUSH1 0x00 000012dd: MSTORE 000012de: PUSH1 0x40 000012e0: PUSH1 0x00 000012e2: KECCAK256 000012e3: DUP2 000012e4: DUP2 000012e5: SLOAD 000012e6: DUP2 000012e7: LT 000012e8: PUSH2 0x12ed 000012eb: JUMPI 000012ec: INVALID 000012ed: JUMPDEST 000012ee: PUSH1 0x00 000012f0: SWAP2 000012f1: DUP3 000012f2: MSTORE 000012f3: PUSH1 0x20 000012f5: SWAP1 000012f6: SWAP2 000012f7: KECCAK256 000012f8: ADD 000012f9: SLOAD 000012fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000130f: AND 00001310: SWAP2 00001311: POP 00001312: DUP3 00001313: SWAP1 00001314: POP 00001315: JUMP 00001316: JUMPDEST 00001317: PUSH1 0x30 00001319: SLOAD 0000131a: DUP2 0000131b: JUMP 0000131c: JUMPDEST 0000131d: PUSH1 0x04 0000131f: SLOAD 00001320: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001335: AND 00001336: DUP2 00001337: JUMP 00001338: JUMPDEST 00001339: PUSH1 0x15 0000133b: SLOAD 0000133c: DUP2 0000133d: JUMP 0000133e: JUMPDEST 0000133f: PUSH3 0x03f480 00001343: DUP2 00001344: JUMP 00001345: JUMPDEST 00001346: PUSH1 0x12 00001348: DUP2 00001349: PUSH1 0x02 0000134b: DUP2 0000134c: LT 0000134d: PUSH2 0x1352 00001350: JUMPI 00001351: INVALID 00001352: JUMPDEST 00001353: ADD 00001354: SLOAD 00001355: SWAP1 00001356: POP 00001357: DUP2 00001358: JUMP 00001359: JUMPDEST 0000135a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000136f: DUP3 00001370: AND 00001371: PUSH1 0x00 00001373: SWAP1 00001374: DUP2 00001375: MSTORE 00001376: PUSH1 0x2b 00001378: PUSH1 0x20 0000137a: SWAP1 0000137b: DUP2 0000137c: MSTORE 0000137d: PUSH1 0x40 0000137f: DUP1 00001380: DUP4 00001381: KECCAK256 00001382: DUP5 00001383: DUP5 00001384: MSTORE 00001385: SWAP1 00001386: SWAP2 00001387: MSTORE 00001388: DUP2 00001389: KECCAK256 0000138a: SLOAD 0000138b: PUSH1 0xff 0000138d: AND 0000138e: PUSH2 0x1464 00001391: JUMPI 00001392: PUSH1 0x08 00001394: SLOAD 00001395: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013aa: AND 000013ab: ISZERO 000013ac: PUSH2 0x145a 000013af: JUMPI 000013b0: PUSH1 0x08 000013b2: SLOAD 000013b3: PUSH1 0x40 000013b5: DUP1 000013b6: MLOAD 000013b7: PUSH32 0x573c840900000000000000000000000000000000000000000000000000000000 000013d8: DUP2 000013d9: MSTORE 000013da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000013ef: DUP7 000013f0: DUP2 000013f1: AND 000013f2: PUSH1 0x04 000013f4: DUP4 000013f5: ADD 000013f6: MSTORE 000013f7: PUSH1 0x24 000013f9: DUP3 000013fa: ADD 000013fb: DUP7 000013fc: SWAP1 000013fd: MSTORE 000013fe: SWAP2 000013ff: MLOAD 00001400: SWAP2 00001401: SWAP1 00001402: SWAP3 00001403: AND 00001404: SWAP2 00001405: PUSH4 0x573c8409 0000140a: SWAP2 0000140b: PUSH1 0x44 0000140d: DUP1 0000140e: DUP4 0000140f: ADD 00001410: SWAP3 00001411: PUSH1 0x20 00001413: SWAP3 00001414: SWAP2 00001415: SWAP1 00001416: DUP3 00001417: SWAP1 00001418: SUB 00001419: ADD 0000141a: DUP2 0000141b: DUP7 0000141c: DUP1 0000141d: EXTCODESIZE 0000141e: ISZERO 0000141f: DUP1 00001420: ISZERO 00001421: PUSH2 0x1429 00001424: JUMPI 00001425: PUSH1 0x00 00001427: DUP1 00001428: REVERT 00001429: JUMPDEST 0000142a: POP 0000142b: GAS 0000142c: STATICCALL 0000142d: ISZERO 0000142e: DUP1 0000142f: ISZERO 00001430: PUSH2 0x143d 00001433: JUMPI 00001434: RETURNDATASIZE 00001435: PUSH1 0x00 00001437: DUP1 00001438: RETURNDATACOPY 00001439: RETURNDATASIZE 0000143a: PUSH1 0x00 0000143c: REVERT 0000143d: JUMPDEST 0000143e: POP 0000143f: POP 00001440: POP 00001441: POP 00001442: PUSH1 0x40 00001444: MLOAD 00001445: RETURNDATASIZE 00001446: PUSH1 0x20 00001448: DUP2 00001449: LT 0000144a: ISZERO 0000144b: PUSH2 0x1453 0000144e: JUMPI 0000144f: PUSH1 0x00 00001451: DUP1 00001452: REVERT 00001453: JUMPDEST 00001454: POP 00001455: MLOAD 00001456: PUSH2 0x145d 00001459: JUMP 0000145a: JUMPDEST 0000145b: PUSH1 0x00 0000145d: JUMPDEST 0000145e: SWAP1 0000145f: POP 00001460: PUSH2 0x149a 00001463: JUMP 00001464: JUMPDEST 00001465: POP 00001466: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000147b: DUP3 0000147c: AND 0000147d: PUSH1 0x00 0000147f: SWAP1 00001480: DUP2 00001481: MSTORE 00001482: PUSH1 0x2b 00001484: PUSH1 0x20 00001486: SWAP1 00001487: DUP2 00001488: MSTORE 00001489: PUSH1 0x40 0000148b: DUP1 0000148c: DUP4 0000148d: KECCAK256 0000148e: DUP5 0000148f: DUP5 00001490: MSTORE 00001491: SWAP1 00001492: SWAP2 00001493: MSTORE 00001494: SWAP1 00001495: KECCAK256 00001496: SLOAD 00001497: PUSH1 0xff 00001499: AND 0000149a: JUMPDEST 0000149b: SWAP3 0000149c: SWAP2 0000149d: POP 0000149e: POP 0000149f: JUMP 000014a0: JUMPDEST 000014a1: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014b6: DUP2 000014b7: AND 000014b8: PUSH1 0x00 000014ba: SWAP1 000014bb: DUP2 000014bc: MSTORE 000014bd: PUSH1 0x1b 000014bf: PUSH1 0x20 000014c1: MSTORE 000014c2: PUSH1 0x40 000014c4: DUP2 000014c5: KECCAK256 000014c6: SLOAD 000014c7: PUSH2 0x155b 000014ca: JUMPI 000014cb: PUSH1 0x08 000014cd: SLOAD 000014ce: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000014e3: AND 000014e4: ISZERO 000014e5: PUSH2 0x1151 000014e8: JUMPI 000014e9: PUSH1 0x08 000014eb: SLOAD 000014ec: PUSH1 0x40 000014ee: DUP1 000014ef: MLOAD 000014f0: PUSH32 0x5825b04c00000000000000000000000000000000000000000000000000000000 00001511: DUP2 00001512: MSTORE 00001513: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001528: DUP6 00001529: DUP2 0000152a: AND 0000152b: PUSH1 0x04 0000152d: DUP4 0000152e: ADD 0000152f: MSTORE 00001530: SWAP2 00001531: MLOAD 00001532: SWAP2 00001533: SWAP1 00001534: SWAP3 00001535: AND 00001536: SWAP2 00001537: PUSH4 0x5825b04c 0000153c: SWAP2 0000153d: PUSH1 0x24 0000153f: DUP1 00001540: DUP4 00001541: ADD 00001542: SWAP3 00001543: PUSH1 0x20 00001545: SWAP3 00001546: SWAP2 00001547: SWAP1 00001548: DUP3 00001549: SWAP1 0000154a: SUB 0000154b: ADD 0000154c: DUP2 0000154d: DUP7 0000154e: DUP1 0000154f: EXTCODESIZE 00001550: ISZERO 00001551: DUP1 00001552: ISZERO 00001553: PUSH2 0x1120 00001556: JUMPI 00001557: PUSH1 0x00 00001559: DUP1 0000155a: REVERT 0000155b: JUMPDEST 0000155c: POP 0000155d: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001572: AND 00001573: PUSH1 0x00 00001575: SWAP1 00001576: DUP2 00001577: MSTORE 00001578: PUSH1 0x1b 0000157a: PUSH1 0x20 0000157c: MSTORE 0000157d: PUSH1 0x40 0000157f: SWAP1 00001580: KECCAK256 00001581: SLOAD 00001582: SWAP1 00001583: JUMP 00001584: JUMPDEST 00001585: PUSH1 0x31 00001587: DUP1 00001588: SLOAD 00001589: PUSH1 0x40 0000158b: DUP1 0000158c: MLOAD 0000158d: PUSH1 0x20 0000158f: PUSH1 0x1f 00001591: PUSH1 0x02 00001593: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000015b4: PUSH2 0x0100 000015b7: PUSH1 0x01 000015b9: DUP9 000015ba: AND 000015bb: ISZERO 000015bc: MUL 000015bd: ADD 000015be: SWAP1 000015bf: SWAP6 000015c0: AND 000015c1: SWAP5 000015c2: SWAP1 000015c3: SWAP5 000015c4: DIV 000015c5: SWAP4 000015c6: DUP5 000015c7: ADD 000015c8: DUP2 000015c9: SWAP1 000015ca: DIV 000015cb: DUP2 000015cc: MUL 000015cd: DUP3 000015ce: ADD 000015cf: DUP2 000015d0: ADD 000015d1: SWAP1 000015d2: SWAP3 000015d3: MSTORE 000015d4: DUP3 000015d5: DUP2 000015d6: MSTORE 000015d7: PUSH1 0x60 000015d9: SWAP4 000015da: SWAP1 000015db: SWAP3 000015dc: SWAP1 000015dd: SWAP2 000015de: DUP4 000015df: ADD 000015e0: DUP3 000015e1: DUP3 000015e2: DUP1 000015e3: ISZERO 000015e4: PUSH2 0x162e 000015e7: JUMPI 000015e8: DUP1 000015e9: PUSH1 0x1f 000015eb: LT 000015ec: PUSH2 0x1603 000015ef: JUMPI 000015f0: PUSH2 0x0100 000015f3: DUP1 000015f4: DUP4 000015f5: SLOAD 000015f6: DIV 000015f7: MUL 000015f8: DUP4 000015f9: MSTORE 000015fa: SWAP2 000015fb: PUSH1 0x20 000015fd: ADD 000015fe: SWAP2 000015ff: PUSH2 0x162e 00001602: JUMP 00001603: JUMPDEST 00001604: DUP3 00001605: ADD 00001606: SWAP2 00001607: SWAP1 00001608: PUSH1 0x00 0000160a: MSTORE 0000160b: PUSH1 0x20 0000160d: PUSH1 0x00 0000160f: KECCAK256 00001610: SWAP1 00001611: JUMPDEST 00001612: DUP2 00001613: SLOAD 00001614: DUP2 00001615: MSTORE 00001616: SWAP1 00001617: PUSH1 0x01 00001619: ADD 0000161a: SWAP1 0000161b: PUSH1 0x20 0000161d: ADD 0000161e: DUP1 0000161f: DUP4 00001620: GT 00001621: PUSH2 0x1611 00001624: JUMPI 00001625: DUP3 00001626: SWAP1 00001627: SUB 00001628: PUSH1 0x1f 0000162a: AND 0000162b: DUP3 0000162c: ADD 0000162d: SWAP2 0000162e: JUMPDEST 0000162f: POP 00001630: POP 00001631: POP 00001632: POP 00001633: POP 00001634: SWAP1 00001635: POP 00001636: SWAP1 00001637: JUMP 00001638: JUMPDEST 00001639: PUSH1 0x14 0000163b: SLOAD 0000163c: DUP2 0000163d: JUMP 0000163e: JUMPDEST 0000163f: PUSH1 0x23 00001641: SLOAD 00001642: PUSH2 0x0100 00001645: SWAP1 00001646: DIV 00001647: PUSH1 0xff 00001649: AND 0000164a: DUP2 0000164b: JUMP 0000164c: JUMPDEST 0000164d: PUSH1 0x0b 0000164f: SLOAD 00001650: DUP2 00001651: JUMP 00001652: JUMPDEST 00001653: PUSH8 0x0a688906bd8b0000 0000165c: DUP2 0000165d: JUMP 0000165e: JUMPDEST 0000165f: PUSH2 0x1666 00001662: PUSH2 0x1944 00001665: JUMP 00001666: JUMPDEST 00001667: PUSH2 0x16d1 0000166a: JUMPI 0000166b: PUSH1 0x40 0000166d: DUP1 0000166e: MLOAD 0000166f: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001690: DUP2 00001691: MSTORE 00001692: PUSH1 0x20 00001694: PUSH1 0x04 00001696: DUP3 00001697: ADD 00001698: DUP2 00001699: SWAP1 0000169a: MSTORE 0000169b: PUSH1 0x24 0000169d: DUP3 0000169e: ADD 0000169f: MSTORE 000016a0: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 000016c1: PUSH1 0x44 000016c3: DUP3 000016c4: ADD 000016c5: MSTORE 000016c6: SWAP1 000016c7: MLOAD 000016c8: SWAP1 000016c9: DUP2 000016ca: SWAP1 000016cb: SUB 000016cc: PUSH1 0x64 000016ce: ADD 000016cf: SWAP1 000016d0: REVERT 000016d1: JUMPDEST 000016d2: PUSH1 0x00 000016d4: DUP1 000016d5: SLOAD 000016d6: PUSH1 0x40 000016d8: MLOAD 000016d9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000016ee: SWAP1 000016ef: SWAP2 000016f0: AND 000016f1: SWAP1 000016f2: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00001713: SWAP1 00001714: DUP4 00001715: SWAP1 00001716: LOG3 00001717: PUSH1 0x00 00001719: DUP1 0000171a: SLOAD 0000171b: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 0000173c: AND 0000173d: SWAP1 0000173e: SSTORE 0000173f: JUMP 00001740: JUMPDEST 00001741: PUSH8 0x06f05b59d3b20000 0000174a: DUP2 0000174b: JUMP 0000174c: JUMPDEST 0000174d: PUSH1 0x0d 0000174f: SLOAD 00001750: DUP2 00001751: JUMP 00001752: JUMPDEST 00001753: PUSH1 0x06 00001755: DUP2 00001756: JUMP 00001757: JUMPDEST 00001758: PUSH1 0x00 0000175a: DUP2 0000175b: DUP2 0000175c: MSTORE 0000175d: PUSH1 0x1e 0000175f: PUSH1 0x20 00001761: MSTORE 00001762: PUSH1 0x40 00001764: DUP2 00001765: KECCAK256 00001766: SLOAD 00001767: PUSH2 0x17fa 0000176a: JUMPI 0000176b: PUSH1 0x08 0000176d: SLOAD 0000176e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001783: AND 00001784: ISZERO 00001785: PUSH2 0x1151 00001788: JUMPI 00001789: PUSH1 0x08 0000178b: SLOAD 0000178c: PUSH1 0x40 0000178e: DUP1 0000178f: MLOAD 00001790: PUSH32 0x7cd9fb1c00000000000000000000000000000000000000000000000000000000 000017b1: DUP2 000017b2: MSTORE 000017b3: PUSH1 0x04 000017b5: DUP2 000017b6: ADD 000017b7: DUP6 000017b8: SWAP1 000017b9: MSTORE 000017ba: SWAP1 000017bb: MLOAD 000017bc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000017d1: SWAP1 000017d2: SWAP3 000017d3: AND 000017d4: SWAP2 000017d5: PUSH4 0x7cd9fb1c 000017da: SWAP2 000017db: PUSH1 0x24 000017dd: DUP1 000017de: DUP3 000017df: ADD 000017e0: SWAP3 000017e1: PUSH1 0x20 000017e3: SWAP3 000017e4: SWAP1 000017e5: SWAP2 000017e6: SWAP1 000017e7: DUP3 000017e8: SWAP1 000017e9: SUB 000017ea: ADD 000017eb: DUP2 000017ec: DUP7 000017ed: DUP1 000017ee: EXTCODESIZE 000017ef: ISZERO 000017f0: DUP1 000017f1: ISZERO 000017f2: PUSH2 0x1120 000017f5: JUMPI 000017f6: PUSH1 0x00 000017f8: DUP1 000017f9: REVERT 000017fa: JUMPDEST 000017fb: POP 000017fc: PUSH1 0x00 000017fe: SWAP1 000017ff: DUP2 00001800: MSTORE 00001801: PUSH1 0x1e 00001803: PUSH1 0x20 00001805: MSTORE 00001806: PUSH1 0x40 00001808: SWAP1 00001809: KECCAK256 0000180a: SLOAD 0000180b: SWAP1 0000180c: JUMP 0000180d: JUMPDEST 0000180e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001823: DUP2 00001824: AND 00001825: PUSH1 0x00 00001827: SWAP1 00001828: DUP2 00001829: MSTORE 0000182a: PUSH1 0x18 0000182c: PUSH1 0x20 0000182e: MSTORE 0000182f: PUSH1 0x40 00001831: DUP2 00001832: KECCAK256 00001833: SLOAD 00001834: PUSH2 0x18c8 00001837: JUMPI 00001838: PUSH1 0x08 0000183a: SLOAD 0000183b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001850: AND 00001851: ISZERO 00001852: PUSH2 0x1151 00001855: JUMPI 00001856: PUSH1 0x08 00001858: SLOAD 00001859: PUSH1 0x40 0000185b: DUP1 0000185c: MLOAD 0000185d: PUSH32 0x821f982400000000000000000000000000000000000000000000000000000000 0000187e: DUP2 0000187f: MSTORE 00001880: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001895: DUP6 00001896: DUP2 00001897: AND 00001898: PUSH1 0x04 0000189a: DUP4 0000189b: ADD 0000189c: MSTORE 0000189d: SWAP2 0000189e: MLOAD 0000189f: SWAP2 000018a0: SWAP1 000018a1: SWAP3 000018a2: AND 000018a3: SWAP2 000018a4: PUSH4 0x821f9824 000018a9: SWAP2 000018aa: PUSH1 0x24 000018ac: DUP1 000018ad: DUP4 000018ae: ADD 000018af: SWAP3 000018b0: PUSH1 0x20 000018b2: SWAP3 000018b3: SWAP2 000018b4: SWAP1 000018b5: DUP3 000018b6: SWAP1 000018b7: SUB 000018b8: ADD 000018b9: DUP2 000018ba: DUP7 000018bb: DUP1 000018bc: EXTCODESIZE 000018bd: ISZERO 000018be: DUP1 000018bf: ISZERO 000018c0: PUSH2 0x1120 000018c3: JUMPI 000018c4: PUSH1 0x00 000018c6: DUP1 000018c7: REVERT 000018c8: JUMPDEST 000018c9: POP 000018ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000018df: AND 000018e0: PUSH1 0x00 000018e2: SWAP1 000018e3: DUP2 000018e4: MSTORE 000018e5: PUSH1 0x18 000018e7: PUSH1 0x20 000018e9: MSTORE 000018ea: PUSH1 0x40 000018ec: SWAP1 000018ed: KECCAK256 000018ee: SLOAD 000018ef: SWAP1 000018f0: JUMP 000018f1: JUMPDEST 000018f2: PUSH1 0x28 000018f4: SLOAD 000018f5: DUP2 000018f6: JUMP 000018f7: JUMPDEST 000018f8: PUSH1 0x21 000018fa: PUSH1 0x20 000018fc: MSTORE 000018fd: PUSH1 0x00 000018ff: SWAP1 00001900: DUP2 00001901: MSTORE 00001902: PUSH1 0x40 00001904: SWAP1 00001905: KECCAK256 00001906: SLOAD 00001907: PUSH1 0xff 00001909: AND 0000190a: DUP2 0000190b: JUMP 0000190c: JUMPDEST 0000190d: PUSH1 0x05 0000190f: SLOAD 00001910: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001925: AND 00001926: DUP2 00001927: JUMP 00001928: JUMPDEST 00001929: PUSH1 0x00 0000192b: SLOAD 0000192c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001941: AND 00001942: SWAP1 00001943: JUMP 00001944: JUMPDEST 00001945: PUSH1 0x00 00001947: DUP1 00001948: SLOAD 00001949: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000195e: AND 0000195f: PUSH2 0x1966 00001962: PUSH2 0x24fc 00001965: JUMP 00001966: JUMPDEST 00001967: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000197c: AND 0000197d: EQ 0000197e: SWAP1 0000197f: POP 00001980: SWAP1 00001981: JUMP 00001982: JUMPDEST 00001983: PUSH1 0x1c 00001985: PUSH1 0x20 00001987: MSTORE 00001988: DUP2 00001989: PUSH1 0x00 0000198b: MSTORE 0000198c: PUSH1 0x40 0000198e: PUSH1 0x00 00001990: KECCAK256 00001991: DUP2 00001992: DUP2 00001993: SLOAD 00001994: DUP2 00001995: LT 00001996: PUSH2 0x199b 00001999: JUMPI 0000199a: INVALID 0000199b: JUMPDEST 0000199c: PUSH1 0x00 0000199e: SWAP2 0000199f: DUP3 000019a0: MSTORE 000019a1: PUSH1 0x20 000019a3: SWAP1 000019a4: SWAP2 000019a5: KECCAK256 000019a6: PUSH1 0x09 000019a8: SWAP1 000019a9: SWAP2 000019aa: MUL 000019ab: ADD 000019ac: DUP1 000019ad: SLOAD 000019ae: PUSH1 0x01 000019b0: DUP3 000019b1: ADD 000019b2: SLOAD 000019b3: PUSH1 0x02 000019b5: DUP4 000019b6: ADD 000019b7: SLOAD 000019b8: PUSH1 0x03 000019ba: DUP5 000019bb: ADD 000019bc: SLOAD 000019bd: PUSH1 0x04 000019bf: DUP6 000019c0: ADD 000019c1: SLOAD 000019c2: PUSH1 0x05 000019c4: DUP7 000019c5: ADD 000019c6: SLOAD 000019c7: PUSH1 0x06 000019c9: DUP8 000019ca: ADD 000019cb: SLOAD 000019cc: PUSH1 0x07 000019ce: DUP9 000019cf: ADD 000019d0: SLOAD 000019d1: PUSH1 0x08 000019d3: SWAP1 000019d4: SWAP9 000019d5: ADD 000019d6: SLOAD 000019d7: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000019ec: SWAP1 000019ed: SWAP8 000019ee: AND 000019ef: SWAP10 000019f0: POP 000019f1: SWAP5 000019f2: SWAP8 000019f3: POP 000019f4: SWAP3 000019f5: SWAP6 000019f6: SWAP2 000019f7: SWAP5 000019f8: SWAP1 000019f9: SWAP4 000019fa: SWAP2 000019fb: SWAP1 000019fc: PUSH1 0xff 000019fe: AND 000019ff: DUP10 00001a00: JUMP 00001a01: JUMPDEST 00001a02: PUSH8 0x016345785d8a0000 00001a0b: DUP2 00001a0c: JUMP 00001a0d: JUMPDEST 00001a0e: PUSH1 0x03 00001a10: SLOAD 00001a11: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a26: AND 00001a27: DUP2 00001a28: JUMP 00001a29: JUMPDEST 00001a2a: PUSH2 0x1a31 00001a2d: PUSH2 0x2488 00001a30: JUMP 00001a31: JUMPDEST 00001a32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a47: AND 00001a48: CALLER 00001a49: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a5e: AND 00001a5f: EQ 00001a60: ISZERO 00001a61: PUSH2 0x1b36 00001a64: JUMPI 00001a65: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001a7a: DUP2 00001a7b: AND 00001a7c: PUSH2 0x1ad0 00001a7f: JUMPI 00001a80: PUSH1 0x40 00001a82: MLOAD 00001a83: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00001aa4: DUP2 00001aa5: MSTORE 00001aa6: PUSH1 0x04 00001aa8: ADD 00001aa9: DUP1 00001aaa: DUP1 00001aab: PUSH1 0x20 00001aad: ADD 00001aae: DUP3 00001aaf: DUP2 00001ab0: SUB 00001ab1: DUP3 00001ab2: MSTORE 00001ab3: PUSH1 0x36 00001ab5: DUP2 00001ab6: MSTORE 00001ab7: PUSH1 0x20 00001ab9: ADD 00001aba: DUP1 00001abb: PUSH2 0x27f7 00001abe: PUSH1 0x36 00001ac0: SWAP2 00001ac1: CODECOPY 00001ac2: PUSH1 0x40 00001ac4: ADD 00001ac5: SWAP2 00001ac6: POP 00001ac7: POP 00001ac8: PUSH1 0x40 00001aca: MLOAD 00001acb: DUP1 00001acc: SWAP2 00001acd: SUB 00001ace: SWAP1 00001acf: REVERT 00001ad0: JUMPDEST 00001ad1: PUSH32 0xe923ce5ee469e989477ed664be643fb92d252573aad00209ddad9452b5414a89 00001af2: PUSH2 0x1af9 00001af5: PUSH2 0x2488 00001af8: JUMP 00001af9: JUMPDEST 00001afa: PUSH1 0x40 00001afc: DUP1 00001afd: MLOAD 00001afe: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b13: SWAP3 00001b14: DUP4 00001b15: AND 00001b16: DUP2 00001b17: MSTORE 00001b18: SWAP2 00001b19: DUP5 00001b1a: AND 00001b1b: PUSH1 0x20 00001b1d: DUP4 00001b1e: ADD 00001b1f: MSTORE 00001b20: DUP1 00001b21: MLOAD 00001b22: SWAP2 00001b23: DUP3 00001b24: SWAP1 00001b25: SUB 00001b26: ADD 00001b27: SWAP1 00001b28: LOG1 00001b29: PUSH2 0x1b31 00001b2c: DUP2 00001b2d: PUSH2 0x2500 00001b30: JUMP 00001b31: JUMPDEST 00001b32: PUSH2 0x1b3e 00001b35: JUMP 00001b36: JUMPDEST 00001b37: PUSH2 0x1b3e 00001b3a: PUSH2 0x102f 00001b3d: JUMP 00001b3e: JUMPDEST 00001b3f: POP 00001b40: JUMP 00001b41: JUMPDEST 00001b42: PUSH8 0x02c68af0bb140000 00001b4b: DUP2 00001b4c: JUMP 00001b4d: JUMPDEST 00001b4e: PUSH1 0x00 00001b50: DUP2 00001b51: DUP2 00001b52: MSTORE 00001b53: PUSH1 0x1f 00001b55: PUSH1 0x20 00001b57: MSTORE 00001b58: PUSH1 0x40 00001b5a: DUP2 00001b5b: KECCAK256 00001b5c: SLOAD 00001b5d: PUSH2 0x1bf0 00001b60: JUMPI 00001b61: PUSH1 0x08 00001b63: SLOAD 00001b64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001b79: AND 00001b7a: ISZERO 00001b7b: PUSH2 0x1151 00001b7e: JUMPI 00001b7f: PUSH1 0x08 00001b81: SLOAD 00001b82: PUSH1 0x40 00001b84: DUP1 00001b85: MLOAD 00001b86: PUSH32 0xa940646d00000000000000000000000000000000000000000000000000000000 00001ba7: DUP2 00001ba8: MSTORE 00001ba9: PUSH1 0x04 00001bab: DUP2 00001bac: ADD 00001bad: DUP6 00001bae: SWAP1 00001baf: MSTORE 00001bb0: SWAP1 00001bb1: MLOAD 00001bb2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001bc7: SWAP1 00001bc8: SWAP3 00001bc9: AND 00001bca: SWAP2 00001bcb: PUSH4 0xa940646d 00001bd0: SWAP2 00001bd1: PUSH1 0x24 00001bd3: DUP1 00001bd4: DUP3 00001bd5: ADD 00001bd6: SWAP3 00001bd7: PUSH1 0x20 00001bd9: SWAP3 00001bda: SWAP1 00001bdb: SWAP2 00001bdc: SWAP1 00001bdd: DUP3 00001bde: SWAP1 00001bdf: SUB 00001be0: ADD 00001be1: DUP2 00001be2: DUP7 00001be3: DUP1 00001be4: EXTCODESIZE 00001be5: ISZERO 00001be6: DUP1 00001be7: ISZERO 00001be8: PUSH2 0x1120 00001beb: JUMPI 00001bec: PUSH1 0x00 00001bee: DUP1 00001bef: REVERT 00001bf0: JUMPDEST 00001bf1: POP 00001bf2: PUSH1 0x00 00001bf4: SWAP1 00001bf5: DUP2 00001bf6: MSTORE 00001bf7: PUSH1 0x1f 00001bf9: PUSH1 0x20 00001bfb: MSTORE 00001bfc: PUSH1 0x40 00001bfe: SWAP1 00001bff: KECCAK256 00001c00: SLOAD 00001c01: SWAP1 00001c02: JUMP 00001c03: JUMPDEST 00001c04: PUSH1 0x2f 00001c06: PUSH1 0x20 00001c08: SWAP1 00001c09: DUP2 00001c0a: MSTORE 00001c0b: PUSH1 0x00 00001c0d: SWAP3 00001c0e: DUP4 00001c0f: MSTORE 00001c10: PUSH1 0x40 00001c12: DUP1 00001c13: DUP5 00001c14: KECCAK256 00001c15: SWAP1 00001c16: SWAP2 00001c17: MSTORE 00001c18: SWAP1 00001c19: DUP3 00001c1a: MSTORE 00001c1b: SWAP1 00001c1c: KECCAK256 00001c1d: SLOAD 00001c1e: PUSH1 0xff 00001c20: AND 00001c21: DUP2 00001c22: JUMP 00001c23: JUMPDEST 00001c24: PUSH1 0x11 00001c26: SLOAD 00001c27: DUP2 00001c28: JUMP 00001c29: JUMPDEST 00001c2a: PUSH1 0x02 00001c2c: DUP2 00001c2d: JUMP 00001c2e: JUMPDEST 00001c2f: PUSH1 0x2c 00001c31: SLOAD 00001c32: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c47: AND 00001c48: DUP2 00001c49: JUMP 00001c4a: JUMPDEST 00001c4b: PUSH1 0x00 00001c4d: SLOAD 00001c4e: PUSH22 0x01000000000000000000000000000000000000000000 00001c65: SWAP1 00001c66: DIV 00001c67: PUSH1 0xff 00001c69: AND 00001c6a: DUP2 00001c6b: JUMP 00001c6c: JUMPDEST 00001c6d: PUSH1 0x0a 00001c6f: SLOAD 00001c70: DUP2 00001c71: JUMP 00001c72: JUMPDEST 00001c73: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001c88: DUP3 00001c89: AND 00001c8a: PUSH1 0x00 00001c8c: SWAP1 00001c8d: DUP2 00001c8e: MSTORE 00001c8f: PUSH1 0x1a 00001c91: PUSH1 0x20 00001c93: SWAP1 00001c94: DUP2 00001c95: MSTORE 00001c96: PUSH1 0x40 00001c98: DUP1 00001c99: DUP4 00001c9a: KECCAK256 00001c9b: DUP5 00001c9c: DUP5 00001c9d: MSTORE 00001c9e: SWAP1 00001c9f: SWAP2 00001ca0: MSTORE 00001ca1: DUP2 00001ca2: KECCAK256 00001ca3: SLOAD 00001ca4: PUSH2 0x1d3f 00001ca7: JUMPI 00001ca8: PUSH1 0x08 00001caa: SLOAD 00001cab: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001cc0: AND 00001cc1: ISZERO 00001cc2: PUSH2 0x145a 00001cc5: JUMPI 00001cc6: PUSH1 0x08 00001cc8: SLOAD 00001cc9: PUSH1 0x40 00001ccb: DUP1 00001ccc: MLOAD 00001ccd: PUSH32 0xbdbcb57600000000000000000000000000000000000000000000000000000000 00001cee: DUP2 00001cef: MSTORE 00001cf0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d05: DUP7 00001d06: DUP2 00001d07: AND 00001d08: PUSH1 0x04 00001d0a: DUP4 00001d0b: ADD 00001d0c: MSTORE 00001d0d: PUSH1 0x24 00001d0f: DUP3 00001d10: ADD 00001d11: DUP7 00001d12: SWAP1 00001d13: MSTORE 00001d14: SWAP2 00001d15: MLOAD 00001d16: SWAP2 00001d17: SWAP1 00001d18: SWAP3 00001d19: AND 00001d1a: SWAP2 00001d1b: PUSH4 0xbdbcb576 00001d20: SWAP2 00001d21: PUSH1 0x44 00001d23: DUP1 00001d24: DUP4 00001d25: ADD 00001d26: SWAP3 00001d27: PUSH1 0x20 00001d29: SWAP3 00001d2a: SWAP2 00001d2b: SWAP1 00001d2c: DUP3 00001d2d: SWAP1 00001d2e: SUB 00001d2f: ADD 00001d30: DUP2 00001d31: DUP7 00001d32: DUP1 00001d33: EXTCODESIZE 00001d34: ISZERO 00001d35: DUP1 00001d36: ISZERO 00001d37: PUSH2 0x1429 00001d3a: JUMPI 00001d3b: PUSH1 0x00 00001d3d: DUP1 00001d3e: REVERT 00001d3f: JUMPDEST 00001d40: POP 00001d41: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d56: SWAP2 00001d57: SWAP1 00001d58: SWAP2 00001d59: AND 00001d5a: PUSH1 0x00 00001d5c: SWAP1 00001d5d: DUP2 00001d5e: MSTORE 00001d5f: PUSH1 0x1a 00001d61: PUSH1 0x20 00001d63: SWAP1 00001d64: DUP2 00001d65: MSTORE 00001d66: PUSH1 0x40 00001d68: DUP1 00001d69: DUP4 00001d6a: KECCAK256 00001d6b: SWAP4 00001d6c: DUP4 00001d6d: MSTORE 00001d6e: SWAP3 00001d6f: SWAP1 00001d70: MSTORE 00001d71: KECCAK256 00001d72: SLOAD 00001d73: SWAP1 00001d74: JUMP 00001d75: JUMPDEST 00001d76: PUSH1 0x06 00001d78: SLOAD 00001d79: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001d8e: AND 00001d8f: DUP2 00001d90: JUMP 00001d91: JUMPDEST 00001d92: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001da7: DUP3 00001da8: AND 00001da9: PUSH1 0x00 00001dab: SWAP1 00001dac: DUP2 00001dad: MSTORE 00001dae: PUSH1 0x19 00001db0: PUSH1 0x20 00001db2: SWAP1 00001db3: DUP2 00001db4: MSTORE 00001db5: PUSH1 0x40 00001db7: DUP1 00001db8: DUP4 00001db9: KECCAK256 00001dba: DUP5 00001dbb: DUP5 00001dbc: MSTORE 00001dbd: SWAP1 00001dbe: SWAP2 00001dbf: MSTORE 00001dc0: DUP2 00001dc1: KECCAK256 00001dc2: SLOAD 00001dc3: PUSH1 0xff 00001dc5: AND 00001dc6: PUSH2 0x1e61 00001dc9: JUMPI 00001dca: PUSH1 0x08 00001dcc: SLOAD 00001dcd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001de2: AND 00001de3: ISZERO 00001de4: PUSH2 0x145a 00001de7: JUMPI 00001de8: PUSH1 0x08 00001dea: SLOAD 00001deb: PUSH1 0x40 00001ded: DUP1 00001dee: MLOAD 00001def: PUSH32 0xce977bc200000000000000000000000000000000000000000000000000000000 00001e10: DUP2 00001e11: MSTORE 00001e12: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e27: DUP7 00001e28: DUP2 00001e29: AND 00001e2a: PUSH1 0x04 00001e2c: DUP4 00001e2d: ADD 00001e2e: MSTORE 00001e2f: PUSH1 0x24 00001e31: DUP3 00001e32: ADD 00001e33: DUP7 00001e34: SWAP1 00001e35: MSTORE 00001e36: SWAP2 00001e37: MLOAD 00001e38: SWAP2 00001e39: SWAP1 00001e3a: SWAP3 00001e3b: AND 00001e3c: SWAP2 00001e3d: PUSH4 0xce977bc2 00001e42: SWAP2 00001e43: PUSH1 0x44 00001e45: DUP1 00001e46: DUP4 00001e47: ADD 00001e48: SWAP3 00001e49: PUSH1 0x20 00001e4b: SWAP3 00001e4c: SWAP2 00001e4d: SWAP1 00001e4e: DUP3 00001e4f: SWAP1 00001e50: SUB 00001e51: ADD 00001e52: DUP2 00001e53: DUP7 00001e54: DUP1 00001e55: EXTCODESIZE 00001e56: ISZERO 00001e57: DUP1 00001e58: ISZERO 00001e59: PUSH2 0x1429 00001e5c: JUMPI 00001e5d: PUSH1 0x00 00001e5f: DUP1 00001e60: REVERT 00001e61: JUMPDEST 00001e62: POP 00001e63: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001e78: SWAP2 00001e79: SWAP1 00001e7a: SWAP2 00001e7b: AND 00001e7c: PUSH1 0x00 00001e7e: SWAP1 00001e7f: DUP2 00001e80: MSTORE 00001e81: PUSH1 0x19 00001e83: PUSH1 0x20 00001e85: SWAP1 00001e86: DUP2 00001e87: MSTORE 00001e88: PUSH1 0x40 00001e8a: DUP1 00001e8b: DUP4 00001e8c: KECCAK256 00001e8d: SWAP4 00001e8e: DUP4 00001e8f: MSTORE 00001e90: SWAP3 00001e91: SWAP1 00001e92: MSTORE 00001e93: KECCAK256 00001e94: SLOAD 00001e95: PUSH1 0xff 00001e97: AND 00001e98: SWAP1 00001e99: JUMP 00001e9a: JUMPDEST 00001e9b: PUSH1 0x16 00001e9d: SLOAD 00001e9e: DUP2 00001e9f: JUMP 00001ea0: JUMPDEST 00001ea1: PUSH1 0x02 00001ea3: SLOAD 00001ea4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001eb9: AND 00001eba: DUP2 00001ebb: JUMP 00001ebc: JUMPDEST 00001ebd: PUSH1 0x0c 00001ebf: SLOAD 00001ec0: DUP2 00001ec1: JUMP 00001ec2: JUMPDEST 00001ec3: PUSH1 0x0f 00001ec5: SLOAD 00001ec6: DUP2 00001ec7: JUMP 00001ec8: JUMPDEST 00001ec9: PUSH1 0x08 00001ecb: SLOAD 00001ecc: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001ee1: AND 00001ee2: DUP2 00001ee3: JUMP 00001ee4: JUMPDEST 00001ee5: PUSH1 0x01 00001ee7: SLOAD 00001ee8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001efd: AND 00001efe: DUP2 00001eff: JUMP 00001f00: JUMPDEST 00001f01: PUSH1 0x2e 00001f03: SLOAD 00001f04: PUSH21 0x010000000000000000000000000000000000000000 00001f1a: SWAP1 00001f1b: DIV 00001f1c: PUSH1 0xff 00001f1e: AND 00001f1f: DUP2 00001f20: JUMP 00001f21: JUMPDEST 00001f22: PUSH1 0x32 00001f24: SLOAD 00001f25: PUSH1 0xff 00001f27: AND 00001f28: DUP2 00001f29: JUMP 00001f2a: JUMPDEST 00001f2b: PUSH1 0x26 00001f2d: SLOAD 00001f2e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001f43: AND 00001f44: DUP2 00001f45: JUMP 00001f46: JUMPDEST 00001f47: PUSH1 0x32 00001f49: SLOAD 00001f4a: PUSH1 0xff 00001f4c: AND 00001f4d: ISZERO 00001f4e: PUSH2 0x1f53 00001f51: JUMPI 00001f52: INVALID 00001f53: JUMPDEST 00001f54: PUSH1 0x40 00001f56: DUP1 00001f57: MLOAD 00001f58: PUSH32 0x6f72672e7a657070656c696e6f732e70726f78792e61646d696e000000000000 00001f79: DUP2 00001f7a: MSTORE 00001f7b: SWAP1 00001f7c: MLOAD 00001f7d: SWAP1 00001f7e: DUP2 00001f7f: SWAP1 00001f80: SUB 00001f81: PUSH1 0x1a 00001f83: ADD 00001f84: SWAP1 00001f85: KECCAK256 00001f86: PUSH32 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b 00001fa7: EQ 00001fa8: PUSH2 0x1fad 00001fab: JUMPI 00001fac: INVALID 00001fad: JUMPDEST 00001fae: PUSH1 0x40 00001fb0: MLOAD 00001fb1: DUP1 00001fb2: PUSH1 0x23 00001fb4: PUSH2 0x282d 00001fb7: DUP3 00001fb8: CODECOPY 00001fb9: PUSH1 0x40 00001fbb: MLOAD 00001fbc: SWAP1 00001fbd: DUP2 00001fbe: SWAP1 00001fbf: SUB 00001fc0: PUSH1 0x23 00001fc2: ADD 00001fc3: SWAP1 00001fc4: KECCAK256 00001fc5: PUSH32 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3 00001fe6: EQ 00001fe7: SWAP1 00001fe8: POP 00001fe9: PUSH2 0x1fee 00001fec: JUMPI 00001fed: INVALID 00001fee: JUMPDEST 00001fef: PUSH1 0x32 00001ff1: DUP1 00001ff2: SLOAD 00001ff3: PUSH32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 00002014: AND 00002015: PUSH1 0x01 00002017: OR 00002018: SWAP1 00002019: SSTORE 0000201a: PUSH2 0x2022 0000201d: DUP2 0000201e: PUSH2 0x2500 00002021: JUMP 00002022: JUMPDEST 00002023: PUSH2 0x2061 00002026: DUP3 00002027: PUSH1 0x40 00002029: MLOAD 0000202a: DUP1 0000202b: PUSH1 0x40 0000202d: ADD 0000202e: PUSH1 0x40 00002030: MSTORE 00002031: DUP1 00002032: PUSH1 0x05 00002034: DUP2 00002035: MSTORE 00002036: PUSH1 0x20 00002038: ADD 00002039: PUSH32 0x312e302e30000000000000000000000000000000000000000000000000000000 0000205a: DUP2 0000205b: MSTORE 0000205c: POP 0000205d: PUSH2 0x2524 00002060: JUMP 00002061: JUMPDEST 00002062: POP 00002063: POP 00002064: JUMP 00002065: JUMPDEST 00002066: PUSH1 0x00 00002068: DUP2 00002069: DUP2 0000206a: MSTORE 0000206b: PUSH1 0x29 0000206d: PUSH1 0x20 0000206f: MSTORE 00002070: PUSH1 0x40 00002072: DUP2 00002073: KECCAK256 00002074: SLOAD 00002075: PUSH2 0x2108 00002078: JUMPI 00002079: PUSH1 0x08 0000207b: SLOAD 0000207c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002091: AND 00002092: ISZERO 00002093: PUSH2 0x1151 00002096: JUMPI 00002097: PUSH1 0x08 00002099: SLOAD 0000209a: PUSH1 0x40 0000209c: DUP1 0000209d: MLOAD 0000209e: PUSH32 0xf1a153a100000000000000000000000000000000000000000000000000000000 000020bf: DUP2 000020c0: MSTORE 000020c1: PUSH1 0x04 000020c3: DUP2 000020c4: ADD 000020c5: DUP6 000020c6: SWAP1 000020c7: MSTORE 000020c8: SWAP1 000020c9: MLOAD 000020ca: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000020df: SWAP1 000020e0: SWAP3 000020e1: AND 000020e2: SWAP2 000020e3: PUSH4 0xf1a153a1 000020e8: SWAP2 000020e9: PUSH1 0x24 000020eb: DUP1 000020ec: DUP3 000020ed: ADD 000020ee: SWAP3 000020ef: PUSH1 0x20 000020f1: SWAP3 000020f2: SWAP1 000020f3: SWAP2 000020f4: SWAP1 000020f5: DUP3 000020f6: SWAP1 000020f7: SUB 000020f8: ADD 000020f9: DUP2 000020fa: DUP7 000020fb: DUP1 000020fc: EXTCODESIZE 000020fd: ISZERO 000020fe: DUP1 000020ff: ISZERO 00002100: PUSH2 0x1120 00002103: JUMPI 00002104: PUSH1 0x00 00002106: DUP1 00002107: REVERT 00002108: JUMPDEST 00002109: POP 0000210a: PUSH1 0x00 0000210c: SWAP1 0000210d: DUP2 0000210e: MSTORE 0000210f: PUSH1 0x29 00002111: PUSH1 0x20 00002113: MSTORE 00002114: PUSH1 0x40 00002116: SWAP1 00002117: KECCAK256 00002118: SLOAD 00002119: SWAP1 0000211a: JUMP 0000211b: JUMPDEST 0000211c: PUSH2 0x2123 0000211f: PUSH2 0x1944 00002122: JUMP 00002123: JUMPDEST 00002124: PUSH2 0x218e 00002127: JUMPI 00002128: PUSH1 0x40 0000212a: DUP1 0000212b: MLOAD 0000212c: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000214d: DUP2 0000214e: MSTORE 0000214f: PUSH1 0x20 00002151: PUSH1 0x04 00002153: DUP3 00002154: ADD 00002155: DUP2 00002156: SWAP1 00002157: MSTORE 00002158: PUSH1 0x24 0000215a: DUP3 0000215b: ADD 0000215c: MSTORE 0000215d: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572 0000217e: PUSH1 0x44 00002180: DUP3 00002181: ADD 00002182: MSTORE 00002183: SWAP1 00002184: MLOAD 00002185: SWAP1 00002186: DUP2 00002187: SWAP1 00002188: SUB 00002189: PUSH1 0x64 0000218b: ADD 0000218c: SWAP1 0000218d: REVERT 0000218e: JUMPDEST 0000218f: PUSH2 0x1b3e 00002192: DUP2 00002193: PUSH2 0x25d1 00002196: JUMP 00002197: JUMPDEST 00002198: PUSH1 0x23 0000219a: SLOAD 0000219b: PUSH1 0xff 0000219d: AND 0000219e: DUP2 0000219f: JUMP 000021a0: JUMPDEST 000021a1: PUSH2 0x21a8 000021a4: PUSH2 0x2488 000021a7: JUMP 000021a8: JUMPDEST 000021a9: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021be: AND 000021bf: CALLER 000021c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000021d5: AND 000021d6: EQ 000021d7: ISZERO 000021d8: PUSH2 0x229e 000021db: JUMPI 000021dc: PUSH2 0x221b 000021df: DUP6 000021e0: DUP6 000021e1: DUP6 000021e2: DUP1 000021e3: DUP1 000021e4: PUSH1 0x1f 000021e6: ADD 000021e7: PUSH1 0x20 000021e9: DUP1 000021ea: SWAP2 000021eb: DIV 000021ec: MUL 000021ed: PUSH1 0x20 000021ef: ADD 000021f0: PUSH1 0x40 000021f2: MLOAD 000021f3: SWAP1 000021f4: DUP2 000021f5: ADD 000021f6: PUSH1 0x40 000021f8: MSTORE 000021f9: DUP1 000021fa: SWAP4 000021fb: SWAP3 000021fc: SWAP2 000021fd: SWAP1 000021fe: DUP2 000021ff: DUP2 00002200: MSTORE 00002201: PUSH1 0x20 00002203: ADD 00002204: DUP4 00002205: DUP4 00002206: DUP1 00002207: DUP3 00002208: DUP5 00002209: CALLDATACOPY 0000220a: PUSH1 0x00 0000220c: SWAP3 0000220d: ADD 0000220e: SWAP2 0000220f: SWAP1 00002210: SWAP2 00002211: MSTORE 00002212: POP 00002213: PUSH2 0x24ad 00002216: SWAP3 00002217: POP 00002218: POP 00002219: POP 0000221a: JUMP 0000221b: JUMPDEST 0000221c: PUSH1 0x00 0000221e: DUP6 0000221f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002234: AND 00002235: DUP4 00002236: DUP4 00002237: PUSH1 0x40 00002239: MLOAD 0000223a: DUP1 0000223b: DUP4 0000223c: DUP4 0000223d: DUP1 0000223e: DUP3 0000223f: DUP5 00002240: CALLDATACOPY 00002241: PUSH1 0x40 00002243: MLOAD 00002244: SWAP3 00002245: ADD 00002246: SWAP5 00002247: POP 00002248: PUSH1 0x00 0000224a: SWAP4 0000224b: POP 0000224c: SWAP1 0000224d: SWAP2 0000224e: POP 0000224f: POP 00002250: DUP1 00002251: DUP4 00002252: SUB 00002253: DUP2 00002254: DUP6 00002255: GAS 00002256: DELEGATECALL 00002257: SWAP2 00002258: POP 00002259: POP 0000225a: RETURNDATASIZE 0000225b: DUP1 0000225c: PUSH1 0x00 0000225e: DUP2 0000225f: EQ 00002260: PUSH2 0x2285 00002263: JUMPI 00002264: PUSH1 0x40 00002266: MLOAD 00002267: SWAP2 00002268: POP 00002269: PUSH1 0x1f 0000226b: NOT 0000226c: PUSH1 0x3f 0000226e: RETURNDATASIZE 0000226f: ADD 00002270: AND 00002271: DUP3 00002272: ADD 00002273: PUSH1 0x40 00002275: MSTORE 00002276: RETURNDATASIZE 00002277: DUP3 00002278: MSTORE 00002279: RETURNDATASIZE 0000227a: PUSH1 0x00 0000227c: PUSH1 0x20 0000227e: DUP5 0000227f: ADD 00002280: RETURNDATACOPY 00002281: PUSH2 0x228a 00002284: JUMP 00002285: JUMPDEST 00002286: PUSH1 0x60 00002288: SWAP2 00002289: POP 0000228a: JUMPDEST 0000228b: POP 0000228c: POP 0000228d: SWAP1 0000228e: POP 0000228f: DUP1 00002290: PUSH2 0x2298 00002293: JUMPI 00002294: PUSH1 0x00 00002296: DUP1 00002297: REVERT 00002298: JUMPDEST 00002299: POP 0000229a: PUSH2 0x22a6 0000229d: JUMP 0000229e: JUMPDEST 0000229f: PUSH2 0x22a6 000022a2: PUSH2 0x102f 000022a5: JUMP 000022a6: JUMPDEST 000022a7: POP 000022a8: POP 000022a9: POP 000022aa: POP 000022ab: POP 000022ac: JUMP 000022ad: JUMPDEST 000022ae: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022c3: DUP2 000022c4: AND 000022c5: PUSH1 0x00 000022c7: SWAP1 000022c8: DUP2 000022c9: MSTORE 000022ca: PUSH1 0x20 000022cc: DUP1 000022cd: MSTORE 000022ce: PUSH1 0x40 000022d0: DUP2 000022d1: KECCAK256 000022d2: SLOAD 000022d3: PUSH2 0x2367 000022d6: JUMPI 000022d7: PUSH1 0x08 000022d9: SLOAD 000022da: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000022ef: AND 000022f0: ISZERO 000022f1: PUSH2 0x1151 000022f4: JUMPI 000022f5: PUSH1 0x08 000022f7: SLOAD 000022f8: PUSH1 0x40 000022fa: DUP1 000022fb: MLOAD 000022fc: PUSH32 0xfa845ca900000000000000000000000000000000000000000000000000000000 0000231d: DUP2 0000231e: MSTORE 0000231f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00002334: DUP6 00002335: DUP2 00002336: AND 00002337: PUSH1 0x04 00002339: DUP4 0000233a: ADD 0000233b: MSTORE 0000233c: SWAP2 0000233d: MLOAD 0000233e: SWAP2 0000233f: SWAP1 00002340: SWAP3 00002341: AND 00002342: SWAP2 00002343: PUSH4 0xfa845ca9 00002348: SWAP2 00002349: PUSH1 0x24 0000234b: DUP1 0000234c: DUP4 0000234d: ADD 0000234e: SWAP3 0000234f: PUSH1 0x20 00002351: SWAP3 00002352: SWAP2 00002353: SWAP1 00002354: DUP3 00002355: SWAP1 00002356: SUB 00002357: ADD 00002358: DUP2 00002359: DUP7 0000235a: DUP1 0000235b: EXTCODESIZE 0000235c: ISZERO 0000235d: DUP1 0000235e: ISZERO 0000235f: PUSH2 0x1120 00002362: JUMPI 00002363: PUSH1 0x00 00002365: DUP1 00002366: REVERT 00002367: JUMPDEST 00002368: POP 00002369: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000237e: AND 0000237f: PUSH1 0x00 00002381: SWAP1 00002382: DUP2 00002383: MSTORE 00002384: PUSH1 0x20 00002386: DUP1 00002387: MSTORE 00002388: PUSH1 0x40 0000238a: SWAP1 0000238b: KECCAK256 0000238c: SLOAD 0000238d: SWAP1 0000238e: JUMP 0000238f: JUMPDEST 00002390: PUSH1 0x07 00002392: SLOAD 00002393: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023a8: AND 000023a9: DUP2 000023aa: JUMP 000023ab: JUMPDEST 000023ac: PUSH2 0x23b3 000023af: PUSH2 0x2488 000023b2: JUMP 000023b3: JUMPDEST 000023b4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023c9: AND 000023ca: CALLER 000023cb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000023e0: AND 000023e1: EQ 000023e2: ISZERO 000023e3: PUSH2 0x2437 000023e6: JUMPI 000023e7: PUSH1 0x40 000023e9: MLOAD 000023ea: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000240b: DUP2 0000240c: MSTORE 0000240d: PUSH1 0x04 0000240f: ADD 00002410: DUP1 00002411: DUP1 00002412: PUSH1 0x20 00002414: ADD 00002415: DUP3 00002416: DUP2 00002417: SUB 00002418: DUP3 00002419: MSTORE 0000241a: PUSH1 0x32 0000241c: DUP2 0000241d: MSTORE 0000241e: PUSH1 0x20 00002420: ADD 00002421: DUP1 00002422: PUSH2 0x279f 00002425: PUSH1 0x32 00002427: SWAP2 00002428: CODECOPY 00002429: PUSH1 0x40 0000242b: ADD 0000242c: SWAP2 0000242d: POP 0000242e: POP 0000242f: PUSH1 0x40 00002431: MLOAD 00002432: DUP1 00002433: SWAP2 00002434: SUB 00002435: SWAP1 00002436: REVERT 00002437: JUMPDEST 00002438: PUSH2 0x1047 0000243b: PUSH2 0x1047 0000243e: JUMP 0000243f: JUMPDEST 00002440: PUSH32 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3 00002461: SLOAD 00002462: SWAP1 00002463: JUMP 00002464: JUMPDEST 00002465: CALLDATASIZE 00002466: PUSH1 0x00 00002468: DUP1 00002469: CALLDATACOPY 0000246a: PUSH1 0x00 0000246c: DUP1 0000246d: CALLDATASIZE 0000246e: PUSH1 0x00 00002470: DUP5 00002471: GAS 00002472: DELEGATECALL 00002473: RETURNDATASIZE 00002474: PUSH1 0x00 00002476: DUP1 00002477: RETURNDATACOPY 00002478: DUP1 00002479: DUP1 0000247a: ISZERO 0000247b: PUSH2 0x2483 0000247e: JUMPI 0000247f: RETURNDATASIZE 00002480: PUSH1 0x00 00002482: RETURN 00002483: JUMPDEST 00002484: RETURNDATASIZE 00002485: PUSH1 0x00 00002487: REVERT 00002488: JUMPDEST 00002489: PUSH32 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b 000024aa: SLOAD 000024ab: SWAP1 000024ac: JUMP 000024ad: JUMPDEST 000024ae: PUSH2 0x24b7 000024b1: DUP3 000024b2: DUP3 000024b3: PUSH2 0x2524 000024b6: JUMP 000024b7: JUMPDEST 000024b8: PUSH1 0x40 000024ba: MLOAD 000024bb: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000024d0: DUP4 000024d1: AND 000024d2: SWAP1 000024d3: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b 000024f4: SWAP1 000024f5: PUSH1 0x00 000024f7: SWAP1 000024f8: LOG2 000024f9: POP 000024fa: POP 000024fb: JUMP 000024fc: JUMPDEST 000024fd: CALLER 000024fe: SWAP1 000024ff: JUMP 00002500: JUMPDEST 00002501: PUSH32 0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b 00002522: SSTORE 00002523: JUMP 00002524: JUMPDEST 00002525: PUSH2 0x2543 00002528: DUP3 00002529: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000253e: AND 0000253f: PUSH2 0x26ca 00002542: JUMP 00002543: JUMPDEST 00002544: PUSH2 0x2598 00002547: JUMPI 00002548: PUSH1 0x40 0000254a: MLOAD 0000254b: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 0000256c: DUP2 0000256d: MSTORE 0000256e: PUSH1 0x04 00002570: ADD 00002571: DUP1 00002572: DUP1 00002573: PUSH1 0x20 00002575: ADD 00002576: DUP3 00002577: DUP2 00002578: SUB 00002579: DUP3 0000257a: MSTORE 0000257b: PUSH1 0x3b 0000257d: DUP2 0000257e: MSTORE 0000257f: PUSH1 0x20 00002581: ADD 00002582: DUP1 00002583: PUSH2 0x2850 00002586: PUSH1 0x3b 00002588: SWAP2 00002589: CODECOPY 0000258a: PUSH1 0x40 0000258c: ADD 0000258d: SWAP2 0000258e: POP 0000258f: POP 00002590: PUSH1 0x40 00002592: MLOAD 00002593: DUP1 00002594: SWAP2 00002595: SUB 00002596: SWAP1 00002597: REVERT 00002598: JUMPDEST 00002599: DUP1 0000259a: MLOAD 0000259b: PUSH2 0x25ab 0000259e: SWAP1 0000259f: PUSH1 0x31 000025a1: SWAP1 000025a2: PUSH1 0x20 000025a4: DUP5 000025a5: ADD 000025a6: SWAP1 000025a7: PUSH2 0x2706 000025aa: JUMP 000025ab: JUMPDEST 000025ac: POP 000025ad: POP 000025ae: PUSH32 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3 000025cf: SSTORE 000025d0: JUMP 000025d1: JUMPDEST 000025d2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000025e7: DUP2 000025e8: AND 000025e9: PUSH2 0x263d 000025ec: JUMPI 000025ed: PUSH1 0x40 000025ef: MLOAD 000025f0: PUSH32 0x08c379a000000000000000000000000000000000000000000000000000000000 00002611: DUP2 00002612: MSTORE 00002613: PUSH1 0x04 00002615: ADD 00002616: DUP1 00002617: DUP1 00002618: PUSH1 0x20 0000261a: ADD 0000261b: DUP3 0000261c: DUP2 0000261d: SUB 0000261e: DUP3 0000261f: MSTORE 00002620: PUSH1 0x26 00002622: DUP2 00002623: MSTORE 00002624: PUSH1 0x20 00002626: ADD 00002627: DUP1 00002628: PUSH2 0x27d1 0000262b: PUSH1 0x26 0000262d: SWAP2 0000262e: CODECOPY 0000262f: PUSH1 0x40 00002631: ADD 00002632: SWAP2 00002633: POP 00002634: POP 00002635: PUSH1 0x40 00002637: MLOAD 00002638: DUP1 00002639: SWAP2 0000263a: SUB 0000263b: SWAP1 0000263c: REVERT 0000263d: JUMPDEST 0000263e: PUSH1 0x00 00002640: DUP1 00002641: SLOAD 00002642: PUSH1 0x40 00002644: MLOAD 00002645: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000265a: DUP1 0000265b: DUP6 0000265c: AND 0000265d: SWAP4 0000265e: SWAP3 0000265f: AND 00002660: SWAP2 00002661: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0 00002682: SWAP2 00002683: LOG3 00002684: PUSH1 0x00 00002686: DUP1 00002687: SLOAD 00002688: PUSH32 0xffffffffffffffffffffffff0000000000000000000000000000000000000000 000026a9: AND 000026aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000026bf: SWAP3 000026c0: SWAP1 000026c1: SWAP3 000026c2: AND 000026c3: SWAP2 000026c4: SWAP1 000026c5: SWAP2 000026c6: OR 000026c7: SWAP1 000026c8: SSTORE 000026c9: JUMP 000026ca: JUMPDEST 000026cb: PUSH1 0x00 000026cd: DUP2 000026ce: EXTCODEHASH 000026cf: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 000026f0: DUP2 000026f1: DUP2 000026f2: EQ 000026f3: DUP1 000026f4: ISZERO 000026f5: SWAP1 000026f6: PUSH2 0x26fe 000026f9: JUMPI 000026fa: POP 000026fb: DUP2 000026fc: ISZERO 000026fd: ISZERO 000026fe: JUMPDEST 000026ff: SWAP5 00002700: SWAP4 00002701: POP 00002702: POP 00002703: POP 00002704: POP 00002705: JUMP 00002706: JUMPDEST 00002707: DUP3 00002708: DUP1 00002709: SLOAD 0000270a: PUSH1 0x01 0000270c: DUP2 0000270d: PUSH1 0x01 0000270f: AND 00002710: ISZERO 00002711: PUSH2 0x0100 00002714: MUL 00002715: SUB 00002716: AND 00002717: PUSH1 0x02 00002719: SWAP1 0000271a: DIV 0000271b: SWAP1 0000271c: PUSH1 0x00 0000271e: MSTORE 0000271f: PUSH1 0x20 00002721: PUSH1 0x00 00002723: KECCAK256 00002724: SWAP1 00002725: PUSH1 0x1f 00002727: ADD 00002728: PUSH1 0x20 0000272a: SWAP1 0000272b: DIV 0000272c: DUP2 0000272d: ADD 0000272e: SWAP3 0000272f: DUP3 00002730: PUSH1 0x1f 00002732: LT 00002733: PUSH2 0x2747 00002736: JUMPI 00002737: DUP1 00002738: MLOAD 00002739: PUSH1 0xff 0000273b: NOT 0000273c: AND 0000273d: DUP4 0000273e: DUP1 0000273f: ADD 00002740: OR 00002741: DUP6 00002742: SSTORE 00002743: PUSH2 0x2774 00002746: JUMP 00002747: JUMPDEST 00002748: DUP3 00002749: DUP1 0000274a: ADD 0000274b: PUSH1 0x01 0000274d: ADD 0000274e: DUP6 0000274f: SSTORE 00002750: DUP3 00002751: ISZERO 00002752: PUSH2 0x2774 00002755: JUMPI 00002756: SWAP2 00002757: DUP3 00002758: ADD 00002759: JUMPDEST 0000275a: DUP3 0000275b: DUP2 0000275c: GT 0000275d: ISZERO 0000275e: PUSH2 0x2774 00002761: JUMPI 00002762: DUP3 00002763: MLOAD 00002764: DUP3 00002765: SSTORE 00002766: SWAP2 00002767: PUSH1 0x20 00002769: ADD 0000276a: SWAP2 0000276b: SWAP1 0000276c: PUSH1 0x01 0000276e: ADD 0000276f: SWAP1 00002770: PUSH2 0x2759 00002773: JUMP 00002774: JUMPDEST 00002775: POP 00002776: PUSH2 0x2780 00002779: SWAP3 0000277a: SWAP2 0000277b: POP 0000277c: PUSH2 0x2784 0000277f: JUMP 00002780: JUMPDEST 00002781: POP 00002782: SWAP1 00002783: JUMP 00002784: JUMPDEST 00002785: PUSH2 0x11b7 00002788: SWAP2 00002789: SWAP1 0000278a: JUMPDEST 0000278b: DUP1 0000278c: DUP3 0000278d: GT 0000278e: ISZERO 0000278f: PUSH2 0x2780 00002792: JUMPI 00002793: PUSH1 0x00 00002795: DUP2 00002796: SSTORE 00002797: PUSH1 0x01 00002799: ADD 0000279a: PUSH2 0x278a 0000279d: JUMP 0000279e: INVALID 0000279f: NUMBER 000027a0: PUSH2 0x6e6e 000027a3: PUSH16 0x742063616c6c2066616c6c6261636b20 000027b4: PUSH7 0x756e6374696f6e 000027bc: KECCAK256 000027bd: PUSH7 0x726f6d20746865 000027c5: KECCAK256 000027c6: PUSH17 0x726f78792061646d696e4f776e61626c65 000027d8: GASPRICE 000027d9: KECCAK256 000027da: PUSH15 0x6577206f776e657220697320746865 000027ea: KECCAK256 000027eb: PUSH27 0x65726f206164647265737343616e6e6f74206368616e6765207468 00002807: PUSH6 0x2061646d696e 0000280e: KECCAK256 0000280f: PUSH16 0x6620612070726f787920746f20746865 00002820: KECCAK256 00002821: PUSH27 0x65726f20616464726573736f72672e7a657070656c696e6f732e70 0000283d: PUSH19 0x6f78792e696d706c656d656e746174696f6e43 00002851: PUSH2 0x6e6e 00002854: PUSH16 0x742073657420612070726f787920696d 00002865: PUSH17 0x6c656d656e746174696f6e20746f206120 00002877: PUSH15 0x6f6e2d636f6e747261637420616464 00002887: PUSH19 0x657373a265627a7a7231582035045b0a1a3555 0000289b: BASEFEE 0000289c: UNKNOWN(0xD3) 0000289d: EXP 0000289e: OR 0000289f: PUSH12 0xee848f12e89716dcc802aae0 000028ac: PUSH5 0x578a849267 000028b2: ADDRESS 000028b3: PUSH26
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | upgradeability | detector | Untrusted DELEGATECALL target reachable | 55 | no | no |
viewtrace_id: 0xd463738f6023a4ec8e0090a0d091fc455c3b587d89342f536f73ab3c7c6a6e8b
validation_json{
"sink": "DELEGATECALL",
"errors": 0,
"status": "unknown",
"attempts": 192,
"trace_id": "0xd463738f6023a4ec8e0090a0d091fc455c3b587d89342f536f73ab3c7c6a6e8b",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": null,
"matched_probe": null,
"target_varies": null,
"classification": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xf99eec8d",
"selector": "0xf99eec8d",
"calldata_variants": [
"0xf99eec8d",
"0xf99eec8d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa845ca9",
"selector": "0xfa845ca9",
"calldata_variants": [
"0xfa845ca9",
"0xfa845ca90000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfbf35f46",
"selector": "0xfbf35f46",
"calldata_variants": [
"0xfbf35f46",
"0xfbf35f460000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf2fde38b",
"selector": "0xf2fde38b",
"calldata_variants": [
"0xf2fde38b",
"0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6558b00",
"selector": "0xf6558b00",
"calldata_variants": [
"0xf6558b00",
"0xf6558b000000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xec556889",
"selector": "0xec556889",
"calldata_variants": [
"0xec556889",
"0xec5568890000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf09a4016",
"selector": "0xf09a4016",
"calldata_variants": [
"0xf09a4016",
"0xf09a40160000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1a153a1",
"selector": "0xf1a153a1",
"calldata_variants": [
"0xf1a153a1",
"0xf1a153a10000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 8790,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
},
{
"pc": 9330,
"opcode": "DELEGATECALL",
"returndata_checked": null,
"value_expression_category": "n/a",
"target_expression_category": "computed"
}
],
"guards_detected": [
{
"pc": 4665,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 6728,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 8639,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
},
{
"pc": 9162,
"type": "msg_sender_eq_const",
"value": "0xffffffffffffffffffffffffffffffffffffffff"
}
],
"delegatecall_count": 2,
"untrusted_delegatecall_count": 2
}
|
| medium | upgradeability | cast | DELEGATECALL present | 80 | no | — |
viewevidence_json{
"notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
"delegatecall_count": 2
}
|
| medium | other | codex | Computed DELEGATECALL target reachable (potentially untrusted) | 75 | no | — |
viewevidence_json{
"evidence": "Detector flagged 2 DELEGATECALL sites with computed targets and no validated guard; evidence_json shows untrusted_delegatecall_count=2 with target_expression_category=computed. Callsites at pc 8790 and 9330. Storage reads occur immediately around delegatecall path (e.g., SLOAD at pc 9313 slot 0x7050c9e0... and pc 9386 slot 0x10d6a54a...), indicating the target may be derived from storage. Guard detection only saw msg.sender==0xffff.. (likely unsatisfiable), so access control is unclear.",
"locations": [
"pc:0x2256",
"pc:0x2472"
],
"recommendation": "Ensure delegatecall targets are immutable or only changeable by a well-guarded admin. Consider explicit allowlists or codehash checks for implementations/facets, and emit events on upgrades. If this is intended as a proxy/diamond pattern, clearly gate upgrade or selector-to-facet management functions.",
"exploit_scenario": "If an attacker can influence the storage/mapping used to resolve the delegatecall target (e.g., a facet/implementation address), they can point it to malicious code and gain arbitrary storage writes, asset drains, or ownership takeover via delegatecall. The bytecode analysis does not confirm who controls the target, so impact depends on access control in the (unknown) setter paths."
}
|
| info | other | cast | Heavy EXTCODE*/BALANCE usage | 55 | no | — |
viewevidence_json{
"notes": "frequent external code or balance checks; may indicate introspection or validation logic",
"ext_balance_count": 11
}
|