019bab3b-aaaf-72e1-b91d-acd00fc28602
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 |
|---|---|---|---|---|
| 38373 | artifact.fetch | complete | 1 / 3 | 3 months ago |
| 38374 | proxy.resolve | complete | 1 / 3 | 3 months ago |
| 38375 | tool.cast_disasm | complete | 1 / 3 | 3 months ago |
| 38376 | analysis.bundle | complete | 1 / 3 | 3 months ago |
| 38377 | capability.graph | complete | 1 / 3 | 3 months ago |
| 38378 | detector.run | complete | 1 / 3 | 3 months ago |
| 38379 | validation.fork | complete | 1 / 3 | 3 months ago |
| 38976 | report.consolidate | complete | 1 / 6 | 3 months ago |
{
"status": "not_proxy"
}
No slither job recorded yet.
{"no_findings":false,"summary":"Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.","findings":[{"severity":"medium","category":"access_control","title":"Low-level CALLs with computed target/value lack visible authorization","exploit_scenario":"If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass.","recommendation":"Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.","evidence":"Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).","locations":["pc:0x624","pc:0xdb2","pc:0x1046"]},{"severity":"low","category":"reentrancy","title":"External CALLs combined with storage writes; no reentrancy guard detected","exploit_scenario":"If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain.","recommendation":"Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.","evidence":"CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.","locations":["pc:0x624","pc:0xdb2","pc:0x1046","pc:0x0ba4","pc:0x1239","pc:0x132b"]},{"severity":"low","category":"other","title":"Low-level token transfer call does not appear to validate return data","exploit_scenario":"If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches.","recommendation":"Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.","evidence":"CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.","locations":["pc:0xdb2","pc:0x1046"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-6fvrago8
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019bab71-e2f0-75f2-9045-11bc08ec449b
--------
user
You are a security auditor. You ONLY have runtime bytecode + analysis artifacts.
You MUST read `BYTECODE_BUNDLE.json` before concluding; it contains the bytecode summary,
evidence bundle, callsites, storage slots, and detector findings.
Special cases when reasoning from bytecode (be explicit about uncertainty):
- Selector inference is best-effort; missing selectors are common.
- Fallback/receive paths may be the only entrypoints.
- CALL vs DELEGATECALL semantics differ; DELEGATECALL executes in caller storage.
- Proxy patterns (EIP-1967, minimal proxies, beacon) change which storage is authoritative.
- Storage slots are raw; mappings/arrays appear via keccak patterns, names are unknown.
- Guard detection is heuristic; absence of guards does NOT mean unguarded.
- Returndata checking is unknown unless explicitly shown in evidence.
- Precompiles (0x1..0x9) and common ERC20 transfer selectors may appear; do not over-claim.
Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title.
- Locations can be pc references like "pc:0x123" or selectors like "selector:0xa9059cbb".
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation,
accounting/invariant breaks, dangerous delegatecall, and untrusted external calls.
Be conservative: if evidence is weak, mark severity low/medium and explain why.
mcp startup: no servers
thinking
**Preparing to read BYTECODE_BUNDLE.json**
exec
/bin/bash -lc 'rg --files' in /tmp/codex-6fvrago8 succeeded in 12ms:
codex-output-schema.json
BYTECODE_BUNDLE.json
exec
/bin/bash -lc 'cat BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 37ms:
{
"analysis_artifact": {
"address": "0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c",
"artifact_hash": "0x630c62c9bfdada79bd4aa1673eb5e358b311a2325ab16d60f80a26ea5150a13f",
"artifact_json": {
"auth": {
"guards": []
},
"basic_blocks": [
{
"end_pc": 12,
"hash": "0x8cf08aeacb84a1bc630037c3757d252bc63c322d163054cb7b0b9efd67d5a274",
"opcodes": [
"PUSH1",
"PUSH1",
"MSTORE",
"PUSH1",
"CALLDATASIZE",
"LT",
"PUSH2",
thinking
**Parsing findings and searching proxies**
exec
/bin/bash -lc 'rg -n "proxy|EIP-1967|beacon|delegatecall|selfdestruct|storage|slot|fallback|receive|upgrade" BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 9ms:
5232: "delegatecall": 0,
5233: "selfdestruct": 0,
5236: "storage": {
5238: "slots": [
5242: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5247: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5252: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5257: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5262: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5267: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5272: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5286: "delegatecall": 0,
5287: "selfdestruct": 0,
5290: "storage": {
5292: "slots": [
5296: "slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
5301: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5306: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5311: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
5316: "slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
thinking
**Searching for functions and selectors**
exec
/bin/bash -lc 'rg -n "selector|function|functions|callsite|fallback|receive|proxy_evidence|storage" BYTECODE_BUNDLE.json' in /tmp/codex-6fvrago8 succeeded in 6ms:
4263: "callsites": [
5184: "dispatcher_type": "selector_jump_table",
5185: "function_entries": [
5188: "selector": "0xffffffff"
5192: "selector": "0x313ce567"
5196: "selector": "0x4123cb6b"
5200: "selector": "0x472d71d1"
5204: "selector": "0x746c9171"
5208: "selector": "0x86435354"
5212: "selector": "0x88671ad4"
5216: "selector": "0xaaf5eb68"
5220: "selector": "0xbfe370d9"
5223: "functions": [
5229: "selector": "0xffffffff",
5236: "storage": {
5283: "selector": "0x313ce567",
5290: "storage": {
5337: "selector": "0x4123cb6b",
5344: "storage": {
5391: "selector": "0x472d71d1",
thinking
**Extracting callsite context**
exec
/bin/bash -lc "sed -n '4240,4320p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
"STOP"
],
"start_pc": 5009
},
{
"end_pc": 5052,
"hash": "0x9ca7702bcc96b6da41becbb5d9ce6a188ca9313cc93eccd42dfed8cde6b0a60c",
"opcodes": [
"OP_A1",
"PUSH6",
"SHA3",
"RETURNDATASIZE",
"OP_25",
"OP_F8",
"OP_4A",
"OP_B7",
"GASLIMIT",
"PUSH26",
"OP_29"
],
thinking
**Identifying storage sections**
exec
/bin/bash -lc "sed -n '5168,5255p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 29ms:
"from": "bb:4884",
"to": "bb:4906",
"type": "control_flow_fallthrough"
},
{
"from": "bb:4907",
"to": "bb:4873",
"type": "control_flow"
},
{
"from": "bb:4996",
"to": "bb:5001",
"type": "control_flow_fallthrough"
}
],
"cfg_hash": "0x6b373b79285b5d8f76bf8d8df9c051b898de3053f8044cf0540cbeebe9ba3331",
"dispatcher_type": "selector_jump_table",
"function_entries": [
{
"entry_pc": 261,
exec
/bin/bash -lc "sed -n '5255,5345p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
"op": "SLOAD",
"pc": 2757,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2957,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4833,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4876,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
exec
/bin/bash -lc "sed -n '5345,5445p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
"reads": 13,
"slots": [
{
"op": "SLOAD",
"pc": 1282,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1616,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2711,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2757,
exec
/bin/bash -lc "sed -n '5445,5565p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 27ms:
"selector": "0x746c9171",
"sinks": {
"call": 3,
"delegatecall": 0,
"selfdestruct": 0,
"staticcall": 0
},
"storage": {
"reads": 13,
"slots": [
{
"op": "SLOAD",
"pc": 1282,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1616,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
exec
/bin/bash -lc "sed -n '5565,5685p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 19ms:
"pc": 1282,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
},
{
"op": "SLOAD",
"pc": 1616,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2711,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2757,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
exec
/bin/bash -lc "sed -n '5685,5755p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 14ms:
},
{
"op": "SLOAD",
"pc": 2757,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 2957,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4833,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4876,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
exec
/bin/bash -lc "sed -n '5755,5835p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
{
"op": "SLOAD",
"pc": 2957,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4833,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000000"
},
{
"op": "SLOAD",
"pc": 4876,
"slot": "0x0000000000000000000000000000000000000000000000000000000000000001"
}
],
"writes": 3
},
"version": "analysis_artifact_v1"
},
thinking
**Examining bytecode for external calls and reentrancy**
exec
/bin/bash -lc "rg -n \"pc\":\\s*1572 BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 exited 1 in 16ms:
thinking
**Considering search syntax for exact match**
exec
/bin/bash -lc "rg -n \"\\\"pc\\\"\\s*:\\s*1572\" BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 7ms:
4266: "pc": 1572,
8017: "pc": 1572,
8105: "pc": 1572,
8157: "pc": 1572,
thinking
**Checking context around line 8105**
exec
/bin/bash -lc "sed -n '8070,8145p' BYTECODE_BUNDLE.json" in /tmp/codex-6fvrago8 succeeded in 6ms:
"type": "function"
},
{
"entry_pc": 2868243304,
"id": "fn:0x88671ad4",
"selector": "0x88671ad4",
"type": "function"
},
{
"entry_pc": 3219353817,
"id": "fn:0xaaf5eb68",
"selector": "0xaaf5eb68",
"type": "function"
},
{
"entry_pc": 0,
"id": "fn:0xbfe370d9",
"selector": "0xbfe370d9",
"type": "function"
}
thinking
**Analyzing callsites and bytecode blocks**
exec
/bin/bash -lc "python - <<'PY'
import json
import bisect
import sys
with open('BYTECODE_BUNDLE.json','r') as f:
data=json.load(f)
bbs = data['analysis_artifact']['artifact_json']['basic_blocks']
call_pcs=[1572,3506,4166]
for pc in call_pcs:
block=None
for bb in bbs:
if bb['start_pc']<=pc<=bb['end_pc']:
block=bb
break
print('pc',pc,'block',block['start_pc'],block['end_pc'])
# show opcodes
print('opcodes:',block['opcodes'])
print()
PY" in /tmp/codex-6fvrago8 succeeded in 32ms:
pc 1572 block 1470 1579
opcodes: ['JUMPDEST', 'PUSH1', 'OP_86', 'OP_82', 'OP_87', 'OP_87', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'MSTORE', 'PUSH1', 'MLOAD', 'OP_80', 'OP_85', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'PUSH1', 'AND', 'PUSH1', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_94', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'SUB', 'OP_90', 'OP_80', 'OP_84', 'SUB', 'OP_90', 'PUSH1', 'OP_86', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
pc 3506 block 3375 3519
opcodes: ['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH1', 'MLOAD', 'OP_83', 'PUSH4', 'AND', 'PUSH29', 'MUL', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_80', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_92', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'PUSH1', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'OP_82', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
pc 4166 block 4135 4186
opcodes: ['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_90', 'OP_81', 'ISZERO', 'MUL', 'OP_90', 'PUSH1', 'MLOAD', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_88', 'OP_88', 'CALL', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'PUSH1', 'ISZERO', 'ISZERO', 'OP_83', 'ISZERO', 'ISZERO', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']
thinking
**Analyzing CALL and conditional jump opcodes**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=data['analysis_artifact']['artifact_json']['basic_blocks']
# sort by start_pc
bbs=sorted(bbs, key=lambda b:b['start_pc'])
# helper to get block index by start_pc
for i, bb in enumerate(bbs):
if bb['start_pc']<=1572<=bb['end_pc']:
idx=i
break
for j in range(idx-2, idx+4):
if 0<=j<len(bbs):
bb=bbs[j]
print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
print(bb['opcodes'])
print()
PY" in /tmp/codex-6fvrago8 succeeded in 77ms:
block 53 start 1423 end 1428
['JUMPDEST', 'ISZERO', 'PUSH2', 'JUMPI']
block 54 start 1429 end 1469
['PUSH1', 'OP_83', 'PUSH32', 'OP_90', 'DIV', 'ADD', 'OP_90', 'POP']
block 55 start 1470 end 1579
['JUMPDEST', 'PUSH1', 'OP_86', 'OP_82', 'OP_87', 'OP_87', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'MSTORE', 'PUSH1', 'MLOAD', 'OP_80', 'OP_85', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'PUSH1', 'AND', 'PUSH1', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_94', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'PUSH1', 'OP_81', 'SUB', 'OP_90', 'OP_80', 'OP_84', 'SUB', 'OP_90', 'PUSH1', 'OP_86', 'GAS', 'CALL', 'ISZERO', 'OP_80', 'ISZERO', 'PUSH2', 'JUMPI']
block 56 start 1580 end 1588
['RETURNDATASIZE', 'PUSH1', 'OP_80', 'RETURNDATACOPY', 'RETURNDATASIZE', 'PUSH1', 'REVERT']
block 57 start 1589 end 1612
['JUMPDEST', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'SUB', 'MLOAD', 'OP_91', 'POP', 'OP_81', 'OP_91', 'POP', 'POP', 'OP_94', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'JUMP']
block 58 start 1613 end 1618
['JUMPDEST', 'PUSH1', 'SLOAD', 'OP_81', 'JUMP']
thinking
**Analyzing CALL and revert logic**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])
# find block containing 3506
for i, bb in enumerate(bbs):
if bb['start_pc']<=3506<=bb['end_pc']:
idx=i; break
for j in range(idx-2, idx+4):
if 0<=j<len(bbs):
bb=bbs[j]
print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
print(bb['opcodes'])
print()
PY" in /tmp/codex-6fvrago8 succeeded in 26ms:
block 120 start 3351 end 3373
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_87', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
block 121 start 3374 end 3374
['INVALID']
block 122 start 3375 end 3519
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH1', 'MLOAD', 'OP_83', 'PUSH4', 'AND', 'PUSH29', 'MUL', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_80', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_92', 'POP', 'POP', 'POP', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'PUSH1', 'OP_87', 'GAS', 'CALL', 'OP_92', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'OP_82', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
block 123 start 3520 end 3523
['PUSH1', 'OP_80', 'REVERT']
block 124 start 3524 end 3570
['JUMPDEST', 'PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
block 125 start 3571 end 3571
['INVALID']
thinking
**Analyzing call and revert logic**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])
# find block containing 4166
for i, bb in enumerate(bbs):
if bb['start_pc']<=4166<=bb['end_pc']:
idx=i; break
for j in range(idx-2, idx+4):
if 0<=j<len(bbs):
bb=bbs[j]
print('block',j,'start',bb['start_pc'],'end',bb['end_pc'])
print(bb['opcodes'])
print()
PY" in /tmp/codex-6fvrago8 succeeded in 25ms:
block 143 start 4086 end 4133
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'PUSH20', 'AND', 'PUSH2', 'OP_8A', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
block 144 start 4134 end 4134
['INVALID']
block 145 start 4135 end 4186
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_90', 'OP_81', 'ISZERO', 'MUL', 'OP_90', 'PUSH1', 'MLOAD', 'PUSH1', 'PUSH1', 'MLOAD', 'OP_80', 'OP_83', 'SUB', 'OP_81', 'OP_85', 'OP_88', 'OP_88', 'CALL', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'OP_92', 'POP', 'PUSH1', 'ISZERO', 'ISZERO', 'OP_83', 'ISZERO', 'ISZERO', 'EQ', 'ISZERO', 'PUSH2', 'JUMPI']
block 146 start 4187 end 4232
['PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
block 147 start 4233 end 4233
['INVALID']
block 148 start 4234 end 4256
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_87', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
thinking
**Analyzing CALL and revert jumps**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
bbs=sorted(data['analysis_artifact']['artifact_json']['basic_blocks'], key=lambda b:b['start_pc'])
# find block with start 4257
for bb in bbs:
if bb['start_pc'] in (4257,4258,4419,4420):
print('block start',bb['start_pc'],'end',bb['end_pc'])
print(bb['opcodes'])
print()
PY" in /tmp/codex-6fvrago8 succeeded in 28ms:
block start 4257 end 4257
['INVALID']
block start 4258 end 4419
['JUMPDEST', 'OP_90', 'PUSH1', 'ADD', 'OP_90', 'PUSH1', 'MUL', 'ADD', 'MLOAD', 'OP_8B', 'OP_88', 'PUSH1', 'MLOAD', 'OP_80', 'OP_86', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_85', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_84', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_83', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_82', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_95', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'PUSH1', 'MLOAD', 'OP_80', 'OP_91', 'SUB', 'OP_90', 'OP_A1', 'PUSH2', 'JUMP']
block start 4420 end 4466
['JUMPDEST', 'PUSH32', 'OP_8B', 'OP_8B', 'OP_86', 'OP_81', 'MLOAD', 'OP_81', 'LT', 'ISZERO', 'ISZERO', 'PUSH2', 'JUMPI']
thinking
**Analyzing contract call patterns and potential risks**
exec
/bin/bash -lc "python - <<'PY'
import json
with open('BYTECODE_BUNDLE.json') as f:
data=json.load(f)
sstore_pcs=[]
for bb in data['analysis_artifact']['artifact_json']['basic_blocks']:
if 'SSTORE' in bb['opcodes']:
# need to compute pc? we only have start/end; but we can approximate by listing block range
sstore_pcs.append((bb['start_pc'], bb['end_pc'], bb['opcodes']))
print('SSTORE blocks:', len(sstore_pcs))
for start,end,ops in sstore_pcs[:10]:
print(start,end,ops)
PY" in /tmp/codex-6fvrago8 succeeded in 32ms:
SSTORE blocks: 3
2980 3077 ['JUMPDEST', 'PUSH1', 'PUSH2', 'PUSH1', 'OP_84', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_81', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'OP_83', 'ISZERO', 'ISZERO', 'MUL', 'OR', 'OP_90', 'SSTORE', 'POP', 'PUSH2', 'OP_82', 'PUSH2', 'JUMP']
4665 4731 ['JUMPDEST', 'PUSH1', 'PUSH2', 'PUSH1', 'OP_8D', 'PUSH1', 'NOT', 'AND', 'PUSH1', 'NOT', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_81', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'OP_83', 'ISZERO', 'ISZERO', 'MUL', 'OR', 'OP_90', 'SSTORE', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'POP', 'OP_94', 'OP_93', 'POP', 'POP', 'POP', 'POP', 'JUMP']
4907 4995 ['JUMPDEST', 'ADD', 'SLOAD', 'PUSH20', 'AND', 'PUSH20', 'AND', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'OP_90', 'OP_81', 'MSTORE', 'PUSH1', 'ADD', 'PUSH1', 'SHA3', 'PUSH1', 'PUSH2', 'EXP', 'OP_81', 'SLOAD', 'OP_90', 'PUSH1', 'MUL', 'NOT', 'AND', 'OP_90', 'SSTORE', 'OP_80', 'OP_80', 'PUSH1', 'ADD', 'OP_91', 'POP', 'POP', 'PUSH2', 'JUMP']
thinking
**Summarizing findings on external calls and reentrancy risks**
I'll synthesize possible security issues including untrusted external CALLs with computed targets and values lacking detected access control, potential reentrancy risks due to external calls before state writes without guards, and low-level token transfers missing explicit return-data validation. I want to capture these cautiously with evidence and severity assessments, noting uncertainty from heuristics and bytecode analysis limits.
thinking
**Detailing evidence and crafting JSON report**
I'm organizing clear findings on low-level CALLs with computed targets lacking visible authorization, potential reentrancy issues without guards, and unchecked token transfer return data. I'll include precise hex PCs for call and SSTORE locations, reflect uncertainties from detector inconsistencies, and prepare a JSON summary following the specified schema.
codex
{"no_findings":false,"summary":"Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.","findings":[{"severity":"medium","category":"access_control","title":"Low-level CALLs with computed target/value lack visible authorization","exploit_scenario":"If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass.","recommendation":"Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.","evidence":"Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).","locations":["pc:0x624","pc:0xdb2","pc:0x1046"]},{"severity":"low","category":"reentrancy","title":"External CALLs combined with storage writes; no reentrancy guard detected","exploit_scenario":"If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain.","recommendation":"Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.","evidence":"CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.","locations":["pc:0x624","pc:0xdb2","pc:0x1046","pc:0x0ba4","pc:0x1239","pc:0x132b"]},{"severity":"low","category":"other","title":"Low-level token transfer call does not appear to validate return data","exploit_scenario":"If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches.","recommendation":"Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.","evidence":"CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.","locations":["pc:0xdb2","pc:0x1046"]}]}
tokens used
54,670
{
"codex": {
"ran_at": "2026-01-11T05:09:35.195560+00:00",
"returncode": 0
},
"project": {
"mode": "bytecode",
"bytecode_length": 10108,
"bytecode_truncated": false,
"capability_graph_present": true,
"analysis_artifact_present": true
},
"summary": "Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.",
"raw_final": {
"summary": "Bytecode shows three low-level CALL sites with computed targets/values and storage writes, with no explicit guard detections; authorization and reentrancy assumptions should be confirmed, and return-data handling for token-like calls appears absent.",
"findings": [
{
"title": "Low-level CALLs with computed target/value lack visible authorization",
"category": "access_control",
"evidence": "Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).",
"severity": "medium",
"locations": [
"pc:0x624",
"pc:0xdb2",
"pc:0x1046"
],
"recommendation": "Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.",
"exploit_scenario": "If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass."
},
{
"title": "External CALLs combined with storage writes; no reentrancy guard detected",
"category": "reentrancy",
"evidence": "CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.",
"severity": "low",
"locations": [
"pc:0x624",
"pc:0xdb2",
"pc:0x1046",
"pc:0x0ba4",
"pc:0x1239",
"pc:0x132b"
],
"recommendation": "Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.",
"exploit_scenario": "If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain."
},
{
"title": "Low-level token transfer call does not appear to validate return data",
"category": "other",
"evidence": "CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.",
"severity": "low",
"locations": [
"pc:0xdb2",
"pc:0x1046"
],
"recommendation": "Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.",
"exploit_scenario": "If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches."
}
],
"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 0x008e 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 0000002e: SWAP1 0000002f: DIV 00000030: PUSH4 0xffffffff 00000035: AND 00000036: DUP1 00000037: PUSH4 0x313ce567 0000003c: EQ 0000003d: PUSH2 0x0105 00000040: JUMPI 00000041: DUP1 00000042: PUSH4 0x4123cb6b 00000047: EQ 00000048: PUSH2 0x0136 0000004b: JUMPI 0000004c: DUP1 0000004d: PUSH4 0x472d71d1 00000052: EQ 00000053: PUSH2 0x0161 00000056: JUMPI 00000057: DUP1 00000058: PUSH4 0x746c9171 0000005d: EQ 0000005e: PUSH2 0x021a 00000061: JUMPI 00000062: DUP1 00000063: PUSH4 0x86435354 00000068: EQ 00000069: PUSH2 0x0245 0000006c: JUMPI 0000006d: DUP1 0000006e: PUSH4 0x88671ad4 00000073: EQ 00000074: PUSH2 0x02fe 00000077: JUMPI 00000078: DUP1 00000079: PUSH4 0xaaf5eb68 0000007e: EQ 0000007f: PUSH2 0x044a 00000082: JUMPI 00000083: DUP1 00000084: PUSH4 0xbfe370d9 00000089: EQ 0000008a: PUSH2 0x0475 0000008d: JUMPI 0000008e: JUMPDEST 0000008f: PUSH1 0x00 00000091: CALLVALUE 00000092: GT 00000093: ISZERO 00000094: PUSH2 0x0103 00000097: JUMPI 00000098: PUSH32 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c 000000b9: CALLER 000000ba: CALLVALUE 000000bb: PUSH1 0x40 000000bd: MLOAD 000000be: DUP1 000000bf: DUP4 000000c0: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000d5: AND 000000d6: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000000eb: AND 000000ec: DUP2 000000ed: MSTORE 000000ee: PUSH1 0x20 000000f0: ADD 000000f1: DUP3 000000f2: DUP2 000000f3: MSTORE 000000f4: PUSH1 0x20 000000f6: ADD 000000f7: SWAP3 000000f8: POP 000000f9: POP 000000fa: POP 000000fb: PUSH1 0x40 000000fd: MLOAD 000000fe: DUP1 000000ff: SWAP2 00000100: SUB 00000101: SWAP1 00000102: LOG1 00000103: JUMPDEST 00000104: STOP 00000105: JUMPDEST 00000106: CALLVALUE 00000107: DUP1 00000108: ISZERO 00000109: PUSH2 0x0111 0000010c: JUMPI 0000010d: PUSH1 0x00 0000010f: DUP1 00000110: REVERT 00000111: JUMPDEST 00000112: POP 00000113: PUSH2 0x011a 00000116: PUSH2 0x04fa 00000119: JUMP 0000011a: JUMPDEST 0000011b: PUSH1 0x40 0000011d: MLOAD 0000011e: DUP1 0000011f: DUP3 00000120: PUSH1 0xff 00000122: AND 00000123: PUSH1 0xff 00000125: AND 00000126: DUP2 00000127: MSTORE 00000128: PUSH1 0x20 0000012a: ADD 0000012b: SWAP2 0000012c: POP 0000012d: POP 0000012e: PUSH1 0x40 00000130: MLOAD 00000131: DUP1 00000132: SWAP2 00000133: SUB 00000134: SWAP1 00000135: RETURN 00000136: JUMPDEST 00000137: CALLVALUE 00000138: DUP1 00000139: ISZERO 0000013a: PUSH2 0x0142 0000013d: JUMPI 0000013e: PUSH1 0x00 00000140: DUP1 00000141: REVERT 00000142: JUMPDEST 00000143: POP 00000144: PUSH2 0x014b 00000147: PUSH2 0x04ff 0000014a: JUMP 0000014b: JUMPDEST 0000014c: PUSH1 0x40 0000014e: MLOAD 0000014f: DUP1 00000150: DUP3 00000151: DUP2 00000152: MSTORE 00000153: PUSH1 0x20 00000155: ADD 00000156: SWAP2 00000157: POP 00000158: POP 00000159: PUSH1 0x40 0000015b: MLOAD 0000015c: DUP1 0000015d: SWAP2 0000015e: SUB 0000015f: SWAP1 00000160: RETURN 00000161: JUMPDEST 00000162: CALLVALUE 00000163: DUP1 00000164: ISZERO 00000165: PUSH2 0x016d 00000168: JUMPI 00000169: PUSH1 0x00 0000016b: DUP1 0000016c: REVERT 0000016d: JUMPDEST 0000016e: POP 0000016f: PUSH2 0x01d8 00000172: PUSH1 0x04 00000174: DUP1 00000175: CALLDATASIZE 00000176: SUB 00000177: DUP2 00000178: ADD 00000179: SWAP1 0000017a: DUP1 0000017b: DUP1 0000017c: CALLDATALOAD 0000017d: PUSH1 0x00 0000017f: NOT 00000180: AND 00000181: SWAP1 00000182: PUSH1 0x20 00000184: ADD 00000185: SWAP1 00000186: SWAP3 00000187: SWAP2 00000188: SWAP1 00000189: DUP1 0000018a: CALLDATALOAD 0000018b: PUSH1 0x00 0000018d: NOT 0000018e: AND 0000018f: SWAP1 00000190: PUSH1 0x20 00000192: ADD 00000193: SWAP1 00000194: SWAP3 00000195: SWAP2 00000196: SWAP1 00000197: DUP1 00000198: CALLDATALOAD 00000199: PUSH1 0x00 0000019b: NOT 0000019c: AND 0000019d: SWAP1 0000019e: PUSH1 0x20 000001a0: ADD 000001a1: SWAP1 000001a2: SWAP3 000001a3: SWAP2 000001a4: SWAP1 000001a5: DUP1 000001a6: CALLDATALOAD 000001a7: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000001c7: NOT 000001c8: AND 000001c9: SWAP1 000001ca: PUSH1 0x20 000001cc: ADD 000001cd: SWAP1 000001ce: SWAP3 000001cf: SWAP2 000001d0: SWAP1 000001d1: POP 000001d2: POP 000001d3: POP 000001d4: PUSH2 0x0505 000001d7: JUMP 000001d8: JUMPDEST 000001d9: PUSH1 0x40 000001db: MLOAD 000001dc: DUP1 000001dd: DUP3 000001de: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000001f3: AND 000001f4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000209: AND 0000020a: DUP2 0000020b: MSTORE 0000020c: PUSH1 0x20 0000020e: ADD 0000020f: SWAP2 00000210: POP 00000211: POP 00000212: PUSH1 0x40 00000214: MLOAD 00000215: DUP1 00000216: SWAP2 00000217: SUB 00000218: SWAP1 00000219: RETURN 0000021a: JUMPDEST 0000021b: CALLVALUE 0000021c: DUP1 0000021d: ISZERO 0000021e: PUSH2 0x0226 00000221: JUMPI 00000222: PUSH1 0x00 00000224: DUP1 00000225: REVERT 00000226: JUMPDEST 00000227: POP 00000228: PUSH2 0x022f 0000022b: PUSH2 0x064d 0000022e: JUMP 0000022f: JUMPDEST 00000230: PUSH1 0x40 00000232: MLOAD 00000233: DUP1 00000234: DUP3 00000235: DUP2 00000236: MSTORE 00000237: PUSH1 0x20 00000239: ADD 0000023a: SWAP2 0000023b: POP 0000023c: POP 0000023d: PUSH1 0x40 0000023f: MLOAD 00000240: DUP1 00000241: SWAP2 00000242: SUB 00000243: SWAP1 00000244: RETURN 00000245: JUMPDEST 00000246: CALLVALUE 00000247: DUP1 00000248: ISZERO 00000249: PUSH2 0x0251 0000024c: JUMPI 0000024d: PUSH1 0x00 0000024f: DUP1 00000250: REVERT 00000251: JUMPDEST 00000252: POP 00000253: PUSH2 0x02bc 00000256: PUSH1 0x04 00000258: DUP1 00000259: CALLDATASIZE 0000025a: SUB 0000025b: DUP2 0000025c: ADD 0000025d: SWAP1 0000025e: DUP1 0000025f: DUP1 00000260: CALLDATALOAD 00000261: PUSH1 0x00 00000263: NOT 00000264: AND 00000265: SWAP1 00000266: PUSH1 0x20 00000268: ADD 00000269: SWAP1 0000026a: SWAP3 0000026b: SWAP2 0000026c: SWAP1 0000026d: DUP1 0000026e: CALLDATALOAD 0000026f: PUSH1 0x00 00000271: NOT 00000272: AND 00000273: SWAP1 00000274: PUSH1 0x20 00000276: ADD 00000277: SWAP1 00000278: SWAP3 00000279: SWAP2 0000027a: SWAP1 0000027b: DUP1 0000027c: CALLDATALOAD 0000027d: PUSH1 0x00 0000027f: NOT 00000280: AND 00000281: SWAP1 00000282: PUSH1 0x20 00000284: ADD 00000285: SWAP1 00000286: SWAP3 00000287: SWAP2 00000288: SWAP1 00000289: DUP1 0000028a: CALLDATALOAD 0000028b: PUSH31 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 000002ab: NOT 000002ac: AND 000002ad: SWAP1 000002ae: PUSH1 0x20 000002b0: ADD 000002b1: SWAP1 000002b2: SWAP3 000002b3: SWAP2 000002b4: SWAP1 000002b5: POP 000002b6: POP 000002b7: POP 000002b8: PUSH2 0x0653 000002bb: JUMP 000002bc: JUMPDEST 000002bd: PUSH1 0x40 000002bf: MLOAD 000002c0: DUP1 000002c1: DUP3 000002c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002d7: AND 000002d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000002ed: AND 000002ee: DUP2 000002ef: MSTORE 000002f0: PUSH1 0x20 000002f2: ADD 000002f3: SWAP2 000002f4: POP 000002f5: POP 000002f6: PUSH1 0x40 000002f8: MLOAD 000002f9: DUP1 000002fa: SWAP2 000002fb: SUB 000002fc: SWAP1 000002fd: RETURN 000002fe: JUMPDEST 000002ff: CALLVALUE 00000300: DUP1 00000301: ISZERO 00000302: PUSH2 0x030a 00000305: JUMPI 00000306: PUSH1 0x00 00000308: DUP1 00000309: REVERT 0000030a: JUMPDEST 0000030b: POP 0000030c: PUSH2 0x03cf 0000030f: PUSH1 0x04 00000311: DUP1 00000312: CALLDATASIZE 00000313: SUB 00000314: DUP2 00000315: ADD 00000316: SWAP1 00000317: DUP1 00000318: DUP1 00000319: CALLDATALOAD 0000031a: SWAP1 0000031b: PUSH1 0x20 0000031d: ADD 0000031e: SWAP1 0000031f: DUP3 00000320: ADD 00000321: DUP1 00000322: CALLDATALOAD 00000323: SWAP1 00000324: PUSH1 0x20 00000326: ADD 00000327: SWAP2 00000328: SWAP1 00000329: SWAP2 0000032a: SWAP3 0000032b: SWAP4 0000032c: SWAP2 0000032d: SWAP3 0000032e: SWAP4 0000032f: SWAP1 00000330: DUP1 00000331: CALLDATALOAD 00000332: SWAP1 00000333: PUSH1 0x20 00000335: ADD 00000336: SWAP1 00000337: DUP3 00000338: ADD 00000339: DUP1 0000033a: CALLDATALOAD 0000033b: SWAP1 0000033c: PUSH1 0x20 0000033e: ADD 0000033f: SWAP2 00000340: SWAP1 00000341: SWAP2 00000342: SWAP3 00000343: SWAP4 00000344: SWAP2 00000345: SWAP3 00000346: SWAP4 00000347: SWAP1 00000348: DUP1 00000349: CALLDATALOAD 0000034a: SWAP1 0000034b: PUSH1 0x20 0000034d: ADD 0000034e: SWAP1 0000034f: DUP3 00000350: ADD 00000351: DUP1 00000352: CALLDATALOAD 00000353: SWAP1 00000354: PUSH1 0x20 00000356: ADD 00000357: SWAP2 00000358: SWAP1 00000359: SWAP2 0000035a: SWAP3 0000035b: SWAP4 0000035c: SWAP2 0000035d: SWAP3 0000035e: SWAP4 0000035f: SWAP1 00000360: DUP1 00000361: CALLDATALOAD 00000362: SWAP1 00000363: PUSH1 0x20 00000365: ADD 00000366: SWAP1 00000367: DUP3 00000368: ADD 00000369: DUP1 0000036a: CALLDATALOAD 0000036b: SWAP1 0000036c: PUSH1 0x20 0000036e: ADD 0000036f: SWAP2 00000370: SWAP1 00000371: SWAP2 00000372: SWAP3 00000373: SWAP4 00000374: SWAP2 00000375: SWAP3 00000376: SWAP4 00000377: SWAP1 00000378: DUP1 00000379: CALLDATALOAD 0000037a: SWAP1 0000037b: PUSH1 0x20 0000037d: ADD 0000037e: SWAP1 0000037f: DUP3 00000380: ADD 00000381: DUP1 00000382: CALLDATALOAD 00000383: SWAP1 00000384: PUSH1 0x20 00000386: ADD 00000387: SWAP2 00000388: SWAP1 00000389: SWAP2 0000038a: SWAP3 0000038b: SWAP4 0000038c: SWAP2 0000038d: SWAP3 0000038e: SWAP4 0000038f: SWAP1 00000390: DUP1 00000391: CALLDATALOAD 00000392: SWAP1 00000393: PUSH1 0x20 00000395: ADD 00000396: SWAP1 00000397: DUP3 00000398: ADD 00000399: DUP1 0000039a: CALLDATALOAD 0000039b: SWAP1 0000039c: PUSH1 0x20 0000039e: ADD 0000039f: SWAP2 000003a0: SWAP1 000003a1: SWAP2 000003a2: SWAP3 000003a3: SWAP4 000003a4: SWAP2 000003a5: SWAP3 000003a6: SWAP4 000003a7: SWAP1 000003a8: DUP1 000003a9: CALLDATALOAD 000003aa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000003bf: AND 000003c0: SWAP1 000003c1: PUSH1 0x20 000003c3: ADD 000003c4: SWAP1 000003c5: SWAP3 000003c6: SWAP2 000003c7: SWAP1 000003c8: POP 000003c9: POP 000003ca: POP 000003cb: PUSH2 0x066b 000003ce: JUMP 000003cf: JUMPDEST 000003d0: PUSH1 0x40 000003d2: MLOAD 000003d3: DUP1 000003d4: DUP1 000003d5: PUSH1 0x20 000003d7: ADD 000003d8: DUP3 000003d9: DUP2 000003da: SUB 000003db: DUP3 000003dc: MSTORE 000003dd: DUP4 000003de: DUP2 000003df: DUP2 000003e0: MLOAD 000003e1: DUP2 000003e2: MSTORE 000003e3: PUSH1 0x20 000003e5: ADD 000003e6: SWAP2 000003e7: POP 000003e8: DUP1 000003e9: MLOAD 000003ea: SWAP1 000003eb: PUSH1 0x20 000003ed: ADD 000003ee: SWAP1 000003ef: DUP1 000003f0: DUP4 000003f1: DUP4 000003f2: PUSH1 0x00 000003f4: JUMPDEST 000003f5: DUP4 000003f6: DUP2 000003f7: LT 000003f8: ISZERO 000003f9: PUSH2 0x040f 000003fc: JUMPI 000003fd: DUP1 000003fe: DUP3 000003ff: ADD 00000400: MLOAD 00000401: DUP2 00000402: DUP5 00000403: ADD 00000404: MSTORE 00000405: PUSH1 0x20 00000407: DUP2 00000408: ADD 00000409: SWAP1 0000040a: POP 0000040b: PUSH2 0x03f4 0000040e: JUMP 0000040f: JUMPDEST 00000410: POP 00000411: POP 00000412: POP 00000413: POP 00000414: SWAP1 00000415: POP 00000416: SWAP1 00000417: DUP2 00000418: ADD 00000419: SWAP1 0000041a: PUSH1 0x1f 0000041c: AND 0000041d: DUP1 0000041e: ISZERO 0000041f: PUSH2 0x043c 00000422: JUMPI 00000423: DUP1 00000424: DUP3 00000425: SUB 00000426: DUP1 00000427: MLOAD 00000428: PUSH1 0x01 0000042a: DUP4 0000042b: PUSH1 0x20 0000042d: SUB 0000042e: PUSH2 0x0100 00000431: EXP 00000432: SUB 00000433: NOT 00000434: AND 00000435: DUP2 00000436: MSTORE 00000437: PUSH1 0x20 00000439: ADD 0000043a: SWAP2 0000043b: POP 0000043c: JUMPDEST 0000043d: POP 0000043e: SWAP3 0000043f: POP 00000440: POP 00000441: POP 00000442: PUSH1 0x40 00000444: MLOAD 00000445: DUP1 00000446: SWAP2 00000447: SUB 00000448: SWAP1 00000449: RETURN 0000044a: JUMPDEST 0000044b: CALLVALUE 0000044c: DUP1 0000044d: ISZERO 0000044e: PUSH2 0x0456 00000451: JUMPI 00000452: PUSH1 0x00 00000454: DUP1 00000455: REVERT 00000456: JUMPDEST 00000457: POP 00000458: PUSH2 0x045f 0000045b: PUSH2 0x084c 0000045e: JUMP 0000045f: JUMPDEST 00000460: PUSH1 0x40 00000462: MLOAD 00000463: DUP1 00000464: DUP3 00000465: DUP2 00000466: MSTORE 00000467: PUSH1 0x20 00000469: ADD 0000046a: SWAP2 0000046b: POP 0000046c: POP 0000046d: PUSH1 0x40 0000046f: MLOAD 00000470: DUP1 00000471: SWAP2 00000472: SUB 00000473: SWAP1 00000474: RETURN 00000475: JUMPDEST 00000476: CALLVALUE 00000477: DUP1 00000478: ISZERO 00000479: PUSH2 0x0481 0000047c: JUMPI 0000047d: PUSH1 0x00 0000047f: DUP1 00000480: REVERT 00000481: JUMPDEST 00000482: POP 00000483: PUSH2 0x04dc 00000486: PUSH1 0x04 00000488: DUP1 00000489: CALLDATASIZE 0000048a: SUB 0000048b: DUP2 0000048c: ADD 0000048d: SWAP1 0000048e: DUP1 0000048f: DUP1 00000490: CALLDATALOAD 00000491: SWAP1 00000492: PUSH1 0x20 00000494: ADD 00000495: SWAP1 00000496: DUP3 00000497: ADD 00000498: DUP1 00000499: CALLDATALOAD 0000049a: SWAP1 0000049b: PUSH1 0x20 0000049d: ADD 0000049e: SWAP1 0000049f: DUP1 000004a0: DUP1 000004a1: PUSH1 0x1f 000004a3: ADD 000004a4: PUSH1 0x20 000004a6: DUP1 000004a7: SWAP2 000004a8: DIV 000004a9: MUL 000004aa: PUSH1 0x20 000004ac: ADD 000004ad: PUSH1 0x40 000004af: MLOAD 000004b0: SWAP1 000004b1: DUP2 000004b2: ADD 000004b3: PUSH1 0x40 000004b5: MSTORE 000004b6: DUP1 000004b7: SWAP4 000004b8: SWAP3 000004b9: SWAP2 000004ba: SWAP1 000004bb: DUP2 000004bc: DUP2 000004bd: MSTORE 000004be: PUSH1 0x20 000004c0: ADD 000004c1: DUP4 000004c2: DUP4 000004c3: DUP1 000004c4: DUP3 000004c5: DUP5 000004c6: CALLDATACOPY 000004c7: DUP3 000004c8: ADD 000004c9: SWAP2 000004ca: POP 000004cb: POP 000004cc: POP 000004cd: POP 000004ce: POP 000004cf: POP 000004d0: SWAP2 000004d1: SWAP3 000004d2: SWAP2 000004d3: SWAP3 000004d4: SWAP1 000004d5: POP 000004d6: POP 000004d7: POP 000004d8: PUSH2 0x0857 000004db: JUMP 000004dc: JUMPDEST 000004dd: PUSH1 0x40 000004df: MLOAD 000004e0: DUP1 000004e1: DUP3 000004e2: PUSH1 0x00 000004e4: NOT 000004e5: AND 000004e6: PUSH1 0x00 000004e8: NOT 000004e9: AND 000004ea: DUP2 000004eb: MSTORE 000004ec: PUSH1 0x20 000004ee: ADD 000004ef: SWAP2 000004f0: POP 000004f1: POP 000004f2: PUSH1 0x40 000004f4: MLOAD 000004f5: DUP1 000004f6: SWAP2 000004f7: SUB 000004f8: SWAP1 000004f9: RETURN 000004fa: JUMPDEST 000004fb: PUSH1 0x12 000004fd: DUP2 000004fe: JUMP 000004ff: JUMPDEST 00000500: PUSH1 0x01 00000502: SLOAD 00000503: DUP2 00000504: JUMP 00000505: JUMPDEST 00000506: PUSH1 0x00 00000508: DUP1 00000509: DUP3 0000050a: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000 0000052b: SWAP1 0000052c: DIV 0000052d: SWAP1 0000052e: POP 0000052f: PUSH1 0x00 00000531: PUSH1 0xff 00000533: AND 00000534: DUP4 00000535: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000 00000556: SWAP1 00000557: DIV 00000558: PUSH1 0xff 0000055a: AND 0000055b: EQ 0000055c: DUP1 0000055d: PUSH2 0x058f 00000560: JUMPI 00000561: POP 00000562: PUSH1 0x01 00000564: PUSH1 0xff 00000566: AND 00000567: DUP4 00000568: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000 00000589: SWAP1 0000058a: DIV 0000058b: PUSH1 0xff 0000058d: AND 0000058e: EQ 0000058f: JUMPDEST 00000590: ISZERO 00000591: PUSH2 0x05be 00000594: JUMPI 00000595: PUSH1 0x1b 00000597: DUP4 00000598: PUSH32 0x0100000000000000000000000000000000000000000000000000000000000000 000005b9: SWAP1 000005ba: DIV 000005bb: ADD 000005bc: SWAP1 000005bd: POP 000005be: JUMPDEST 000005bf: PUSH1 0x01 000005c1: DUP7 000005c2: DUP3 000005c3: DUP8 000005c4: DUP8 000005c5: PUSH1 0x40 000005c7: MLOAD 000005c8: PUSH1 0x00 000005ca: DUP2 000005cb: MSTORE 000005cc: PUSH1 0x20 000005ce: ADD 000005cf: PUSH1 0x40 000005d1: MSTORE 000005d2: PUSH1 0x40 000005d4: MLOAD 000005d5: DUP1 000005d6: DUP6 000005d7: PUSH1 0x00 000005d9: NOT 000005da: AND 000005db: PUSH1 0x00 000005dd: NOT 000005de: AND 000005df: DUP2 000005e0: MSTORE 000005e1: PUSH1 0x20 000005e3: ADD 000005e4: DUP5 000005e5: PUSH1 0xff 000005e7: AND 000005e8: PUSH1 0xff 000005ea: AND 000005eb: DUP2 000005ec: MSTORE 000005ed: PUSH1 0x20 000005ef: ADD 000005f0: DUP4 000005f1: PUSH1 0x00 000005f3: NOT 000005f4: AND 000005f5: PUSH1 0x00 000005f7: NOT 000005f8: AND 000005f9: DUP2 000005fa: MSTORE 000005fb: PUSH1 0x20 000005fd: ADD 000005fe: DUP3 000005ff: PUSH1 0x00 00000601: NOT 00000602: AND 00000603: PUSH1 0x00 00000605: NOT 00000606: AND 00000607: DUP2 00000608: MSTORE 00000609: PUSH1 0x20 0000060b: ADD 0000060c: SWAP5 0000060d: POP 0000060e: POP 0000060f: POP 00000610: POP 00000611: POP 00000612: PUSH1 0x20 00000614: PUSH1 0x40 00000616: MLOAD 00000617: PUSH1 0x20 00000619: DUP2 0000061a: SUB 0000061b: SWAP1 0000061c: DUP1 0000061d: DUP5 0000061e: SUB 0000061f: SWAP1 00000620: PUSH1 0x00 00000622: DUP7 00000623: GAS 00000624: CALL 00000625: ISZERO 00000626: DUP1 00000627: ISZERO 00000628: PUSH2 0x0635 0000062b: JUMPI 0000062c: RETURNDATASIZE 0000062d: PUSH1 0x00 0000062f: DUP1 00000630: RETURNDATACOPY 00000631: RETURNDATASIZE 00000632: PUSH1 0x00 00000634: REVERT 00000635: JUMPDEST 00000636: POP 00000637: POP 00000638: POP 00000639: PUSH1 0x20 0000063b: PUSH1 0x40 0000063d: MLOAD 0000063e: SUB 0000063f: MLOAD 00000640: SWAP2 00000641: POP 00000642: DUP2 00000643: SWAP2 00000644: POP 00000645: POP 00000646: SWAP5 00000647: SWAP4 00000648: POP 00000649: POP 0000064a: POP 0000064b: POP 0000064c: JUMP 0000064d: JUMPDEST 0000064e: PUSH1 0x00 00000650: SLOAD 00000651: DUP2 00000652: JUMP 00000653: JUMPDEST 00000654: PUSH1 0x00 00000656: PUSH2 0x0661 00000659: DUP6 0000065a: DUP6 0000065b: DUP6 0000065c: DUP6 0000065d: PUSH2 0x0505 00000660: JUMP 00000661: JUMPDEST 00000662: SWAP1 00000663: POP 00000664: SWAP5 00000665: SWAP4 00000666: POP 00000667: POP 00000668: POP 00000669: POP 0000066a: JUMP 0000066b: JUMPDEST 0000066c: PUSH1 0x60 0000066e: PUSH1 0x00 00000670: PUSH2 0x0678 00000673: CALLER 00000674: PUSH2 0x0865 00000677: JUMP 00000678: JUMPDEST 00000679: ISZERO 0000067a: ISZERO 0000067b: PUSH2 0x0683 0000067e: JUMPI 0000067f: PUSH1 0x00 00000681: DUP1 00000682: REVERT 00000683: JUMPDEST 00000684: DUP11 00000685: DUP11 00000686: SWAP1 00000687: POP 00000688: DUP14 00000689: DUP14 0000068a: SWAP1 0000068b: POP 0000068c: EQ 0000068d: ISZERO 0000068e: ISZERO 0000068f: PUSH2 0x0697 00000692: JUMPI 00000693: PUSH1 0x00 00000695: DUP1 00000696: REVERT 00000697: JUMPDEST 00000698: PUSH2 0x0733 0000069b: DUP16 0000069c: DUP16 0000069d: DUP1 0000069e: DUP1 0000069f: PUSH1 0x1f 000006a1: ADD 000006a2: PUSH1 0x20 000006a4: DUP1 000006a5: SWAP2 000006a6: DIV 000006a7: MUL 000006a8: PUSH1 0x20 000006aa: ADD 000006ab: PUSH1 0x40 000006ad: MLOAD 000006ae: SWAP1 000006af: DUP2 000006b0: ADD 000006b1: PUSH1 0x40 000006b3: MSTORE 000006b4: DUP1 000006b5: SWAP4 000006b6: SWAP3 000006b7: SWAP2 000006b8: SWAP1 000006b9: DUP2 000006ba: DUP2 000006bb: MSTORE 000006bc: PUSH1 0x20 000006be: ADD 000006bf: DUP4 000006c0: DUP4 000006c1: DUP1 000006c2: DUP3 000006c3: DUP5 000006c4: CALLDATACOPY 000006c5: DUP3 000006c6: ADD 000006c7: SWAP2 000006c8: POP 000006c9: POP 000006ca: POP 000006cb: POP 000006cc: POP 000006cd: POP 000006ce: DUP15 000006cf: DUP15 000006d0: DUP1 000006d1: DUP1 000006d2: PUSH1 0x20 000006d4: MUL 000006d5: PUSH1 0x20 000006d7: ADD 000006d8: PUSH1 0x40 000006da: MLOAD 000006db: SWAP1 000006dc: DUP2 000006dd: ADD 000006de: PUSH1 0x40 000006e0: MSTORE 000006e1: DUP1 000006e2: SWAP4 000006e3: SWAP3 000006e4: SWAP2 000006e5: SWAP1 000006e6: DUP2 000006e7: DUP2 000006e8: MSTORE 000006e9: PUSH1 0x20 000006eb: ADD 000006ec: DUP4 000006ed: DUP4 000006ee: PUSH1 0x20 000006f0: MUL 000006f1: DUP1 000006f2: DUP3 000006f3: DUP5 000006f4: CALLDATACOPY 000006f5: DUP3 000006f6: ADD 000006f7: SWAP2 000006f8: POP 000006f9: POP 000006fa: POP 000006fb: POP 000006fc: POP 000006fd: POP 000006fe: DUP14 000006ff: DUP14 00000700: DUP1 00000701: DUP1 00000702: PUSH1 0x20 00000704: MUL 00000705: PUSH1 0x20 00000707: ADD 00000708: PUSH1 0x40 0000070a: MLOAD 0000070b: SWAP1 0000070c: DUP2 0000070d: ADD 0000070e: PUSH1 0x40 00000710: MSTORE 00000711: DUP1 00000712: SWAP4 00000713: SWAP3 00000714: SWAP2 00000715: SWAP1 00000716: DUP2 00000717: DUP2 00000718: MSTORE 00000719: PUSH1 0x20 0000071b: ADD 0000071c: DUP4 0000071d: DUP4 0000071e: PUSH1 0x20 00000720: MUL 00000721: DUP1 00000722: DUP3 00000723: DUP5 00000724: CALLDATACOPY 00000725: DUP3 00000726: ADD 00000727: SWAP2 00000728: POP 00000729: POP 0000072a: POP 0000072b: POP 0000072c: POP 0000072d: POP 0000072e: DUP7 0000072f: PUSH2 0x089b 00000732: JUMP 00000733: JUMPDEST 00000734: SWAP1 00000735: POP 00000736: PUSH2 0x07ce 00000739: DUP2 0000073a: DUP11 0000073b: DUP11 0000073c: DUP1 0000073d: DUP1 0000073e: PUSH1 0x20 00000740: MUL 00000741: PUSH1 0x20 00000743: ADD 00000744: PUSH1 0x40 00000746: MLOAD 00000747: SWAP1 00000748: DUP2 00000749: ADD 0000074a: PUSH1 0x40 0000074c: MSTORE 0000074d: DUP1 0000074e: SWAP4 0000074f: SWAP3 00000750: SWAP2 00000751: SWAP1 00000752: DUP2 00000753: DUP2 00000754: MSTORE 00000755: PUSH1 0x20 00000757: ADD 00000758: DUP4 00000759: DUP4 0000075a: PUSH1 0x20 0000075c: MUL 0000075d: DUP1 0000075e: DUP3 0000075f: DUP5 00000760: CALLDATACOPY 00000761: DUP3 00000762: ADD 00000763: SWAP2 00000764: POP 00000765: POP 00000766: POP 00000767: POP 00000768: POP 00000769: POP 0000076a: DUP10 0000076b: DUP10 0000076c: DUP1 0000076d: DUP1 0000076e: PUSH1 0x20 00000770: MUL 00000771: PUSH1 0x20 00000773: ADD 00000774: PUSH1 0x40 00000776: MLOAD 00000777: SWAP1 00000778: DUP2 00000779: ADD 0000077a: PUSH1 0x40 0000077c: MSTORE 0000077d: DUP1 0000077e: SWAP4 0000077f: SWAP3 00000780: SWAP2 00000781: SWAP1 00000782: DUP2 00000783: DUP2 00000784: MSTORE 00000785: PUSH1 0x20 00000787: ADD 00000788: DUP4 00000789: DUP4 0000078a: PUSH1 0x20 0000078c: MUL 0000078d: DUP1 0000078e: DUP3 0000078f: DUP5 00000790: CALLDATACOPY 00000791: DUP3 00000792: ADD 00000793: SWAP2 00000794: POP 00000795: POP 00000796: POP 00000797: POP 00000798: POP 00000799: POP 0000079a: DUP9 0000079b: DUP9 0000079c: DUP1 0000079d: DUP1 0000079e: PUSH1 0x20 000007a0: MUL 000007a1: PUSH1 0x20 000007a3: ADD 000007a4: PUSH1 0x40 000007a6: MLOAD 000007a7: SWAP1 000007a8: DUP2 000007a9: ADD 000007aa: PUSH1 0x40 000007ac: MSTORE 000007ad: DUP1 000007ae: SWAP4 000007af: SWAP3 000007b0: SWAP2 000007b1: SWAP1 000007b2: DUP2 000007b3: DUP2 000007b4: MSTORE 000007b5: PUSH1 0x20 000007b7: ADD 000007b8: DUP4 000007b9: DUP4 000007ba: PUSH1 0x20 000007bc: MUL 000007bd: DUP1 000007be: DUP3 000007bf: DUP5 000007c0: CALLDATACOPY 000007c1: DUP3 000007c2: ADD 000007c3: SWAP2 000007c4: POP 000007c5: POP 000007c6: POP 000007c7: POP 000007c8: POP 000007c9: POP 000007ca: PUSH2 0x0a73 000007cd: JUMP 000007ce: JUMPDEST 000007cf: POP 000007d0: PUSH2 0x0839 000007d3: DUP2 000007d4: DUP15 000007d5: DUP15 000007d6: DUP1 000007d7: DUP1 000007d8: PUSH1 0x20 000007da: MUL 000007db: PUSH1 0x20 000007dd: ADD 000007de: PUSH1 0x40 000007e0: MLOAD 000007e1: SWAP1 000007e2: DUP2 000007e3: ADD 000007e4: PUSH1 0x40 000007e6: MSTORE 000007e7: DUP1 000007e8: SWAP4 000007e9: SWAP3 000007ea: SWAP2 000007eb: SWAP1 000007ec: DUP2 000007ed: DUP2 000007ee: MSTORE 000007ef: PUSH1 0x20 000007f1: ADD 000007f2: DUP4 000007f3: DUP4 000007f4: PUSH1 0x20 000007f6: MUL 000007f7: DUP1 000007f8: DUP3 000007f9: DUP5 000007fa: CALLDATACOPY 000007fb: DUP3 000007fc: ADD 000007fd: SWAP2 000007fe: POP 000007ff: POP 00000800: POP 00000801: POP 00000802: POP 00000803: POP 00000804: DUP14 00000805: DUP14 00000806: DUP1 00000807: DUP1 00000808: PUSH1 0x20 0000080a: MUL 0000080b: PUSH1 0x20 0000080d: ADD 0000080e: PUSH1 0x40 00000810: MLOAD 00000811: SWAP1 00000812: DUP2 00000813: ADD 00000814: PUSH1 0x40 00000816: MSTORE 00000817: DUP1 00000818: SWAP4 00000819: SWAP3 0000081a: SWAP2 0000081b: SWAP1 0000081c: DUP2 0000081d: DUP2 0000081e: MSTORE 0000081f: PUSH1 0x20 00000821: ADD 00000822: DUP4 00000823: DUP4 00000824: PUSH1 0x20 00000826: MUL 00000827: DUP1 00000828: DUP3 00000829: DUP5 0000082a: CALLDATACOPY 0000082b: DUP3 0000082c: ADD 0000082d: SWAP2 0000082e: POP 0000082f: POP 00000830: POP 00000831: POP 00000832: POP 00000833: POP 00000834: DUP7 00000835: PUSH2 0x0c37 00000838: JUMP 00000839: JUMPDEST 0000083a: POP 0000083b: POP 0000083c: SWAP14 0000083d: SWAP13 0000083e: POP 0000083f: POP 00000840: POP 00000841: POP 00000842: POP 00000843: POP 00000844: POP 00000845: POP 00000846: POP 00000847: POP 00000848: POP 00000849: POP 0000084a: POP 0000084b: JUMP 0000084c: JUMPDEST 0000084d: PUSH1 0x12 0000084f: PUSH1 0xff 00000851: AND 00000852: PUSH1 0x0a 00000854: EXP 00000855: DUP2 00000856: JUMP 00000857: JUMPDEST 00000858: PUSH1 0x00 0000085a: PUSH1 0x20 0000085c: DUP3 0000085d: ADD 0000085e: MLOAD 0000085f: SWAP1 00000860: POP 00000861: SWAP2 00000862: SWAP1 00000863: POP 00000864: JUMP 00000865: JUMPDEST 00000866: PUSH1 0x00 00000868: DUP1 00000869: PUSH2 0x0102 0000086c: PUSH1 0x00 0000086e: DUP5 0000086f: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000884: AND 00000885: DUP2 00000886: MSTORE 00000887: PUSH1 0x20 00000889: ADD 0000088a: SWAP1 0000088b: DUP2 0000088c: MSTORE 0000088d: PUSH1 0x20 0000088f: ADD 00000890: PUSH1 0x00 00000892: KECCAK256 00000893: SLOAD 00000894: GT 00000895: SWAP1 00000896: POP 00000897: SWAP2 00000898: SWAP1 00000899: POP 0000089a: JUMP 0000089b: JUMPDEST 0000089c: PUSH1 0x00 0000089e: DUP1 0000089f: PUSH1 0x00 000008a1: DUP7 000008a2: DUP7 000008a3: DUP7 000008a4: DUP7 000008a5: PUSH1 0x40 000008a7: MLOAD 000008a8: DUP1 000008a9: DUP6 000008aa: DUP1 000008ab: MLOAD 000008ac: SWAP1 000008ad: PUSH1 0x20 000008af: ADD 000008b0: SWAP1 000008b1: DUP1 000008b2: DUP4 000008b3: DUP4 000008b4: JUMPDEST 000008b5: PUSH1 0x20 000008b7: DUP4 000008b8: LT 000008b9: ISZERO 000008ba: ISZERO 000008bb: PUSH2 0x08d9 000008be: JUMPI 000008bf: DUP1 000008c0: MLOAD 000008c1: DUP3 000008c2: MSTORE 000008c3: PUSH1 0x20 000008c5: DUP3 000008c6: ADD 000008c7: SWAP2 000008c8: POP 000008c9: PUSH1 0x20 000008cb: DUP2 000008cc: ADD 000008cd: SWAP1 000008ce: POP 000008cf: PUSH1 0x20 000008d1: DUP4 000008d2: SUB 000008d3: SWAP3 000008d4: POP 000008d5: PUSH2 0x08b4 000008d8: JUMP 000008d9: JUMPDEST 000008da: PUSH1 0x01 000008dc: DUP4 000008dd: PUSH1 0x20 000008df: SUB 000008e0: PUSH2 0x0100 000008e3: EXP 000008e4: SUB 000008e5: DUP1 000008e6: NOT 000008e7: DUP3 000008e8: MLOAD 000008e9: AND 000008ea: DUP2 000008eb: DUP5 000008ec: MLOAD 000008ed: AND 000008ee: DUP1 000008ef: DUP3 000008f0: OR 000008f1: DUP6 000008f2: MSTORE 000008f3: POP 000008f4: POP 000008f5: POP 000008f6: POP 000008f7: POP 000008f8: POP 000008f9: SWAP1 000008fa: POP 000008fb: ADD 000008fc: DUP5 000008fd: DUP1 000008fe: MLOAD 000008ff: SWAP1 00000900: PUSH1 0x20 00000902: ADD 00000903: SWAP1 00000904: PUSH1 0x20 00000906: MUL 00000907: DUP1 00000908: DUP4 00000909: DUP4 0000090a: PUSH1 0x00 0000090c: JUMPDEST 0000090d: DUP4 0000090e: DUP2 0000090f: LT 00000910: ISZERO 00000911: PUSH2 0x0927 00000914: JUMPI 00000915: DUP1 00000916: DUP3 00000917: ADD 00000918: MLOAD 00000919: DUP2 0000091a: DUP5 0000091b: ADD 0000091c: MSTORE 0000091d: PUSH1 0x20 0000091f: DUP2 00000920: ADD 00000921: SWAP1 00000922: POP 00000923: PUSH2 0x090c 00000926: JUMP 00000927: JUMPDEST 00000928: POP 00000929: POP 0000092a: POP 0000092b: POP 0000092c: SWAP1 0000092d: POP 0000092e: ADD 0000092f: DUP4 00000930: DUP1 00000931: MLOAD 00000932: SWAP1 00000933: PUSH1 0x20 00000935: ADD 00000936: SWAP1 00000937: PUSH1 0x20 00000939: MUL 0000093a: DUP1 0000093b: DUP4 0000093c: DUP4 0000093d: PUSH1 0x00 0000093f: JUMPDEST 00000940: DUP4 00000941: DUP2 00000942: LT 00000943: ISZERO 00000944: PUSH2 0x095a 00000947: JUMPI 00000948: DUP1 00000949: DUP3 0000094a: ADD 0000094b: MLOAD 0000094c: DUP2 0000094d: DUP5 0000094e: ADD 0000094f: MSTORE 00000950: PUSH1 0x20 00000952: DUP2 00000953: ADD 00000954: SWAP1 00000955: POP 00000956: PUSH2 0x093f 00000959: JUMP 0000095a: JUMPDEST 0000095b: POP 0000095c: POP 0000095d: POP 0000095e: POP 0000095f: SWAP1 00000960: POP 00000961: ADD 00000962: DUP3 00000963: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000978: AND 00000979: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000098e: AND 0000098f: PUSH13 0x01000000000000000000000000 0000099d: MUL 0000099e: DUP2 0000099f: MSTORE 000009a0: PUSH1 0x14 000009a2: ADD 000009a3: SWAP5 000009a4: POP 000009a5: POP 000009a6: POP 000009a7: POP 000009a8: POP 000009a9: PUSH1 0x40 000009ab: MLOAD 000009ac: DUP1 000009ad: SWAP2 000009ae: SUB 000009af: SWAP1 000009b0: KECCAK256 000009b1: SWAP2 000009b2: POP 000009b3: DUP2 000009b4: PUSH1 0x40 000009b6: MLOAD 000009b7: PUSH1 0x20 000009b9: ADD 000009ba: DUP1 000009bb: DUP1 000009bc: PUSH32 0x19457468657265756d205369676e6564204d6573736167653a0a333200000000 000009dd: DUP2 000009de: MSTORE 000009df: POP 000009e0: PUSH1 0x1c 000009e2: ADD 000009e3: DUP3 000009e4: PUSH1 0x00 000009e6: NOT 000009e7: AND 000009e8: PUSH1 0x00 000009ea: NOT 000009eb: AND 000009ec: DUP2 000009ed: MSTORE 000009ee: PUSH1 0x20 000009f0: ADD 000009f1: SWAP2 000009f2: POP 000009f3: POP 000009f4: PUSH1 0x40 000009f6: MLOAD 000009f7: PUSH1 0x20 000009f9: DUP2 000009fa: DUP4 000009fb: SUB 000009fc: SUB 000009fd: DUP2 000009fe: MSTORE 000009ff: SWAP1 00000a00: PUSH1 0x40 00000a02: MSTORE 00000a03: PUSH1 0x40 00000a05: MLOAD 00000a06: DUP1 00000a07: DUP3 00000a08: DUP1 00000a09: MLOAD 00000a0a: SWAP1 00000a0b: PUSH1 0x20 00000a0d: ADD 00000a0e: SWAP1 00000a0f: DUP1 00000a10: DUP4 00000a11: DUP4 00000a12: JUMPDEST 00000a13: PUSH1 0x20 00000a15: DUP4 00000a16: LT 00000a17: ISZERO 00000a18: ISZERO 00000a19: PUSH2 0x0a37 00000a1c: JUMPI 00000a1d: DUP1 00000a1e: MLOAD 00000a1f: DUP3 00000a20: MSTORE 00000a21: PUSH1 0x20 00000a23: DUP3 00000a24: ADD 00000a25: SWAP2 00000a26: POP 00000a27: PUSH1 0x20 00000a29: DUP2 00000a2a: ADD 00000a2b: SWAP1 00000a2c: POP 00000a2d: PUSH1 0x20 00000a2f: DUP4 00000a30: SUB 00000a31: SWAP3 00000a32: POP 00000a33: PUSH2 0x0a12 00000a36: JUMP 00000a37: JUMPDEST 00000a38: PUSH1 0x01 00000a3a: DUP4 00000a3b: PUSH1 0x20 00000a3d: SUB 00000a3e: PUSH2 0x0100 00000a41: EXP 00000a42: SUB 00000a43: DUP1 00000a44: NOT 00000a45: DUP3 00000a46: MLOAD 00000a47: AND 00000a48: DUP2 00000a49: DUP5 00000a4a: MLOAD 00000a4b: AND 00000a4c: DUP1 00000a4d: DUP3 00000a4e: OR 00000a4f: DUP6 00000a50: MSTORE 00000a51: POP 00000a52: POP 00000a53: POP 00000a54: POP 00000a55: POP 00000a56: POP 00000a57: SWAP1 00000a58: POP 00000a59: ADD 00000a5a: SWAP2 00000a5b: POP 00000a5c: POP 00000a5d: PUSH1 0x40 00000a5f: MLOAD 00000a60: DUP1 00000a61: SWAP2 00000a62: SUB 00000a63: SWAP1 00000a64: KECCAK256 00000a65: SWAP1 00000a66: POP 00000a67: DUP1 00000a68: SWAP3 00000a69: POP 00000a6a: POP 00000a6b: POP 00000a6c: SWAP5 00000a6d: SWAP4 00000a6e: POP 00000a6f: POP 00000a70: POP 00000a71: POP 00000a72: JUMP 00000a73: JUMPDEST 00000a74: PUSH1 0x00 00000a76: DUP1 00000a77: PUSH1 0x00 00000a79: DUP1 00000a7a: PUSH1 0x00 00000a7c: DUP7 00000a7d: MLOAD 00000a7e: DUP9 00000a7f: MLOAD 00000a80: EQ 00000a81: ISZERO 00000a82: DUP1 00000a83: PUSH2 0x0a8e 00000a86: JUMPI 00000a87: POP 00000a88: DUP6 00000a89: MLOAD 00000a8a: DUP9 00000a8b: MLOAD 00000a8c: EQ 00000a8d: ISZERO 00000a8e: JUMPDEST 00000a8f: DUP1 00000a90: PUSH2 0x0a9b 00000a93: JUMPI 00000a94: POP 00000a95: PUSH1 0x00 00000a97: SLOAD 00000a98: DUP9 00000a99: MLOAD 00000a9a: LT 00000a9b: JUMPDEST 00000a9c: ISZERO 00000a9d: PUSH2 0x0aa5 00000aa0: JUMPI 00000aa1: PUSH1 0x00 00000aa3: DUP1 00000aa4: REVERT 00000aa5: JUMPDEST 00000aa6: PUSH2 0x0105 00000aa9: PUSH1 0x00 00000aab: DUP11 00000aac: PUSH1 0x00 00000aae: NOT 00000aaf: AND 00000ab0: PUSH1 0x00 00000ab2: NOT 00000ab3: AND 00000ab4: DUP2 00000ab5: MSTORE 00000ab6: PUSH1 0x20 00000ab8: ADD 00000ab9: SWAP1 00000aba: DUP2 00000abb: MSTORE 00000abc: PUSH1 0x20 00000abe: ADD 00000abf: PUSH1 0x00 00000ac1: KECCAK256 00000ac2: PUSH1 0x00 00000ac4: SWAP1 00000ac5: SLOAD 00000ac6: SWAP1 00000ac7: PUSH2 0x0100 00000aca: EXP 00000acb: SWAP1 00000acc: DIV 00000acd: PUSH1 0xff 00000acf: AND 00000ad0: SWAP4 00000ad1: POP 00000ad2: PUSH1 0x00 00000ad4: ISZERO 00000ad5: ISZERO 00000ad6: DUP5 00000ad7: ISZERO 00000ad8: ISZERO 00000ad9: EQ 00000ada: ISZERO 00000adb: ISZERO 00000adc: PUSH2 0x0ae4 00000adf: JUMPI 00000ae0: PUSH1 0x00 00000ae2: DUP1 00000ae3: REVERT 00000ae4: JUMPDEST 00000ae5: PUSH1 0x00 00000ae7: SWAP3 00000ae8: POP 00000ae9: JUMPDEST 00000aea: DUP8 00000aeb: MLOAD 00000aec: DUP4 00000aed: LT 00000aee: ISZERO 00000aef: PUSH2 0x0c27 00000af2: JUMPI 00000af3: PUSH2 0x0b43 00000af6: DUP10 00000af7: DUP10 00000af8: DUP6 00000af9: DUP2 00000afa: MLOAD 00000afb: DUP2 00000afc: LT 00000afd: ISZERO 00000afe: ISZERO 00000aff: PUSH2 0x0b04 00000b02: JUMPI 00000b03: INVALID 00000b04: JUMPDEST 00000b05: SWAP1 00000b06: PUSH1 0x20 00000b08: ADD 00000b09: SWAP1 00000b0a: PUSH1 0x20 00000b0c: MUL 00000b0d: ADD 00000b0e: MLOAD 00000b0f: DUP10 00000b10: DUP7 00000b11: DUP2 00000b12: MLOAD 00000b13: DUP2 00000b14: LT 00000b15: ISZERO 00000b16: ISZERO 00000b17: PUSH2 0x0b1c 00000b1a: JUMPI 00000b1b: INVALID 00000b1c: JUMPDEST 00000b1d: SWAP1 00000b1e: PUSH1 0x20 00000b20: ADD 00000b21: SWAP1 00000b22: PUSH1 0x20 00000b24: MUL 00000b25: ADD 00000b26: MLOAD 00000b27: DUP10 00000b28: DUP8 00000b29: DUP2 00000b2a: MLOAD 00000b2b: DUP2 00000b2c: LT 00000b2d: ISZERO 00000b2e: ISZERO 00000b2f: PUSH2 0x0b34 00000b32: JUMPI 00000b33: INVALID 00000b34: JUMPDEST 00000b35: SWAP1 00000b36: PUSH1 0x20 00000b38: ADD 00000b39: SWAP1 00000b3a: PUSH1 0x20 00000b3c: MUL 00000b3d: ADD 00000b3e: MLOAD 00000b3f: PUSH2 0x0653 00000b42: JUMP 00000b43: JUMPDEST 00000b44: SWAP2 00000b45: POP 00000b46: PUSH1 0x01 00000b48: ISZERO 00000b49: ISZERO 00000b4a: PUSH2 0x0103 00000b4d: PUSH1 0x00 00000b4f: DUP5 00000b50: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b65: AND 00000b66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000b7b: AND 00000b7c: DUP2 00000b7d: MSTORE 00000b7e: PUSH1 0x20 00000b80: ADD 00000b81: SWAP1 00000b82: DUP2 00000b83: MSTORE 00000b84: PUSH1 0x20 00000b86: ADD 00000b87: PUSH1 0x00 00000b89: KECCAK256 00000b8a: PUSH1 0x00 00000b8c: SWAP1 00000b8d: SLOAD 00000b8e: SWAP1 00000b8f: PUSH2 0x0100 00000b92: EXP 00000b93: SWAP1 00000b94: DIV 00000b95: PUSH1 0xff 00000b97: AND 00000b98: ISZERO 00000b99: ISZERO 00000b9a: EQ 00000b9b: ISZERO 00000b9c: PUSH2 0x0ba4 00000b9f: JUMPI 00000ba0: PUSH1 0x00 00000ba2: DUP1 00000ba3: REVERT 00000ba4: JUMPDEST 00000ba5: PUSH1 0x01 00000ba7: PUSH2 0x0103 00000baa: PUSH1 0x00 00000bac: DUP5 00000bad: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bc2: AND 00000bc3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000bd8: AND 00000bd9: DUP2 00000bda: MSTORE 00000bdb: PUSH1 0x20 00000bdd: ADD 00000bde: SWAP1 00000bdf: DUP2 00000be0: MSTORE 00000be1: PUSH1 0x20 00000be3: ADD 00000be4: PUSH1 0x00 00000be6: KECCAK256 00000be7: PUSH1 0x00 00000be9: PUSH2 0x0100 00000bec: EXP 00000bed: DUP2 00000bee: SLOAD 00000bef: DUP2 00000bf0: PUSH1 0xff 00000bf2: MUL 00000bf3: NOT 00000bf4: AND 00000bf5: SWAP1 00000bf6: DUP4 00000bf7: ISZERO 00000bf8: ISZERO 00000bf9: MUL 00000bfa: OR 00000bfb: SWAP1 00000bfc: SSTORE 00000bfd: POP 00000bfe: PUSH2 0x0c06 00000c01: DUP3 00000c02: PUSH2 0x0865 00000c05: JUMP 00000c06: JUMPDEST 00000c07: SWAP1 00000c08: POP 00000c09: PUSH1 0x00 00000c0b: ISZERO 00000c0c: ISZERO 00000c0d: DUP2 00000c0e: ISZERO 00000c0f: ISZERO 00000c10: EQ 00000c11: ISZERO 00000c12: PUSH2 0x0c1a 00000c15: JUMPI 00000c16: PUSH1 0x00 00000c18: DUP1 00000c19: REVERT 00000c1a: JUMPDEST 00000c1b: DUP3 00000c1c: DUP1 00000c1d: PUSH1 0x01 00000c1f: ADD 00000c20: SWAP4 00000c21: POP 00000c22: POP 00000c23: PUSH2 0x0ae9 00000c26: JUMP 00000c27: JUMPDEST 00000c28: PUSH1 0x01 00000c2a: SWAP5 00000c2b: POP 00000c2c: POP 00000c2d: POP 00000c2e: POP 00000c2f: POP 00000c30: SWAP5 00000c31: SWAP4 00000c32: POP 00000c33: POP 00000c34: POP 00000c35: POP 00000c36: JUMP 00000c37: JUMPDEST 00000c38: PUSH1 0x00 00000c3a: DUP1 00000c3b: PUSH1 0x00 00000c3d: DUP1 00000c3e: PUSH1 0x00 00000c40: DUP1 00000c41: DUP10 00000c42: PUSH2 0x0c4a 00000c45: DUP2 00000c46: PUSH2 0x127c 00000c49: JUMP 00000c4a: JUMPDEST 00000c4b: ISZERO 00000c4c: ISZERO 00000c4d: PUSH2 0x0c55 00000c50: JUMPI 00000c51: PUSH1 0x00 00000c53: DUP1 00000c54: REVERT 00000c55: JUMPDEST 00000c56: PUSH1 0x00 00000c58: SWAP6 00000c59: POP 00000c5a: DUP8 00000c5b: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000c70: AND 00000c71: SWAP5 00000c72: POP 00000c73: PUSH1 0x00 00000c75: DUP6 00000c76: EQ 00000c77: ISZERO 00000c78: ISZERO 00000c79: PUSH2 0x0c81 00000c7c: JUMPI 00000c7d: PUSH1 0x01 00000c7f: SWAP6 00000c80: POP 00000c81: JUMPDEST 00000c82: PUSH1 0x00 00000c84: SWAP4 00000c85: POP 00000c86: JUMPDEST 00000c87: DUP10 00000c88: MLOAD 00000c89: DUP5 00000c8a: LT 00000c8b: ISZERO 00000c8c: PUSH2 0x1239 00000c8f: JUMPI 00000c90: PUSH1 0x00 00000c92: SWAP3 00000c93: POP 00000c94: DUP6 00000c95: ISZERO 00000c96: PUSH2 0x0eae 00000c99: JUMPI 00000c9a: PUSH1 0x40 00000c9c: MLOAD 00000c9d: DUP1 00000c9e: DUP1 00000c9f: PUSH32 0x7472616e7366657228616464726573732c75696e743235362900000000000000 00000cc0: DUP2 00000cc1: MSTORE 00000cc2: POP 00000cc3: PUSH1 0x19 00000cc5: ADD 00000cc6: SWAP1 00000cc7: POP 00000cc8: PUSH1 0x40 00000cca: MLOAD 00000ccb: DUP1 00000ccc: SWAP2 00000ccd: SUB 00000cce: SWAP1 00000ccf: KECCAK256 00000cd0: SWAP2 00000cd1: POP 00000cd2: DUP8 00000cd3: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000ce8: AND 00000ce9: DUP3 00000cea: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000d08: SWAP1 00000d09: DIV 00000d0a: DUP12 00000d0b: DUP7 00000d0c: DUP2 00000d0d: MLOAD 00000d0e: DUP2 00000d0f: LT 00000d10: ISZERO 00000d11: ISZERO 00000d12: PUSH2 0x0d17 00000d15: JUMPI 00000d16: INVALID 00000d17: JUMPDEST 00000d18: SWAP1 00000d19: PUSH1 0x20 00000d1b: ADD 00000d1c: SWAP1 00000d1d: PUSH1 0x20 00000d1f: MUL 00000d20: ADD 00000d21: MLOAD 00000d22: DUP12 00000d23: DUP8 00000d24: DUP2 00000d25: MLOAD 00000d26: DUP2 00000d27: LT 00000d28: ISZERO 00000d29: ISZERO 00000d2a: PUSH2 0x0d2f 00000d2d: JUMPI 00000d2e: INVALID 00000d2f: JUMPDEST 00000d30: SWAP1 00000d31: PUSH1 0x20 00000d33: ADD 00000d34: SWAP1 00000d35: PUSH1 0x20 00000d37: MUL 00000d38: ADD 00000d39: MLOAD 00000d3a: PUSH1 0x40 00000d3c: MLOAD 00000d3d: DUP4 00000d3e: PUSH4 0xffffffff 00000d43: AND 00000d44: PUSH29 0x0100000000000000000000000000000000000000000000000000000000 00000d62: MUL 00000d63: DUP2 00000d64: MSTORE 00000d65: PUSH1 0x04 00000d67: ADD 00000d68: DUP1 00000d69: DUP4 00000d6a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d7f: AND 00000d80: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000d95: AND 00000d96: DUP2 00000d97: MSTORE 00000d98: PUSH1 0x20 00000d9a: ADD 00000d9b: DUP3 00000d9c: DUP2 00000d9d: MSTORE 00000d9e: PUSH1 0x20 00000da0: ADD 00000da1: SWAP3 00000da2: POP 00000da3: POP 00000da4: POP 00000da5: PUSH1 0x00 00000da7: PUSH1 0x40 00000da9: MLOAD 00000daa: DUP1 00000dab: DUP4 00000dac: SUB 00000dad: DUP2 00000dae: PUSH1 0x00 00000db0: DUP8 00000db1: GAS 00000db2: CALL 00000db3: SWAP3 00000db4: POP 00000db5: POP 00000db6: POP 00000db7: SWAP3 00000db8: POP 00000db9: DUP3 00000dba: ISZERO 00000dbb: ISZERO 00000dbc: PUSH2 0x0dc4 00000dbf: JUMPI 00000dc0: PUSH1 0x00 00000dc2: DUP1 00000dc3: REVERT 00000dc4: JUMPDEST 00000dc5: PUSH32 0x0169d72b4638e9bc0f81e32c7cf97acd164b6d70e57234bc29346a946ae6ce1b 00000de6: DUP12 00000de7: DUP12 00000de8: DUP7 00000de9: DUP2 00000dea: MLOAD 00000deb: DUP2 00000dec: LT 00000ded: ISZERO 00000dee: ISZERO 00000def: PUSH2 0x0df4 00000df2: JUMPI 00000df3: INVALID 00000df4: JUMPDEST 00000df5: SWAP1 00000df6: PUSH1 0x20 00000df8: ADD 00000df9: SWAP1 00000dfa: PUSH1 0x20 00000dfc: MUL 00000dfd: ADD 00000dfe: MLOAD 00000dff: DUP12 00000e00: DUP8 00000e01: DUP2 00000e02: MLOAD 00000e03: DUP2 00000e04: LT 00000e05: ISZERO 00000e06: ISZERO 00000e07: PUSH2 0x0e0c 00000e0a: JUMPI 00000e0b: INVALID 00000e0c: JUMPDEST 00000e0d: SWAP1 00000e0e: PUSH1 0x20 00000e10: ADD 00000e11: SWAP1 00000e12: PUSH1 0x20 00000e14: MUL 00000e15: ADD 00000e16: MLOAD 00000e17: DUP12 00000e18: DUP9 00000e19: PUSH1 0x40 00000e1b: MLOAD 00000e1c: DUP1 00000e1d: DUP7 00000e1e: PUSH1 0x00 00000e20: NOT 00000e21: AND 00000e22: PUSH1 0x00 00000e24: NOT 00000e25: AND 00000e26: DUP2 00000e27: MSTORE 00000e28: PUSH1 0x20 00000e2a: ADD 00000e2b: DUP6 00000e2c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e41: AND 00000e42: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e57: AND 00000e58: DUP2 00000e59: MSTORE 00000e5a: PUSH1 0x20 00000e5c: ADD 00000e5d: DUP5 00000e5e: DUP2 00000e5f: MSTORE 00000e60: PUSH1 0x20 00000e62: ADD 00000e63: DUP4 00000e64: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e79: AND 00000e7a: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000e8f: AND 00000e90: DUP2 00000e91: MSTORE 00000e92: PUSH1 0x20 00000e94: ADD 00000e95: DUP3 00000e96: DUP2 00000e97: MSTORE 00000e98: PUSH1 0x20 00000e9a: ADD 00000e9b: SWAP6 00000e9c: POP 00000e9d: POP 00000e9e: POP 00000e9f: POP 00000ea0: POP 00000ea1: POP 00000ea2: PUSH1 0x40 00000ea4: MLOAD 00000ea5: DUP1 00000ea6: SWAP2 00000ea7: SUB 00000ea8: SWAP1 00000ea9: LOG1 00000eaa: PUSH2 0x122c 00000ead: JUMP 00000eae: JUMPDEST 00000eaf: PUSH1 0x00 00000eb1: DUP10 00000eb2: DUP6 00000eb3: DUP2 00000eb4: MLOAD 00000eb5: DUP2 00000eb6: LT 00000eb7: ISZERO 00000eb8: ISZERO 00000eb9: PUSH2 0x0ebe 00000ebc: JUMPI 00000ebd: INVALID 00000ebe: JUMPDEST 00000ebf: SWAP1 00000ec0: PUSH1 0x20 00000ec2: ADD 00000ec3: SWAP1 00000ec4: PUSH1 0x20 00000ec6: MUL 00000ec7: ADD 00000ec8: MLOAD 00000ec9: GT 00000eca: ISZERO 00000ecb: DUP1 00000ecc: PUSH2 0x0ef9 00000ecf: JUMPI 00000ed0: POP 00000ed1: PUSH1 0x12 00000ed3: PUSH1 0xff 00000ed5: AND 00000ed6: PUSH1 0x0a 00000ed8: EXP 00000ed9: PUSH5 0x02540be400 00000edf: MUL 00000ee0: DUP10 00000ee1: DUP6 00000ee2: DUP2 00000ee3: MLOAD 00000ee4: DUP2 00000ee5: LT 00000ee6: ISZERO 00000ee7: ISZERO 00000ee8: PUSH2 0x0eed 00000eeb: JUMPI 00000eec: INVALID 00000eed: JUMPDEST 00000eee: SWAP1 00000eef: PUSH1 0x20 00000ef1: ADD 00000ef2: SWAP1 00000ef3: PUSH1 0x20 00000ef5: MUL 00000ef6: ADD 00000ef7: MLOAD 00000ef8: GT 00000ef9: JUMPDEST 00000efa: ISZERO 00000efb: PUSH2 0x0fe8 00000efe: JUMPI 00000eff: PUSH32 0x02f9603e9005f6b7992543a30e8694c19e07aa1695feb1e26d1f34ae6c0f86a6 00000f20: DUP12 00000f21: DUP12 00000f22: DUP7 00000f23: DUP2 00000f24: MLOAD 00000f25: DUP2 00000f26: LT 00000f27: ISZERO 00000f28: ISZERO 00000f29: PUSH2 0x0f2e 00000f2c: JUMPI 00000f2d: INVALID 00000f2e: JUMPDEST 00000f2f: SWAP1 00000f30: PUSH1 0x20 00000f32: ADD 00000f33: SWAP1 00000f34: PUSH1 0x20 00000f36: MUL 00000f37: ADD 00000f38: MLOAD 00000f39: DUP12 00000f3a: DUP8 00000f3b: DUP2 00000f3c: MLOAD 00000f3d: DUP2 00000f3e: LT 00000f3f: ISZERO 00000f40: ISZERO 00000f41: PUSH2 0x0f46 00000f44: JUMPI 00000f45: INVALID 00000f46: JUMPDEST 00000f47: SWAP1 00000f48: PUSH1 0x20 00000f4a: ADD 00000f4b: SWAP1 00000f4c: PUSH1 0x20 00000f4e: MUL 00000f4f: ADD 00000f50: MLOAD 00000f51: DUP12 00000f52: DUP9 00000f53: PUSH1 0x40 00000f55: MLOAD 00000f56: DUP1 00000f57: DUP7 00000f58: PUSH1 0x00 00000f5a: NOT 00000f5b: AND 00000f5c: PUSH1 0x00 00000f5e: NOT 00000f5f: AND 00000f60: DUP2 00000f61: MSTORE 00000f62: PUSH1 0x20 00000f64: ADD 00000f65: DUP6 00000f66: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f7b: AND 00000f7c: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000f91: AND 00000f92: DUP2 00000f93: MSTORE 00000f94: PUSH1 0x20 00000f96: ADD 00000f97: DUP5 00000f98: DUP2 00000f99: MSTORE 00000f9a: PUSH1 0x20 00000f9c: ADD 00000f9d: DUP4 00000f9e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fb3: AND 00000fb4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00000fc9: AND 00000fca: DUP2 00000fcb: MSTORE 00000fcc: PUSH1 0x20 00000fce: ADD 00000fcf: DUP3 00000fd0: DUP2 00000fd1: MSTORE 00000fd2: PUSH1 0x20 00000fd4: ADD 00000fd5: SWAP6 00000fd6: POP 00000fd7: POP 00000fd8: POP 00000fd9: POP 00000fda: POP 00000fdb: POP 00000fdc: PUSH1 0x40 00000fde: MLOAD 00000fdf: DUP1 00000fe0: SWAP2 00000fe1: SUB 00000fe2: SWAP1 00000fe3: LOG1 00000fe4: PUSH2 0x122b 00000fe7: JUMP 00000fe8: JUMPDEST 00000fe9: DUP10 00000fea: DUP5 00000feb: DUP2 00000fec: MLOAD 00000fed: DUP2 00000fee: LT 00000fef: ISZERO 00000ff0: ISZERO 00000ff1: PUSH2 0x0ff6 00000ff4: JUMPI 00000ff5: INVALID 00000ff6: JUMPDEST 00000ff7: SWAP1 00000ff8: PUSH1 0x20 00000ffa: ADD 00000ffb: SWAP1 00000ffc: PUSH1 0x20 00000ffe: MUL 00000fff: ADD 00001000: MLOAD 00001001: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001016: AND 00001017: PUSH2 0x08fc 0000101a: DUP11 0000101b: DUP7 0000101c: DUP2 0000101d: MLOAD 0000101e: DUP2 0000101f: LT 00001020: ISZERO 00001021: ISZERO 00001022: PUSH2 0x1027 00001025: JUMPI 00001026: INVALID 00001027: JUMPDEST 00001028: SWAP1 00001029: PUSH1 0x20 0000102b: ADD 0000102c: SWAP1 0000102d: PUSH1 0x20 0000102f: MUL 00001030: ADD 00001031: MLOAD 00001032: SWAP1 00001033: DUP2 00001034: ISZERO 00001035: MUL 00001036: SWAP1 00001037: PUSH1 0x40 00001039: MLOAD 0000103a: PUSH1 0x00 0000103c: PUSH1 0x40 0000103e: MLOAD 0000103f: DUP1 00001040: DUP4 00001041: SUB 00001042: DUP2 00001043: DUP6 00001044: DUP9 00001045: DUP9 00001046: CALL 00001047: SWAP4 00001048: POP 00001049: POP 0000104a: POP 0000104b: POP 0000104c: SWAP3 0000104d: POP 0000104e: PUSH1 0x00 00001050: ISZERO 00001051: ISZERO 00001052: DUP4 00001053: ISZERO 00001054: ISZERO 00001055: EQ 00001056: ISZERO 00001057: PUSH2 0x1144 0000105a: JUMPI 0000105b: PUSH32 0x02f9603e9005f6b7992543a30e8694c19e07aa1695feb1e26d1f34ae6c0f86a6 0000107c: DUP12 0000107d: DUP12 0000107e: DUP7 0000107f: DUP2 00001080: MLOAD 00001081: DUP2 00001082: LT 00001083: ISZERO 00001084: ISZERO 00001085: PUSH2 0x108a 00001088: JUMPI 00001089: INVALID 0000108a: JUMPDEST 0000108b: SWAP1 0000108c: PUSH1 0x20 0000108e: ADD 0000108f: SWAP1 00001090: PUSH1 0x20 00001092: MUL 00001093: ADD 00001094: MLOAD 00001095: DUP12 00001096: DUP8 00001097: DUP2 00001098: MLOAD 00001099: DUP2 0000109a: LT 0000109b: ISZERO 0000109c: ISZERO 0000109d: PUSH2 0x10a2 000010a0: JUMPI 000010a1: INVALID 000010a2: JUMPDEST 000010a3: SWAP1 000010a4: PUSH1 0x20 000010a6: ADD 000010a7: SWAP1 000010a8: PUSH1 0x20 000010aa: MUL 000010ab: ADD 000010ac: MLOAD 000010ad: DUP12 000010ae: DUP9 000010af: PUSH1 0x40 000010b1: MLOAD 000010b2: DUP1 000010b3: DUP7 000010b4: PUSH1 0x00 000010b6: NOT 000010b7: AND 000010b8: PUSH1 0x00 000010ba: NOT 000010bb: AND 000010bc: DUP2 000010bd: MSTORE 000010be: PUSH1 0x20 000010c0: ADD 000010c1: DUP6 000010c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010d7: AND 000010d8: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000010ed: AND 000010ee: DUP2 000010ef: MSTORE 000010f0: PUSH1 0x20 000010f2: ADD 000010f3: DUP5 000010f4: DUP2 000010f5: MSTORE 000010f6: PUSH1 0x20 000010f8: ADD 000010f9: DUP4 000010fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000110f: AND 00001110: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001125: AND 00001126: DUP2 00001127: MSTORE 00001128: PUSH1 0x20 0000112a: ADD 0000112b: DUP3 0000112c: DUP2 0000112d: MSTORE 0000112e: PUSH1 0x20 00001130: ADD 00001131: SWAP6 00001132: POP 00001133: POP 00001134: POP 00001135: POP 00001136: POP 00001137: POP 00001138: PUSH1 0x40 0000113a: MLOAD 0000113b: DUP1 0000113c: SWAP2 0000113d: SUB 0000113e: SWAP1 0000113f: LOG1 00001140: PUSH2 0x122a 00001143: JUMP 00001144: JUMPDEST 00001145: PUSH32 0x0169d72b4638e9bc0f81e32c7cf97acd164b6d70e57234bc29346a946ae6ce1b 00001166: DUP12 00001167: DUP12 00001168: DUP7 00001169: DUP2 0000116a: MLOAD 0000116b: DUP2 0000116c: LT 0000116d: ISZERO 0000116e: ISZERO 0000116f: PUSH2 0x1174 00001172: JUMPI 00001173: INVALID 00001174: JUMPDEST 00001175: SWAP1 00001176: PUSH1 0x20 00001178: ADD 00001179: SWAP1 0000117a: PUSH1 0x20 0000117c: MUL 0000117d: ADD 0000117e: MLOAD 0000117f: DUP12 00001180: DUP8 00001181: DUP2 00001182: MLOAD 00001183: DUP2 00001184: LT 00001185: ISZERO 00001186: ISZERO 00001187: PUSH2 0x118c 0000118a: JUMPI 0000118b: INVALID 0000118c: JUMPDEST 0000118d: SWAP1 0000118e: PUSH1 0x20 00001190: ADD 00001191: SWAP1 00001192: PUSH1 0x20 00001194: MUL 00001195: ADD 00001196: MLOAD 00001197: DUP12 00001198: DUP9 00001199: PUSH1 0x40 0000119b: MLOAD 0000119c: DUP1 0000119d: DUP7 0000119e: PUSH1 0x00 000011a0: NOT 000011a1: AND 000011a2: PUSH1 0x00 000011a4: NOT 000011a5: AND 000011a6: DUP2 000011a7: MSTORE 000011a8: PUSH1 0x20 000011aa: ADD 000011ab: DUP6 000011ac: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011c1: AND 000011c2: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011d7: AND 000011d8: DUP2 000011d9: MSTORE 000011da: PUSH1 0x20 000011dc: ADD 000011dd: DUP5 000011de: DUP2 000011df: MSTORE 000011e0: PUSH1 0x20 000011e2: ADD 000011e3: DUP4 000011e4: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 000011f9: AND 000011fa: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000120f: AND 00001210: DUP2 00001211: MSTORE 00001212: PUSH1 0x20 00001214: ADD 00001215: DUP3 00001216: DUP2 00001217: MSTORE 00001218: PUSH1 0x20 0000121a: ADD 0000121b: SWAP6 0000121c: POP 0000121d: POP 0000121e: POP 0000121f: POP 00001220: POP 00001221: POP 00001222: PUSH1 0x40 00001224: MLOAD 00001225: DUP1 00001226: SWAP2 00001227: SUB 00001228: SWAP1 00001229: LOG1 0000122a: JUMPDEST 0000122b: JUMPDEST 0000122c: JUMPDEST 0000122d: DUP4 0000122e: DUP1 0000122f: PUSH1 0x01 00001231: ADD 00001232: SWAP5 00001233: POP 00001234: POP 00001235: PUSH2 0x0c86 00001238: JUMP 00001239: JUMPDEST 0000123a: PUSH1 0x01 0000123c: PUSH2 0x0105 0000123f: PUSH1 0x00 00001241: DUP14 00001242: PUSH1 0x00 00001244: NOT 00001245: AND 00001246: PUSH1 0x00 00001248: NOT 00001249: AND 0000124a: DUP2 0000124b: MSTORE 0000124c: PUSH1 0x20 0000124e: ADD 0000124f: SWAP1 00001250: DUP2 00001251: MSTORE 00001252: PUSH1 0x20 00001254: ADD 00001255: PUSH1 0x00 00001257: KECCAK256 00001258: PUSH1 0x00 0000125a: PUSH2 0x0100 0000125d: EXP 0000125e: DUP2 0000125f: SLOAD 00001260: DUP2 00001261: PUSH1 0xff 00001263: MUL 00001264: NOT 00001265: AND 00001266: SWAP1 00001267: DUP4 00001268: ISZERO 00001269: ISZERO 0000126a: MUL 0000126b: OR 0000126c: SWAP1 0000126d: SSTORE 0000126e: POP 0000126f: POP 00001270: POP 00001271: POP 00001272: POP 00001273: POP 00001274: POP 00001275: SWAP5 00001276: SWAP4 00001277: POP 00001278: POP 00001279: POP 0000127a: POP 0000127b: JUMP 0000127c: JUMPDEST 0000127d: PUSH1 0x00 0000127f: DUP1 00001280: PUSH1 0x00 00001282: DUP1 00001283: PUSH2 0x0102 00001286: PUSH1 0x00 00001288: CALLER 00001289: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000129e: AND 0000129f: DUP2 000012a0: MSTORE 000012a1: PUSH1 0x20 000012a3: ADD 000012a4: SWAP1 000012a5: DUP2 000012a6: MSTORE 000012a7: PUSH1 0x20 000012a9: ADD 000012aa: PUSH1 0x00 000012ac: KECCAK256 000012ad: SLOAD 000012ae: SWAP3 000012af: POP 000012b0: PUSH1 0x00 000012b2: DUP4 000012b3: EQ 000012b4: ISZERO 000012b5: PUSH2 0x12c1 000012b8: JUMPI 000012b9: PUSH1 0x00 000012bb: SWAP4 000012bc: POP 000012bd: PUSH2 0x1389 000012c0: JUMP 000012c1: JUMPDEST 000012c2: PUSH2 0x0105 000012c5: PUSH1 0x00 000012c7: DUP7 000012c8: PUSH1 0x00 000012ca: NOT 000012cb: AND 000012cc: PUSH1 0x00 000012ce: NOT 000012cf: AND 000012d0: DUP2 000012d1: MSTORE 000012d2: PUSH1 0x20 000012d4: ADD 000012d5: SWAP1 000012d6: DUP2 000012d7: MSTORE 000012d8: PUSH1 0x20 000012da: ADD 000012db: PUSH1 0x00 000012dd: KECCAK256 000012de: PUSH1 0x00 000012e0: SWAP1 000012e1: SLOAD 000012e2: SWAP1 000012e3: PUSH2 0x0100 000012e6: EXP 000012e7: SWAP1 000012e8: DIV 000012e9: PUSH1 0xff 000012eb: AND 000012ec: SWAP2 000012ed: POP 000012ee: PUSH1 0x00 000012f0: ISZERO 000012f1: ISZERO 000012f2: DUP3 000012f3: ISZERO 000012f4: ISZERO 000012f5: EQ 000012f6: ISZERO 000012f7: ISZERO 000012f8: PUSH2 0x1304 000012fb: JUMPI 000012fc: PUSH1 0x00 000012fe: SWAP4 000012ff: POP 00001300: PUSH2 0x1389 00001303: JUMP 00001304: JUMPDEST 00001305: PUSH1 0x00 00001307: SWAP1 00001308: POP 00001309: JUMPDEST 0000130a: PUSH1 0x01 0000130c: SLOAD 0000130d: DUP2 0000130e: LT 0000130f: ISZERO 00001310: PUSH2 0x1384 00001313: JUMPI 00001314: PUSH2 0x0103 00001317: PUSH1 0x00 00001319: PUSH1 0x02 0000131b: PUSH1 0x01 0000131d: DUP5 0000131e: ADD 0000131f: PUSH2 0x0100 00001322: DUP2 00001323: LT 00001324: ISZERO 00001325: ISZERO 00001326: PUSH2 0x132b 00001329: JUMPI 0000132a: INVALID 0000132b: JUMPDEST 0000132c: ADD 0000132d: SLOAD 0000132e: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001343: AND 00001344: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001359: AND 0000135a: DUP2 0000135b: MSTORE 0000135c: PUSH1 0x20 0000135e: ADD 0000135f: SWAP1 00001360: DUP2 00001361: MSTORE 00001362: PUSH1 0x20 00001364: ADD 00001365: PUSH1 0x00 00001367: KECCAK256 00001368: PUSH1 0x00 0000136a: PUSH2 0x0100 0000136d: EXP 0000136e: DUP2 0000136f: SLOAD 00001370: SWAP1 00001371: PUSH1 0xff 00001373: MUL 00001374: NOT 00001375: AND 00001376: SWAP1 00001377: SSTORE 00001378: DUP1 00001379: DUP1 0000137a: PUSH1 0x01 0000137c: ADD 0000137d: SWAP2 0000137e: POP 0000137f: POP 00001380: PUSH2 0x1309 00001383: JUMP 00001384: JUMPDEST 00001385: PUSH1 0x01 00001387: SWAP4 00001388: POP 00001389: JUMPDEST 0000138a: POP 0000138b: POP 0000138c: POP 0000138d: SWAP2 0000138e: SWAP1 0000138f: POP 00001390: JUMP 00001391: STOP 00001392: LOG1 00001393: PUSH6 0x627a7a723058 0000139a: KECCAK256 0000139b: RETURNDATASIZE 0000139c: UNKNOWN(0x25) 0000139d: UNKNOWN(0xF8) 0000139e: BLOBBASEFEE 0000139f: UNKNOWN(0xB7) 000013a0: GASLIMIT 000013a1: PUSH26 0x79afb11a847fcf6c567f2b76963c516e811e2694e731a087a500 000013bc: UNKNOWN(0x29)
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb
call_targets:
0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4123cb6b",
"selector": "0x4123cb6b",
"calldata_variants": [
"0x4123cb6b",
"0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x472d71d1",
"selector": "0x472d71d1",
"calldata_variants": [
"0x472d71d1",
"0x472d71d10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x746c9171",
"selector": "0x746c9171",
"calldata_variants": [
"0x746c9171",
"0x746c91710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86435354",
"selector": "0x86435354",
"calldata_variants": [
"0x86435354",
"0x864353540000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x88671ad4",
"selector": "0x88671ad4",
"calldata_variants": [
"0x88671ad4",
"0x88671ad40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xaaf5eb68",
"selector": "0xaaf5eb68",
"calldata_variants": [
"0xaaf5eb68",
"0xaaf5eb680000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1572,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3506,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4166,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 3,
"guards_detected": [],
"untrusted_call_count": 3
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb
call_targets:
0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x300928c26759787266b24b577f3493c49413cb08740d81bd009136e52415d2bb",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xfdffb38544dc145795e9ea2b82fc3dcb3c72e59c"
],
"matched_probe": null,
"target_varies": false,
"classification": "constant_target"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xffffffff",
"selector": "0xffffffff",
"calldata_variants": [
"0xffffffff",
"0xffffffff0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x313ce567",
"selector": "0x313ce567",
"calldata_variants": [
"0x313ce567",
"0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x4123cb6b",
"selector": "0x4123cb6b",
"calldata_variants": [
"0x4123cb6b",
"0x4123cb6b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x472d71d1",
"selector": "0x472d71d1",
"calldata_variants": [
"0x472d71d1",
"0x472d71d10000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x746c9171",
"selector": "0x746c9171",
"calldata_variants": [
"0x746c9171",
"0x746c91710000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x86435354",
"selector": "0x86435354",
"calldata_variants": [
"0x86435354",
"0x864353540000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x88671ad4",
"selector": "0x88671ad4",
"calldata_variants": [
"0x88671ad4",
"0x88671ad40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xaaf5eb68",
"selector": "0xaaf5eb68",
"calldata_variants": [
"0xaaf5eb68",
"0xaaf5eb680000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 1572,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 3506,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4166,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 3,
"guards_detected": []
}
|
| medium | access_control | codex | Low-level CALLs with computed target/value lack visible authorization | 75 | no | — |
viewevidence_json{
"evidence": "Detector finding \"Untrusted CALL target/value reachable\" reports 3 CALL sites with target_expression_category/value_expression_category = computed and guards_detected = []. Validation is inconclusive (constant_target reported but not confirmed).",
"locations": [
"pc:0x624",
"pc:0xdb2",
"pc:0x1046"
],
"recommendation": "Confirm that every path to the CALLs is protected by strong authorization (owner/multisig/signature validation). If arbitrary calls are intended, enforce strict allowlists or limit targets/values and document the trust model.",
"exploit_scenario": "If any externally callable selector can reach these CALLs and the target/value are derived from calldata or mutable storage without a strict authorization check (signature/owner/multisig), an attacker could force the contract to call arbitrary addresses or send ETH on their behalf. Guard detection is heuristic and signature checks may exist, so this is a risk to confirm rather than a proven bypass."
}
|
| low | reentrancy | codex | External CALLs combined with storage writes; no reentrancy guard detected | 65 | no | — |
viewevidence_json{
"evidence": "CALL sites at pc 0x624/0xdb2/0x1046 and SSTORE blocks at pc 0x0ba4/0x1239/0x132b are present; auth.guards is empty for all selectors in the artifact.",
"locations": [
"pc:0x624",
"pc:0xdb2",
"pc:0x1046",
"pc:0x0ba4",
"pc:0x1239",
"pc:0x132b"
],
"recommendation": "Apply checks-effects-interactions, update state before external calls, or add a reentrancy guard around functions that can reach the CALL sites.",
"exploit_scenario": "If any code path updates storage after one of the external CALLs, a malicious callee could reenter and manipulate state (e.g., repeat payouts or bypass accounting) before the update occurs. The analysis only shows that CALLs and SSTOREs both exist in the bytecode and no guard was detected, so the exact ordering is uncertain."
}
|
| low | other | codex | Low-level token transfer call does not appear to validate return data | 65 | no | — |
viewevidence_json{
"evidence": "CALL sites show returndata_checked = null; runtime bytecode includes the literal string \"transfer(address,uint256)\", indicating token transfer data is assembled and sent via CALL without explicit return-data validation shown in the analysis.",
"locations": [
"pc:0xdb2",
"pc:0x1046"
],
"recommendation": "Use SafeERC20-style handling: accept either no return data or a decoded `true` boolean; otherwise revert.",
"exploit_scenario": "If the contract performs ERC20 `transfer` via low-level CALL and only checks the CALL success flag, a token that returns `false` (or no data) can cause silent failures while the contract continues as if the transfer succeeded, leading to accounting mismatches."
}
|